{"version":3,"file":"static/js/main.a7d99b05.js","mappings":"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,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,KAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,eAAM,eAAM,uBAE5B,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,eAAM,iBAEtB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,6BAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,iBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,6BAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,6BAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,6BAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,6BAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,6BAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UAAa,CAAC,uBAEhB,CACE,QAAW,MACX,OAAU,qBACV,UA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fX,IACE,CACEyF,MAAO,2BACPzF,MAAO,aAET,CACEyF,MAAO,iCACPzF,MAAO,kBAET,CACEyF,MAAO,qBACPzF,MAAO,aCXX,IACE,CACEyF,MAAO,6CACPzF,MAAO,iBAET,CACEyF,MAAO,uCACPzF,MAAO,mBAET,CACEyF,MAAO,mDACPzF,MAAO,oBAET,CACEyF,MAAO,yCACPzF,MAAO,iBAET,CACEyF,MAAO,sCACPzF,MAAO,cAET,CACEyF,MAAO,0CACPzF,MAAO,kBAET,CACEyF,MAAO,yDACPzF,MAAO,oBAET,CACEyF,MAAO,6EACPzF,MAAO,yBAET,CACEyF,MAAO,2BACPzF,MAAO,gBAET,CACEyF,MAAO,uEACPzF,MAAO,gBAET,CACEyF,MAAO,iEACPzF,MAAO,qBAET,CACEyF,MAAO,6CACPzF,MAAO,uBAET,CACEyF,MAAO,mDACPzF,MAAO,iBAET,CACEyF,MAAO,+DACPzF,MAAO,aCvDX,IACE,CACEyF,MAAO,OACPzF,MAAO,QAET,CACEyF,MAAO,UACPzF,MAAO,WAET,CACEyF,MAAO,SACPzF,MAAO,SAET,CACEyF,MAAO,WACPzF,MAAO,YAET,CACEyF,MAAO,qCACPzF,MAAO,wB,mCCnBX,KACE,CACEyF,MAAO,2BACPzF,MAAO,SAET,CACEyF,MAAO,mDACPzF,MAAO,SAET,CACEyF,MAAO,2BACPzF,MAAO,QAET,CACEyF,MAAO,iCACPzF,MAAO,YAET,CACEyF,MAAO,iCACPzF,MAAO,Y","sources":["CacheProvider.js","aws-exports.js","components/Auth/CustomAuthDialog.js","components/Auth/CustomAuthenticator.js","components/Auth/helpers.js","components/Card/ClientCard.js","components/Card/DeliveryStaffCard.js","components/Card/ElderCard.js","components/Card/InfoCard.js","components/Card/RestaurantCard.js","components/Card/RestaurantOwnerCard.js","components/CustomTimeline.js","components/DataJoinEditor/Chip.js","components/DataJoinEditor/TagChip.js","components/DataJoinEditor/helpers.js","components/DataJoinEditor/DataJoinEditorInput.js","components/Date/MealDateSelector.js","components/DeliveryGroup/boardTranslation.js","components/DeliveryStaffOrderPhoto.js","components/FormDialog.js","components/ImageGalleryUploader.js","components/ImagePreviewAvatar.js","components/LinearProgressWithLabel.js","components/Loading.js","components/Map/Directions.js","components/Map/Place.js","components/Order/OrderCard.js","components/Order/DeliveryStaffOrderCard.js","components/Order/MealItems.js","components/Order/OrderDetails.js","components/Order/DeliveryStaffOrdersCard.js","components/Order/Order.js","components/Order/OrderDialog.js","components/Order/OrderEventCard.js","components/Order/OrderStatusProgress.js","components/Order/ResetCancelledOrderButton.js","components/Order/DeliveryStaffSelect.js","components/Order/UpdateOrderDeliveryStaffButton.js","components/Order/LinkGroupElderSelect.js","components/Order/UpdateOrderLinkGroupEldersButton.js","components/Order/RestaurantMealSelect.js","components/Order/UpdateOrderRestaurantButton.js","components/Order/UpdateOrderTimeButton.js","components/Order/UpdateOrderToCancelledButton.js","components/Order/UpdateOrderToCompletedButton.js","components/OrderStatusChip.js","components/Order/PlaceLalamoveMultiStopButton.js","components/OrderTable.js","components/PandagoOrderStatusChip.js","components/PandagoOrderLogTable.js","components/PandagoOrderTable.js","components/Payment/LinePayButton.js","components/Payment/NewebPayButton.js","components/ProcessStatusChip.js","components/QueryGenerator.jsx","forms/AdminRecurringOrderForm/AdminRecurringOrderForm.uiSchema.js","forms/AdminRecurringOrderForm/queries.js","forms/AdminRecurringOrderForm/helpers.js","forms/AdminRecurringOrderForm/AdminRecurringOrderForm.js","forms/AdminRecurringOrderForm/AdminRecurringOrderEditButton.js","forms/AdminRecurringOrderForm/AdminRecurringOrderButtonFunc.js","forms/AdminRecurringOrderForm/AdminRecurringOrderPreviewTable.js","forms/AdminRecurringOrderForm/AdminRecurringOrderPreviewButton.js","forms/AdminRecurringOrderForm/AdminRecurringOrderPreviewFunc.js","components/RecurringOrderTable.js","components/RestaurantDetails.js","components/Tab/TabPanel.js","components/Tab/VerticalTabs.js","components/Table/DataTable.js","components/Table/LinkButton.js","components/Table/NestedTableContainer.js","components/Table/Footer.js","components/Table/Table.js","components/TagChip.js","components/Terms.js","components/UberOrderStatusChip.js","components/UberOrderLogTable.js","components/UberOrderTable.js","components/UserAvatar.js","credentials.js","forms/AdminBulkOrderForm/AutoSelect.js","forms/AdminBulkOrderForm/helpers.js","forms/AdminBulkOrderForm/queries.js","forms/AdminOrderForm/AdminUpdateOrderForm.uiSchema.js","forms/AdminOrderForm/AdminUpdateOrderForm.js","forms/AdminBulkOrderForm/OrderItem.js","forms/AdminBulkOrderForm/OrderBatchForm.js","forms/AdminBulkOrderForm/AdminCreateBulkOrderForm.js","forms/AdminOrderForm/AdminOrderEditButton.js","forms/AdminOrderForm/AdminUpdateOrderForm.schema.js","forms/AdminRecurringOrderForm/AdminRecurringOrderForm.schema.js","forms/SubmitButton.js","forms/uiSchema.js","forms/components/AddButton.js","forms/components/IconButton.js","forms/components/ArrayTemplate.js","forms/components/ObjectFieldTemplate.js","forms/components/WrapIfAdditional.js","forms/components/FieldTemplate.js","forms/components/SelectWidget.js","forms/components/TimeWidget.js","forms/DataForm.js","forms/DeliverStaffForm/DeliverStaffEditButton.js","forms/DeliverStaffForm/DeliverStaffForm.js","forms/DementiaQuestionnaireForm/schema.js","forms/ElderForm/uiSchema.js","forms/ElderForm/changeClientId.js","forms/ElderForm/queries.js","forms/ElderForm/ElderGallery.js","forms/ElderForm/ElderForm.js","forms/ElderForm/ElderEditButton.js","forms/ElderForm/schema.js","forms/ElderFormForm/schema.js","forms/RestaurantSelection.js","forms/DeliveryStaffSelection.js","forms/FacilityClientForm/FacilityClientForm.js","forms/FacilityClientForm/FacilityClientEditButton.js","forms/FacilityClientForm/schema.js","forms/FacilitySettingsForm/FacilitySettingsForm.js","forms/FacilitySettingsForm/schema.js","forms/IndividualClientForm/IndividualClientForm.js","forms/IndividualClientForm/IndividualClientEditButton.js","forms/IndividualClientForm/schema.js","forms/OrganizationForm/schema.js","forms/RestaurantForm/uiSchema.js","forms/AreaSelection.js","forms/RestaurantForm/RestaurantForm.js","forms/RestaurantForm/RestaurantEditButton.js","forms/RestaurantForm/schema.js","forms/RestaurantOwnerForm/RestaurantOwnerForm.js","forms/RestaurantOwnerForm/RestaurantOwnerEditButton.js","forms/SurchargesForm/schema.js","forms/components/AutoSelectWidget.js","forms/components/CheckboxesWithSelectAll.js","forms/components/EditButton.js","forms/formCache.js","forms/schemas.js","graphql/mutations.js","graphql/queries.js","i18n/Amplify.js","i18n/i18n.js","global.js","App.js","serviceWorker.js","components/Version.js","hooks/useCustomAuth.js","components/CustomAppBar.js","components/IndividualClientAppBar.js","components/Winbox/Winbox.js","App.reducer.js","Footer.js","components/Auth/UserGroupSelector.js","components/Reset.js","components/Order/PublicOrderCard.js","components/Order/PublicDeliveryStaffOrderCard.js","components/Order/PublicOrder.js","utilities/address.js","views/Public/Menu2/Location/Location.js","components/AutoSizeDialog.js","views/Public/Menu2/components/OpeningHoursDialog.js","views/Public/Menu2/Cart/MealItem.js","views/Public/Menu2/Cart/AddressInput.js","views/Public/Menu2/Cart/AddressDialog.js","views/Public/Menu2/Cart/ReceiverInput.js","views/Public/Menu2/Cart/ReceiverDialog.js","views/Public/Menu2/Cart/InvoiceInput.js","views/Public/Menu2/Cart/InvoiceDialog.js","views/Public/Menu2/Cart/PaymentInput.js","views/Public/Menu2/Cart/PaymentDialog.js","views/Public/Menu2/Cart/OrderDetail.js","views/Public/Menu2/Cart/CompleteOrderDialog.js","views/Public/Menu2/Cart/Cart.js","views/Public/Menu2/Order/queries.js","views/Public/Menu2/Order/OrderCard.js","views/Public/Menu2/Order/OrderDetail.js","views/Public/Menu2/Order/TransactionDetailDialog.js","views/Public/Menu2/Order/Order.js","views/Public/Menu2/Diary/DeliveryStaffOrderDiaryCard.js","views/Public/Menu2/Diary/queries.js","views/Public/Menu2/Diary/Diary.js","views/Public/Menu2/Member/InformationDialog.js","views/Public/Menu2/Member/Member.js","views/Public/Menu2/AddressDateTimeSettings/AddressSettings.js","views/Public/Menu2/AddressDateTimeSettings/DateSettings.js","views/Public/Menu2/AddressDateTimeSettings/TimeSettings.js","views/Public/Menu2/AddressDateTimeSettings/AddressDateTimeSettingsDialog.js","views/Public/Menu2/AddressDateTimeSettings/Settings.js","views/Public/Menu2/RestaurantMealList/MealItemDialog.js","views/Public/Menu2/RestaurantMealList/RestaurantMeals.js","views/Public/Menu2/RestaurantMealList/RestaurantMealList.js","views/Public/Menu2/Menu.js","views/Public/Menu2/RestaurantMealList/queries.js","index.js","components/ProtectedRoute.js","forms/UserForm/schema.js","forms/UserForm/UserForm.js","forms/UserForm/UserFormEditButton.js","utilities/cognito.js","components/CognitoUsersTable.js","views/Admin/AppUsers/AppUsers.js","views/FacilityAdmin/components/Forms/utils.js","views/FacilityAdmin/components/Forms/InteractivePdfViewer.js","views/FacilityAdmin/components/Forms/PdfViewer.js","utilities/file.js","forms/ElderFormForm/uiSchema.js","views/FacilityAdmin/components/Forms/FileUploader.js","forms/ElderFormForm/ElderFormUploader.js","forms/ElderFormForm/ElderFormFormEditButton.js","components/ElderFormTable.js","views/Admin/DeliveryDiary/IssueTimeline.js","views/Admin/DeliveryDiary/Issue.js","forms/SocialWorkerDiaryForm/SocialWorkerDiaryEditButton.js","components/SocialWorkerDiaryTable.js","views/Admin/DeliveryDiary/queries.js","views/Admin/DeliveryDiary/DeliveryStaffOrderDiaryCardDialog.js","views/Admin/DeliveryDiary/DeliveryStaffOrderIssueDialog.js","views/Admin/DeliveryDiary/DeliveryStaffOrderDiaryCard.js","views/Admin/DeliveryDiary/DeliveryDiary.js","components/Schedule/helpers.js","components/Schedule/ScheduleCalendar.js","views/Admin/Schedule/Schedule.js","components/ElderDetails.js","components/ElderTable.js","components/ImageAvatar.js","components/DeliveryStaffDocumentTable.js","components/DeliveryStaffContract.js","views/FacilityAdmin/components/DeliveryStaffDetails.js","views/FacilityAdmin/components/DeliveryStaffTable.js","components/UserTable.js","components/Map/Marker.js","components/DeliveryGroup/CustomLaneHeader.js","components/DeliveryGroup/customLaneMenu.js","components/DeliveryGroup/CustomDeliveryGroupLaneHeader.js","components/DeliveryGroup/ElderDeliveryGroupBoard.js","components/DeliveryGroup/queries.js","forms/SponsorshipForm/schema.js","forms/SponsorshipForm/SponsorshipForm.js","forms/SponsorshipForm/SponsorshipEditButton.js","components/SponsorshipFulfillmentTable.js","components/SponsorshipTable.js","components/NotificationTable.js","components/RestaurantTable.js","forms/MembershipForm/schema.js","forms/MembershipForm/MembershipForm.js","forms/MembershipForm/MembershipFormEditButton.js","components/CustomStatusChip.js","components/MembershipTable.js","components/DateRangeSelector.js","views/FacilityAdmin/Dashboard/components/SummaryCard.js","views/FacilityAdmin/Dashboard/components/PieCard.js","views/FacilityAdmin/Dashboard/components/BarCard.js","views/FacilityAdmin/Dashboard/components/LineCard.js","views/FacilityAdmin/Dashboard/components/PlotCard.js","views/FacilityAdmin/Dashboard/helpers.js","views/FacilityAdmin/Dashboard/queries.js","views/FacilityAdmin/Dashboard/Dashboard.js","views/FacilityAdmin/Dashboard/charts.js","components/ClientDetails.js","components/ClientChip.js","components/FacilityClientTable.js","forms/OrganizationForm/OrganizationForm.js","forms/OrganizationForm/OrganizationEditButton.js","components/Card/OrganizationCard.js","views/OrgAdmin/Dashboard/components/SummaryCard.js","views/OrgAdmin/Dashboard/components/PieCard.js","views/OrgAdmin/Dashboard/components/BarCard.js","views/OrgAdmin/Dashboard/components/PlotCard.js","views/OrgAdmin/Dashboard/helpers.js","views/OrgAdmin/Dashboard/queries.js","views/OrgAdmin/Dashboard/Dashboard.js","views/OrgAdmin/Dashboard/charts.js","components/OrganizationDetails.js","components/OrganizationTable.js","components/IndividualClientTable.js","components/DeliveryStaffTransactionTable.js","components/DeliveryStaffMonthlyStatementTable.js","components/DeliveryStaffDetails.js","components/DeliveryStaffChip.js","components/DeliveryStaffTable.js","components/DeliveryStaffOrderStatusChip.js","components/DeliveryStaffOrderTable.js","components/ILinkOrderStatusChip.js","components/ILinkOrderLogTable.js","components/ILinkOrderTable.js","components/LalamoveOrderStatusChip.js","components/LalamoveOrderLogTable.js","components/LalamoveOrderTable.js","views/Admin/Order/Order.js","views/Admin/Dashboard/components/SummaryCard.js","views/Admin/Dashboard/components/PieCard.js","views/Admin/Dashboard/components/BarCard.js","views/Admin/Dashboard/components/PlotCard.js","views/Admin/Dashboard/helpers.js","views/Admin/Dashboard/queries.js","views/Admin/Dashboard/Dashboard.js","views/Admin/IssueCenter/components/IssueStatusProgress.js","views/Admin/IssueCenter/components/IssueTimeline.js","views/Admin/IssueCenter/components/Issue.js","views/Admin/IssueCenter/IssueCenter.js","views/Admin/Users/Users.js","views/Admin/Reports/queries.js","views/Admin/Reports/CountyPrsReport/workbooks/helpers.js","views/Admin/Reports/LabelWithToolTip.js","views/Admin/Reports/MohwPrsReport.js","views/Admin/Reports/RestaurantReport.js","views/Admin/Reports/RestaurantReportByOrg.js","views/Admin/Reports/PandagoReport.js","views/Admin/Reports/UberReport.js","views/Admin/Reports/LalamoveReport.js","views/Admin/Reports/CountyPrsReport/workbooks/chiayi.js","views/Admin/Reports/CountyPrsReport/workbooks/miaoli.js","views/Admin/Reports/CountyPrsReport/workbooks/yunlin.js","views/Admin/Reports/CountyPrsReport/workbooks/taoyuan.js","views/Admin/Reports/CountyPrsReport/workbooks/newTaipeiCity.js","views/Admin/Reports/CountyPrsReport/workbooks/pingtung.js","views/Admin/Reports/CountyPrsReport/workbooks/taipei.js","views/Admin/Reports/CountyPrsReport/workbooks/changhua.js","views/Admin/Reports/CountyPrsReport/CountyPrsReport.js","views/Admin/Reports/writeVulnerable.js","views/Admin/Reports/VulnerableReport.js","views/Admin/Reports/YearlyReport/writeYearly.js","views/Admin/Reports/YearlyReport/writeDisability.js","views/Admin/Reports/YearlyReport/writeMonthlyStatistics.js","views/Admin/Reports/YearlyReport/YearlyReport.js","utilities/image.js","views/Admin/Reports/ElderReceipt/issueReceipts.js","views/Admin/Reports/ElderReceipt/ElderReceipt.js","views/Admin/Reports/SelfPayingReceipt/issueReceipts.js","views/Admin/Reports/SelfPayingReceipt/SelfPayingReceipt.js","views/Admin/Reports/DeliveryStaffSalary/workbooks/byDistrict.js","views/Admin/Reports/DeliveryStaffSalary/workbooks/byTripsAndDistrict.js","views/Admin/Reports/DeliveryStaffSalary/DeliveryStaffSalary.js","views/Admin/Reports/AccountingSMS.js","views/Admin/Reports/UserTypeReport.js","views/Admin/Reports/Reports.js","forms/ConfigurationForm/ConfigurationForm.js","forms/ConfigurationForm/ConfigurationEditButton.js","views/Admin/System/ConfigurationTable.js","views/Admin/System/System.js","views/Admin/TodayOrders/queries.js","views/Admin/TodayOrders/BoardView.js","views/Admin/TodayOrders/TodayOrders.js","components/IssueCenterBadge.js","forms/DeliveryStaffTransactionForm/DeliveryStaffTransactionForm.schema.js","forms/DeliveryStaffTransactionForm/DeliveryStaffTransactionForm.js","forms/DeliveryStaffTransactionForm/DeliveryStaffTransactionUpdateForm.js","forms/DeliveryStaffTransactionForm/DeliveryStaffTransactionEditButton.js","components/STokenTable.js","components/OrderBadge.js","components/AbandonedOrderBadge.js","forms/TagForm/schema.js","forms/TagForm/TagForm.js","forms/TagForm/TagEditButton.js","components/TagTable.js","components/RestaurantOwnerDetails.js","components/TransactionTable.js","components/InvoiceTable.js","forms/SponsorshipProgramForm/schema.js","forms/SponsorshipProgramForm/SponsorshipProgramForm.js","forms/SponsorshipProgramForm/SponsorshipProgramEditButton.js","components/SponsorshipProgramTable.js","forms/MembershipProgramForm/schema.js","forms/MembershipProgramForm/MembershipProgramForm.js","forms/MembershipProgramForm/MembershipProgramFormEditButton.js","components/MembershipProgramTable.js","forms/ClientAppBannerForm/ClientAppBannerForm.js","forms/ClientAppBannerForm/ClientAppBannerEditButton.js","components/ClientAppBannerTable.js","components/OrderQuoteTable.js","components/WebhookEventTable.js","components/GetOrderQuote/GetOrderQuote.js","components/QueryAddressResultTable.js","components/QueryAddress/QueryAddress.js","components/EventTable.js","forms/DementiaQuestionnaireForm/DementiaQuestionnaireForm.js","forms/DementiaQuestionnaireForm/DementiaQuestionnaireEditButton.js","components/Project/Dementia/DementiaPreventionTable.js","components/AuditTrailTable.js","views/Admin/routes.js","views/Admin/Dashboard/charts.js","views/Admin/Orders/Orders.js","views/Admin/UberOrders/UberOrders.js","views/Admin/PandagoOrders/PandagoOrders.js","views/Admin/ILinkOrders/ILinkOrders.js","views/Admin/LalamoveOrders/LalamoveOrders.js","components/RestaurantOwnerTable.js","views/Admin/SToken/SToken.js","components/STokenBadge.js","views/Admin/Transactions/Transactions.js","views/Admin/Invoices/Invoices.js","views/Admin/Sponsorship/SponsorshipPrograms.js","views/Admin/Sponsorship/Sponsorships.js","components/Project/Dementia/DementiaQuestionnaireTable.js","views/Admin/Membership/MembershipPrograms.js","views/Admin/Membership/Memberships.js","components/DeliveryStaffBadge.js","views/Admin/ApiDocs/ApiDocs.js","views/OrgAdmin/components/DeliveryStaffDetails.js","views/OrgAdmin/DeliveryDiary/queries.js","views/OrgAdmin/DeliveryDiary/DeliveryDiary.js","views/OrgAdmin/routes.js","views/OrgAdmin/components/DeliveryStaffTable.js","views/FacilityAdmin/MealStatistics/components/MealStatisticsTable.js","views/FacilityAdmin/MealStatistics/components/RestaurantMealTagSelect.js","views/FacilityAdmin/MealStatistics/components/MealStatisticsSettingsToolbar.js","views/FacilityAdmin/MealStatistics/helpers.js","views/FacilityAdmin/MealStatistics/queries.js","views/FacilityAdmin/MealStatistics/components/RestaurantMealTagSelectDialog.js","views/FacilityAdmin/MealStatistics/MealStatistics.js","views/FacilityAdmin/components/OrderTable.js","views/FacilityAdmin/components/Forms/uiSchema.js","views/FacilityAdmin/components/Forms/FormForm.js","views/FacilityAdmin/components/Forms/FormEditButton.js","views/FacilityAdmin/components/Forms/queries.js","views/ScheduleBoard/BoardView.js","views/ScheduleBoard/index.js","views/FacilityAdmin/components/Schedule.js","views/FacilityAdmin/components/IssueCenter.js","views/FacilityAdmin/components/FacilitySettings.js","views/FacilityAdmin/routes.js","views/FacilityAdmin/components/Forms/FormTable.js","views/Client/MyOrders/queries.js","views/Client/MyOrders/OrderCard.js","views/Client/routes.js","views/Client/MyOrders/MyOrders.js","routes.js","views/Admin/Tests/Tests.js","utilities/array.js","utilities/cache.js","utilities/format.js","utilities/graph.js","utilities/sorting.js","utilities/translate.js","forms/SurchargesForm/uiSchema.js","forms/SurchargesForm/SurchargesForm.js","components/RestaurantMealGallery.js","components/RestaurantMealDialog.js","components/UpdateOrderMealDialog.js","components/RestaurantMealGrids.js","components/RestaurantMealGrids.graph.js","views/Admin/RestaurantMeals/RestaurantMeals.js","views/FacilityAdmin/components/Forms/schema.js","views/Public/LandingPage/index.js","views/Public/Download/index.js","views/Public/DeleteMyAccount/index.js","views/Public/Menu/CategorySelect/CategorySelect.js","views/Public/Menu/ElderInfo/ElderInfo.js","views/Public/Menu/ElderInfo/queries.js","views/Public/Menu/RestaurantMealList/MealItemDialog.js","views/Public/Menu/RestaurantMealList/RestaurantMeals.js","views/Public/Menu/RestaurantMealList/RestaurantMealList.js","views/Public/Menu/RestaurantMealList/queries.js","components/Payment/CashButton.js","views/Public/Menu/CompleteOrder/CompleteOrder.js","views/Public/Menu/Menu.js","views/FacilityAdmin/components/FacilityAuthenticator.js","views/Public/routes.js","views/FacilityAdmin/components/FacilitySignUp.js","../constants/src/apiErrorCodes.js","../constants/src/app.js","../constants/src/authErrorCodes.js","../constants/src/clientStatus.js","../constants/src/cognitoGroups.js","../constants/src/Colors.js","../constants/src/counties.js","../constants/src/countiesDistricts.js","../constants/src/deliveryStaffOrderStatus.js","../constants/src/deliveryStaffStatus.js","../constants/src/deliveryStaffTransactionStatus.js","../constants/src/deliveryStaffTransactionTypes.js","../constants/src/genders.js","../constants/src/issueStatus.js","../constants/src/mealSlots.js","../constants/src/orderCategory.js","../constants/src/orderStatus.js","../constants/src/orderSources.js","../constants/src/tag.js","../constants/src/transactionStatus.js","../constants/src/transactionTypes.js","../constants/src/translationTypes.js","../constants/src/invoiceStatus.js","../constants/src/invoiceTypes.js","../constants/src/processStatus.js","../constants/src/uberOrderStatus.js","../constants/src/pandagoOrderStatus.js","../constants/src/iLinkOrderStatus.js","../constants/src/lalamoveOrderStatus.js","../constants/src/membershipStatus.js","../constants/src/deliveryResult.js","../constants/src/elderStatus.js","../constants/src/elderPaymentMethod.js","../constants/src/cancellationReasons.js","../constants/src/elderDeactivationReason.js","../constants/src/surveyResponse.js","../constants/src/reportTypes.js","../constants/src/supportedPartners.js","../constants/src/deliveryStaffFeeCalculationMethod.js"],"sourcesContent":["import React, { createContext, useContext, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport cache from 'utilities/cache';\n\nconst CacheContext = createContext();\n\nexport const useCache = () => useContext(CacheContext);\n\nexport const CacheProvider = ({ children }) => {\n const [userGroupOptions, setUserGroupOptions] = useState([]);\n const [isAdmin, setIsAdmin] = useState(false);\n const [appGroup, setAppGroup] = useState();\n const [selectedUserGroupParams, setSelectedUserGroupParams] = useState(cache.get('app:selectedUserGroupParams'));\n const [facilityIds, setFacilityIds] = useState([]);\n const [logoS3Keys, setLogoS3Keys] = useState();\n\n useEffect(() => {\n if (userGroupOptions) {\n setIsAdmin(userGroupOptions.some(({ userGroupName }) => userGroupName === 'Admins'));\n }\n\n const newFacilityIds = [];\n userGroupOptions.forEach((userGroupOption) => {\n if (userGroupOption.userGroupName === 'FacilityAdmins' && userGroupOption.isActive === 1) {\n newFacilityIds.push(userGroupOption.clientId);\n }\n });\n setFacilityIds(newFacilityIds);\n }, [userGroupOptions]);\n\n return (\n \n {children}\n \n );\n};\n\nCacheProvider.propTypes = {\n children: PropTypes.element,\n};\n","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"ap-southeast-1\",\n \"aws_appsync_graphqlEndpoint\": \"https://oep3w7vmtzcfvkm2rsh2ccs7ji.appsync-api.ap-southeast-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"ap-southeast-1\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n \"aws_appsync_apiKey\": \"da2-ljnkhukn2jcm5pi3mj3jx4bylm\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"webhook\",\n \"endpoint\": \"https://084udafmo7.execute-api.ap-southeast-1.amazonaws.com/production\",\n \"region\": \"ap-southeast-1\"\n }\n ],\n \"aws_cognito_identity_pool_id\": \"ap-southeast-1:06557d1d-323e-4b23-b2a7-bbdfa672a9c2\",\n \"aws_cognito_region\": \"ap-southeast-1\",\n \"aws_user_pools_id\": \"ap-southeast-1_3Iau0wJur\",\n \"aws_user_pools_web_client_id\": \"41f3nrevsdv3cvsnem0pfc58kf\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\",\n \"NAME\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_user_files_s3_bucket\": \"silvergate639f5cfdeddb42f78ca0c4a2d0471c8f192221-production\",\n \"aws_user_files_s3_bucket_region\": \"ap-southeast-1\"\n};\n\n\nexport default awsmobile;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport PersonAddIcon from '@material-ui/icons/PersonAdd';\nimport PersonIcon from '@material-ui/icons/Person';\nimport CustomAuthenticator from './CustomAuthenticator';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n // minWidth: 480,\n },\n content: {\n padding: 0,\n overflowX: 'hidden',\n // padding: theme.spacing(3),\n // paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}));\n\nconst CustomDialogTitle = ({ children, onClose, ...other }) => {\n const classes = useStyles();\n return (\n \n {children}\n {onClose ? (\n \n \n \n ) : null}\n \n );\n};\n\nCustomDialogTitle.propTypes = {\n children: PropTypes.node,\n onClose: PropTypes.func,\n};\n\nconst MODES = {\n signUp: {\n name: '註冊',\n icon: ,\n },\n signIn: {\n name: '登入',\n icon: ,\n },\n};\n\nexport default function CustomAuthDialog({\n // children,\n title = '銀色大門',\n openOnInit = false,\n onClose,\n hideCloseButton = false,\n fullScreen = false,\n maxWidth = 'xs',\n // withButton = true,\n mode = 'signIn',\n button,\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState(openOnInit);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n setOpen(false);\n onClose && onClose();\n };\n\n const { icon, name } = MODES[mode];\n\n return (\n \n {button ? button({ onClick: () => setOpen(!open) } ) : setOpen(!open)}\n >\n {name}\n }\n \n \n {title}\n \n \n \n \n \n \n );\n}\n\nCustomAuthDialog.propTypes = {\n children: PropTypes.element,\n title: PropTypes.string,\n openOnInit: PropTypes.bool,\n onClose: PropTypes.func,\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n // withButton: PropTypes.bool,\n mode: PropTypes.string,\n button: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Authenticator,\n useAuthenticator,\n CheckboxField,\n Autocomplete,\n} from '@aws-amplify/ui-react';\nimport Link from '@material-ui/core/Link';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport querystring from 'query-string';\nimport { Auth, Hub, I18n } from 'aws-amplify';\nimport { dict } from 'i18n/Amplify';\n// import liff from '@line/liff';\nimport { SHOP_PREFIX } from '@silvergatedelivery/constants';\n\nimport {\n // Colors,\n // SHORT_NAME,\n // authErrorCodes,\n counties,\n} from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\n\nexport default function CustomAuthenticator({\n children = ,\n initialAuthState: inAuthState,\n currentAuthState,\n}) {\n const [authState, setAuthState] = useState();\n const shopClientMode = window.location.hostname.startsWith(SHOP_PREFIX);\n\n const components = {\n SignIn: {\n Header() {\n Hub.dispatch('app', { event: 'signIn_view', data: { currentAuthState } });\n if (!shopClientMode) {\n return <>;\n }\n return <>\n
\n {\n try {\n // 1. 使用 Line Login API的 workflow\n await Auth.federatedSignIn({\n provider: 'access.line.me',\n customState: 'facilityIdHere',\n });\n\n // 2. 使用liff login的workflow\n // 因為line liff需要設定合法的https網址,這是ngrok導向到Justin localhost\n // liff.login({ redirectUri: 'https://0b46-2401-e180-8870-9104-dcc0-6964-2336-a86f.ngrok-free.app/' });\n // console.log(cred);\n // const authenticatedUser = await Auth.currentAuthenticatedUser();\n // console.log(authenticatedUser);\n } catch (e) {\n console.log(e);\n }\n }}\n >\n \n LINE 登入\n \n
\n \n \n 或者\n \n \n ;\n },\n },\n SignUp: {\n FormFields() {\n const { validationErrors } = useAuthenticator();\n Hub.dispatch('app', { event: 'signUp_view', data: { currentAuthState } });\n\n return (\n \n \n {\n return {\n id: item,\n label: item,\n };\n })}\n placeholder=\"所在縣市\"\n onSelect={(option)=>{\n cache.set('app:location', option.id);\n }}\n />\n\n \n 我同意\n \n 隱私權及保護政策\n \n 與\n \n 會員服務條款\n \n }\n />\n \n );\n },\n },\n };\n\n const services = {\n async validateCustomSignUp(formData) {\n if (!formData.acknowledgement) {\n return {\n acknowledgement: '您必須同意隱私權及保護政策與會員服務條款',\n };\n }\n },\n async handleSignUp(formData) {\n const {\n username,\n password,\n attributes: {\n name,\n phone_number: phoneNumber,\n },\n } = formData;\n cache.set('app:phoneNumber', phoneNumber);\n\n const email = username.toLowerCase();\n const signUpResult = await Auth.signUp({\n username: email,\n password,\n attributes: {\n name,\n email,\n },\n autoSignIn: {\n enabled: true,\n },\n });\n\n global.logger.debug('signUp', signUpResult);\n\n cache.set('app:isNewRegistered', 'yes');\n\n // const registerResult = await request(registerClient, {\n // input: {\n // username,\n // name,\n // addressCounty: location,\n // addressZipCode: '無',\n // addressDistrict: '無',\n // addressStreet: '無',\n // phoneNumber,\n // email,\n // },\n // });\n\n // global.logger.debug('registerClient', registerResult);\n\n return signUpResult;\n },\n };\n\n const formFields = {\n signUp: {\n username: {\n label: '電子信箱',\n isRequired: true,\n order: 1,\n },\n password: {\n label: '密碼',\n // placeholder: '密碼',\n isRequired: false,\n order: 2,\n },\n confirm_password: {\n label: '確認密碼',\n order: 3,\n },\n name: {\n label: '姓名',\n isRequired: true,\n order: 4,\n },\n phone_number: {\n label: '電話',\n isRequired: true,\n order: 5,\n dialCodeList: ['+886'],\n },\n },\n };\n\n useEffect(() => {\n I18n.putVocabularies(dict);\n\n const { state } = querystring.parse(window.location.search);\n setAuthState(state || 'signIn');\n }, []);\n\n useEffect(() => {\n if (!inAuthState) return;\n\n setAuthState(null);\n\n setTimeout(() => {\n if (inAuthState) {\n setAuthState(inAuthState);\n }\n });\n }, [inAuthState]);\n\n if (!authState) return null;\n\n return (\n \n {() => children}\n \n );\n}\n\nCustomAuthenticator.propTypes = {\n children: PropTypes.any,\n initialAuthState: PropTypes.string,\n currentAuthState: PropTypes.string,\n};\n","import cache from 'utilities/cache';\nimport { request, asyncListAll } from 'utilities/graph';\nimport {\n getClientsByUsernameByType,\n getOrganization,\n getClientOrganizationByOrganization,\n getUser,\n} from 'graphql/queries';\nimport { registerClient, registerFacilityAdmin } from 'graphql/mutations';\nimport { cognitoGroups } from '@silvergatedelivery/constants';\n\nexport const handleNewRegisteredFacilityAdmin = async (username, name, email, userGroups) => {\n const isNewRegisteredFacilityAdmin = cache.get('app:isNewRegisteredFacilityAdmin') === 'yes';\n\n if (!isNewRegisteredFacilityAdmin || userGroups.includes('FacilityAdmins')) {\n return undefined;\n }\n cache.remove('app:isNewRegisteredFacilityAdmin');\n\n const registerResult = await request(registerFacilityAdmin, {\n input: {\n username,\n name,\n addressCounty: cache.get('app:location') || '臺北市',\n addressZipCode: '',\n addressDistrict: '',\n addressStreet: '',\n phoneNumber: cache.get('app:phoneNumber') || ' ',\n email,\n contact: cache.get('app:contact') || ' ',\n },\n });\n\n global.logger.debug('registerFacilityAdmin', registerResult);\n\n return 'FacilityAdmins';\n};\n\nexport const handleMissingClient = async (username, name, email, userGroups) => {\n if (userGroups.includes('Clients')) {\n return undefined;\n }\n\n const res = await request(registerClient, {\n input: {\n username,\n name,\n email,\n addressCounty: cache.get('app:location') || '臺北市',\n addressZipCode: ' ',\n addressDistrict: ' ',\n addressStreet: ' ',\n phoneNumber: cache.get('app:phoneNumber') || ' ',\n },\n });\n global.logger.debug(res);\n\n return 'Clients';\n};\n\nexport const getUserOrgAssigedFacilities = async (user, clientModeOnly = true) => {\n if (!user.organizationId || !user.facilityIds || user.facilityIds.length === 0) {\n return [];\n }\n const clientOrganization = await asyncListAll(getClientOrganizationByOrganization, { organizationId: user.organizationId });\n const facilities = user.facilityIds.reduce((accumulator, currentValue) => {\n const { client, clientMode } = clientOrganization.find(({ clientId }) => clientId === currentValue) || {};\n if (client && (!clientModeOnly || (clientModeOnly && clientMode))) {\n accumulator.push(client);\n }\n return accumulator;\n }, []);\n return facilities;\n};\n\nexport const getUserRelatedFacilities = async (user) => {\n const [\n userOwnedFacilites,\n orgAssignedFacilities,\n ] = await Promise.all([\n asyncListAll(getClientsByUsernameByType, {\n username: user.username,\n type: {\n eq: 'facility',\n },\n }),\n getUserOrgAssigedFacilities(user),\n ]);\n\n const facilities = userOwnedFacilites;\n orgAssignedFacilities.forEach((item) => {\n if (!facilities.find(({ id }) => id === item.id)) {\n facilities.push(item);\n }\n });\n\n return facilities;\n};\n\nexport const getUserOrgClients = async (user) => {\n if (!user.organizationId) return [];\n\n const clientOrganization = await asyncListAll(getClientOrganizationByOrganization, { organizationId: user.organizationId });\n const clients = clientOrganization.reduce((accumulator, currentValue) => {\n if (currentValue.client && currentValue.client.type === 'facility') {\n accumulator.push(currentValue.client);\n }\n return accumulator;\n }, []);\n\n return clients;\n};\n\nexport const getUserOrg = async (user) => {\n if (!user.organizationId) return undefined;\n\n const { data: { getOrganization: organizationData } } = await request(getOrganization, { id: user.organizationId });\n\n return organizationData;\n};\n\nexport const getUserGroupOptions = async (user, orderClientMode, shopClientMode) => {\n const userGroups = user.signInUserSession.accessToken.payload['cognito:groups'] || [];\n\n const { username, attributes } = user;\n let name;\n let email;\n if (attributes) {\n ({ name, email } = attributes);\n } else if ( user.signInUserSession.idToken?.payload) {\n name = user.signInUserSession.idToken.payload.name;\n email = user.signInUserSession.idToken.payload.email;\n }\n\n cache.set('app:username', username);\n cache.set('app:userName', name);\n cache.set('app:name', name);\n cache.set('app:email', email);\n\n global.logger.debug({ user });\n\n const [\n newUserGroupNameForFacilityAdmin,\n newUserGroupNameForClient,\n ] = await Promise.all([\n handleNewRegisteredFacilityAdmin(username, name, email, userGroups),\n handleMissingClient(username, name, email, userGroups),\n ]);\n\n if (newUserGroupNameForFacilityAdmin) {\n // workaround error: Not Authorized to access facilitySettings on type Client\n // 當facility註冊後,registerFacilityAdmin會create client同時create facilitSettings 和修改 group\n // 但是底下 getUserRelatedFacilities 裡面的 getClientsByUsernameByType 會回 error\n // 這個地方reload可以避免這個error\n window.location.reload();\n }\n\n if (newUserGroupNameForFacilityAdmin) userGroups.push(newUserGroupNameForFacilityAdmin);\n if (newUserGroupNameForClient) userGroups.push(newUserGroupNameForClient);\n\n global.logger.debug({ userGroups });\n\n const { data: { getUser: existingUser } } = await request(getUser, { username });\n\n // TODO: Move this part to \"checkUser\"\n const [\n individualClients,\n facilities, // user可以進入機構模式的機構, 包含私有機構與組織內機構\n organizationData,\n ] = await Promise.all([\n asyncListAll(getClientsByUsernameByType, {\n username: user.username,\n type: {\n eq: 'individual',\n },\n }),\n getUserRelatedFacilities(existingUser),\n getUserOrg(existingUser),\n ]);\n\n if (organizationData && organizationData.cleints && organizationData.client.items) {\n organizationData.clients.items.forEach((client) => {\n if (client.visitorMode) {\n client.clientMode = false;\n client.elderSetting = false;\n }\n });\n }\n\n const defaultUserGroupOptions = cognitoGroups.filter(({ value, backendSignIn }) =>\n userGroups.includes(value) && backendSignIn);\n const userGroupOptions = [];\n const clientOnly = defaultUserGroupOptions.length === 1 && defaultUserGroupOptions[0].value === 'Clients';\n defaultUserGroupOptions.forEach((item) => {\n if (item.value === 'OrgAdmins' && organizationData) {\n if (orderClientMode || shopClientMode) {\n return;\n }\n if (facilities.length === 1) {\n return;\n }\n // 選擇這個option會進入\"組織\"模式\n userGroupOptions.push({\n label: `${item.label}:${organizationData.name}`,\n userGroupName: item.value,\n organizationId: organizationData.id,\n organizationData: {\n ...organizationData,\n clients: {\n // 組織裡可以被user看到的機構\n items: organizationData.clients.items.filter(({ clientId }) => existingUser.facilityIds.includes(clientId)),\n },\n },\n // 組織裡可以被user看到的機構\n organizationClientIds: organizationData.clients.items.filter(\n ({ clientId }) => existingUser.facilityIds.includes(clientId)).map(({ clientId }) => clientId),\n isActive: 1,\n });\n } else if (item.value === 'FacilityAdmins') {\n if (orderClientMode || shopClientMode) {\n return;\n }\n // 選擇這個option會進入\"機構\"模式\n facilities.forEach((facility) => {\n userGroupOptions.push({\n label: `${item.label}:${facility.name}`,\n userGroupName: item.value,\n clientId: facility.id,\n clientData: facility,\n isActive: facility.isActive,\n });\n });\n } else if (item.value === 'Clients') {\n if (!orderClientMode && !shopClientMode && !clientOnly) {\n return;\n }\n // 選擇這個option會進入\"客戶\"模式\n individualClients.forEach((client) => {\n userGroupOptions.push({\n label: `${item.label}:${client.name}`,\n userGroupName: item.value,\n clientId: client.id,\n clientData: client,\n isActive: client.isActive,\n });\n });\n } else {\n if (orderClientMode || shopClientMode) {\n return;\n }\n // 選擇這個option會進入\"管理者\"模式\n userGroupOptions.push({\n label: item.label,\n userGroupName: item.value,\n isActive: 1,\n });\n }\n });\n return userGroupOptions;\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { formatAddress, formatGender } from 'utilities/format';\nimport InfoCard from './InfoCard';\nimport { request } from 'utilities/graph';\nimport { getClient } from 'graphql/queries';\nimport IndividualClientEditButton from 'forms/IndividualClientForm/IndividualClientEditButton';\nimport FacilityClientEditButton from 'forms/FacilityClientForm/FacilityClientEditButton';\n\nexport default function ClientCard({ id, title = '客戶資料', data: inData, showMap, ...props }) {\n const [data, setData] = useState({});\n\n const mappings = [\n { key: 'name', label: '姓名' },\n { key: 'email', label: 'Email' },\n { key: 'phoneNumber', label: '電話' },\n { key: 'phoneNumber2', label: '電話2' },\n { key: 'phoneNumber3', label: '電話3' },\n { key: 'address', label: '地址', format: formatAddress, showMap },\n ];\n\n if (data.type === 'individual') {\n mappings.push({ key: 'gender', label: '性別', format: formatGender, expand: true });\n mappings.push({ key: 'ageGroup', label: '年齡範圍', expand: true });\n mappings.push({ key: 'birthday', label: '生日', expand: true });\n mappings.push({ key: 'jobOccupation', label: '職稱', expand: true });\n mappings.push({ key: 'howDoYouKnowUs', label: '如何得知銀色大門', expand: true });\n }\n\n useEffect(() => {\n (async () => {\n if (inData) {\n setData(inData);\n } else\n if (id) {\n const { data: { getClient: data } } = await request(getClient, { id });\n setData(data);\n }\n })();\n }, [inData, id]);\n\n return (\n \n );\n}\n\nClientCard.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string,\n showMap: PropTypes.bool,\n data: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport i18n from 'i18next';\nimport PropTypes from 'prop-types';\n\nimport {\n formatEmergencyContact,\n formatAddress,\n formatGender,\n formatBankAccount,\n} from 'utilities/format';\nimport InfoCard from './InfoCard';\nimport { request } from 'utilities/graph';\nimport { getDeliveryStaff } from 'graphql/queries';\nimport DeliverStaffEditButton from 'forms/DeliverStaffForm/DeliverStaffEditButton';\nimport UserAvatar from 'components/UserAvatar';\nimport { useCache } from 'CacheProvider';\n\nexport default function DeliveryStaffCard({ id, title = i18n.t('送餐大使'), data: inData, showMap, collapseDirection = 'up', ...props }) {\n const [data, setData] = useState({});\n const { appGroup } = useCache();\n const notAdminMode = appGroup !== 'Admins';\n\n const mappings = [\n { key: 'name', label: '姓名' },\n { key: 'phoneNumber', label: '電話' },\n { key: 'email', label: 'Email' },\n { key: 'address', label: '地址', format: formatAddress, showMap },\n { key: 'tier', label: '接單層級', hide: notAdminMode },\n { key: 'emergencyContact', label: '緊急聯絡人', format: formatEmergencyContact },\n\n { key: 'male', label: '性別', format: formatGender, expand: true },\n { key: 'jobOccupation', label: '職稱', expand: true },\n { key: 'identificationCardId', label: '身分證字號', expand: true },\n { key: 'bankAccount', label: '銀行帳戶', format: formatBankAccount, expand: true, hide: notAdminMode },\n { key: 'whyDoYouWantToJoin', label: '為何想加入銀色大門', expand: true, hide: notAdminMode },\n { key: 'howDoYouKnowUs', label: '如何得知銀色大門', expand: true, hide: notAdminMode },\n { key: 'experience', label: '經驗', expand: true },\n { key: 'selfInfroduction', label: '自介', expand: true },\n ];\n\n useEffect(() => {\n (async () => {\n if (inData) {\n setData(inData);\n } else\n if (id) {\n const { data: { getDeliveryStaff: data } } = await request(getDeliveryStaff, { id });\n setData(data);\n }\n })();\n }, [id, inData]);\n\n if (!data) return null;\n\n return (\n \n
\n \n
\n \n );\n}\n\nDeliveryStaffCard.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string,\n showMap: PropTypes.bool,\n data: PropTypes.object,\n collapseDirection: PropTypes.oneOf(['up', 'left']),\n};\n","import React, { useState, useEffect } from 'react';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nimport { formatAge, formatAddress, formatGender, formatEmergencyContact, formatTags } from 'utilities/format';\nimport InfoCard from './InfoCard';\nimport { request } from 'utilities/graph';\nimport { getElder } from 'graphql/queries';\nimport ElderEditButton from 'forms/ElderForm/ElderEditButton';\n\nexport default function ElderCard({ id, title = `${i18n.t('送餐對象')}資料`, data: inData, showMap = false, collapseDirection = 'up', ...props }) {\n const { t } = useTranslation();\n const [data, setData] = useState({});\n\n const mappings = [\n { key: 'name', label: '姓名' },\n { key: 'birthday', label: '年齡', format: formatAge },\n { key: 'phoneNumber', label: '電話' },\n { key: 'phoneNumber2', label: '電話2' },\n { key: 'phoneNumber3', label: '電話3' },\n { key: 'address', label: '地址', format: formatAddress, showMap },\n { key: 'tags', label: '標籤', format: formatTags },\n { key: 'noteForHealth', label: '健康備註' },\n { key: 'noteForMeal', label: `${t('餐點')}備註` },\n { key: 'noteForDelivery', label: `${t('送餐')}備註` },\n { key: 'note', label: '其他備註' },\n { key: 'otherSocialServices', label: '其它社會資源協助' },\n { key: 'emergencyContact', label: '緊急聯絡人', format: formatEmergencyContact },\n {\n key: 'isAllowedToEnterHome',\n label: '是否同意進入長輩家中',\n format(value) {\n return value ? '是' : '否';\n },\n },\n { key: 'gender', label: '性別', format: formatGender, expand: true },\n { key: 'relationshipToClient', label: '與客戶關係' },\n ];\n\n useEffect(() => {\n (async () => {\n if (inData) {\n setData(inData);\n } else\n if (id) {\n const { data: { getElder: data } } = await request(getElder, { id });\n setData(data);\n }\n })();\n }, [inData, id]);\n\n return (\n \n );\n}\n\nElderCard.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string,\n data: PropTypes.object,\n showMap: PropTypes.bool,\n collapseDirection: PropTypes.oneOf(['up', 'left']),\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Collapse from '@material-ui/core/Collapse';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport FileCopyIcon from '@material-ui/icons/FileCopyOutlined';\nimport { Colors } from '@silvergatedelivery/constants';\n\nimport Place from 'components/Map/Place';\nimport LinkButton from 'components/Table/LinkButton';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n 'width': '100%',\n 'position': 'relative',\n 'transition': 'all 0.3s ease-in-out',\n '&.collapsed': {\n 'width': theme.spacing(3),\n 'overflow': 'hidden',\n '& $listSubHeader': {\n 'writingMode': 'vertical-rl',\n 'height': '100%',\n 'padding': theme.spacing(1, 0),\n 'minHeight': '150px',\n 'display': 'flex',\n 'justifyContent': 'flex-start',\n 'backgroundColor': theme.palette.background.default,\n },\n '& $header': {\n 'transform': 'translateX(-10px)',\n 'width': 'fit-content',\n 'gap': theme.spacing(0.5),\n },\n },\n },\n listSubHeader: {\n fontWeight: 700,\n borderBottom: '1px solid #E5E5E5',\n cursor: 'pointer',\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n actions: {\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n zIndex: 10,\n display: 'flex',\n flexDirection: 'row',\n },\n actionsSpace: {\n width: 8,\n display: 'inline-block',\n },\n button: {\n margin: theme.spacing(2),\n },\n map: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n },\n}));\n\nexport default function InfoCard({\n children,\n title,\n link,\n mappings = [],\n data = {},\n collapse = false,\n expand: inExpand,\n hideExpand = false,\n editButton,\n onUpdate,\n collapseDirection = 'up',\n onCollapseChange,\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState(!collapse);\n const [expand, setExpand] = useState(hideExpand ? true : inExpand);\n\n const handleClick = () => {\n const newOpen = !open;\n setOpen(newOpen);\n onCollapseChange?.(newOpen);\n };\n\n const filteredMappings = mappings.filter((item) => !item.hide);\n\n const hasExpandFields = filteredMappings.some((item) => item.expand);\n\n const renderContent = (item) => {\n const content = (item.format ? item.format(data[item.key]) :\n data[item.key] === true ? '是' : data[item.key] === false ? '否' : data[item.key]) || '無';\n return (\n \n {content}\n {content !== '無' && content !== '無 (無) 無' && typeof content === 'string' && content.length > 4 &&\n \n \n \n }\n );\n };\n\n return (\n \n \n {title &&\n \n
\n {collapseDirection === 'left' ?\n :\n (open ? : )\n }\n {title}\n
\n }\n {(open || collapseDirection === 'up')&&\n
\n {editButton && editButton({ item: data, onUpdate: (data) => onUpdate && onUpdate(data) })}\n
\n {link && }\n
}\n\n \n {children}\n {filteredMappings.filter((x) => expand ? true : !x.expand).map((item, index)=>(\n \n \n \n \n {item.showMap ?
: null}\n
\n ))}\n
\n \n \n {!hideExpand && hasExpandFields &&\n \n setExpand(!expand)}\n startIcon={expand ? : }\n >\n \n {expand ? '顯示部分重要資料' : '顯示全部'}\n \n \n }\n \n \n );\n}\n\nInfoCard.propTypes = {\n children: PropTypes.any,\n title: PropTypes.string,\n link: PropTypes.string,\n mappings: PropTypes.array,\n data: PropTypes.object,\n expand: PropTypes.bool,\n collapse: PropTypes.bool,\n hideExpand: PropTypes.bool,\n editButton: PropTypes.func,\n onUpdate: PropTypes.func,\n collapseDirection: PropTypes.oneOf(['up', 'left']),\n onCollapseChange: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport i18n from 'i18next';\nimport PropTypes from 'prop-types';\n\nimport { formatAddress, formatTags } from 'utilities/format';\nimport InfoCard from './InfoCard';\nimport { request } from 'utilities/graph';\nimport { getRestaurant } from 'graphql/queries';\nimport RestaurantEditButton from 'forms/RestaurantForm/RestaurantEditButton';\nimport { useCache } from 'CacheProvider';\n\nexport default function RestaurantCard({ id, title = `${i18n.t('餐廳')}資料`, data: inData, showMap, ...props }) {\n const [data, setData] = useState({});\n const { appGroup } = useCache();\n const adminMode = appGroup === 'Admins';\n\n const mappings = [\n { key: 'name', label: '名稱' },\n { key: 'category', label: '類別' },\n { key: 'phoneNumber', label: '電話' },\n { key: 'address', label: '地址', format: formatAddress, showMap },\n { key: 'tags', label: '標籤', format: formatTags },\n ];\n\n useEffect(() => {\n (async () => {\n if (inData) {\n setData(inData);\n } else\n if (id) {\n const { data: { getRestaurant: data } } = await request(getRestaurant, { id });\n setData(data);\n }\n })();\n }, [inData, id]);\n\n return (\n \n );\n}\n\nRestaurantCard.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string,\n showMap: PropTypes.bool,\n data: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport i18n from 'i18next';\nimport PropTypes from 'prop-types';\n\nimport { formatAddress } from 'utilities/format';\nimport InfoCard from './InfoCard';\nimport { request } from 'utilities/graph';\nimport { getRestaurantOwner, getRestaurant } from 'graphql/queries';\nimport RestaurantOwnerEditButton from 'forms/RestaurantOwnerForm/RestaurantOwnerEditButton';\nimport { useCache } from 'CacheProvider';\n\nexport default function RestaurantOwnerCard({ id, restaurantId, title = `${i18n.t('餐廳')}負責人資料`, data: inData, showMap, ...props }) {\n const [data, setData] = useState({});\n const { isAdmin, appGroup } = useCache();\n const adminMode = appGroup === 'Admins';\n\n const mappings = [\n { key: 'name', label: '名字' },\n { key: 'username', label: '帳號' },\n { key: 'phoneNumber', label: '電話' },\n { key: 'email', label: 'Email' },\n { key: 'address', label: '地址', format: formatAddress, showMap },\n { key: 'howDoYouKnowUs', label: '如何得知銀色大門' },\n { key: 'note', label: '註記' },\n ];\n\n useEffect(() => {\n (async () => {\n if (inData) {\n setData(inData);\n } else\n if (restaurantId) {\n const { data: { getRestaurant: { restaurantOwnerId } } } = await request(getRestaurant, { id: restaurantId });\n\n if (!restaurantOwnerId) return;\n\n const { data: { getRestaurantOwner: data } } = await request(getRestaurantOwner, { id: restaurantOwnerId });\n setData(data);\n } else\n if (id) {\n const { data: { getRestaurantOwner: data } } = await request(getRestaurantOwner, { id });\n setData(data);\n }\n })();\n }, [inData, id, restaurantId]);\n\n return (\n \n );\n}\n\nRestaurantOwnerCard.propTypes = {\n id: PropTypes.string,\n restaurantId: PropTypes.string,\n title: PropTypes.string,\n showMap: PropTypes.bool,\n data: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Timeline from '@material-ui/lab/Timeline';\nimport TimelineItem from '@material-ui/lab/TimelineItem';\nimport TimelineSeparator from '@material-ui/lab/TimelineSeparator';\nimport TimelineConnector from '@material-ui/lab/TimelineConnector';\nimport TimelineContent from '@material-ui/lab/TimelineContent';\nimport TimelineDot from '@material-ui/lab/TimelineDot';\nimport TimelineOppositeContent from '@material-ui/lab/TimelineOppositeContent';\nimport Typography from '@material-ui/core/Typography';\n\nimport { formatDatetime } from 'utilities/format';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: 0,\n },\n itemContainer: {\n minHeight: 50,\n padding: 0,\n },\n listSubHeader: {\n fontWeight: 700,\n borderBottom: '1px solid #E5E5E5',\n },\n datetimeContainer: {\n maxWidth: 120,\n },\n}));\n\nexport default function CustomTimeline({\n data = [],\n sortKey = 'createdAt',\n render,\n}) {\n const classes = useStyles();\n\n let currentDate;\n const updatedData = data.map((x) => {\n const format = formatDatetime(x[sortKey], { year: false, weekday: false });\n const [date, time] = format.split(' ');\n\n if (date === currentDate) {\n x.displayDatetime = time;\n } else {\n currentDate = date;\n x.displayDatetime = format;\n }\n\n return x;\n });\n\n return (\n \n {updatedData.sort((a, b) => a[sortKey] > b[sortKey] ? 1 : -1).map((item, index)=>(\n \n \n \n {item.displayDatetime}\n \n \n \n \n {(index+1 < data.length) && }\n \n \n {render(item, index)}\n \n \n ))}\n \n );\n}\n\nCustomTimeline.propTypes = {\n data: PropTypes.array,\n sortKey: PropTypes.string,\n render: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\n// import Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\nimport { Link as RouteLink } from 'react-router-dom';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n marginRight: 5,\n marginBottom: 5,\n display: 'inline-block',\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: 5,\n paddingRight: 5,\n borderRadius: 5,\n },\n}));\n\nexport default function Chip({ label, url, color }) {\n const classes = useStyles();\n\n const style = {\n color: '#fff',\n backgroundColor: color,\n border: `1px solid ${color}`,\n fontWeight: 'bold',\n fontSize: 14,\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: 4,\n paddingRight: 4,\n };\n\n return (\n \n
\n {label}\n
\n \n );\n}\n\nChip.propTypes = {\n label: PropTypes.string,\n color: PropTypes.string,\n url: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Chip from './Chip';\n\nexport default function TagChip({\n data,\n}) {\n const [value, setValue] = useState();\n\n useEffect(() => {\n if (!data) return;\n\n if (data.label) {\n if (data.subcategory) {\n setValue(`[${data.subcategory}] ${data.label}`);\n } else {\n setValue(data.label);\n }\n } else {\n // db lookup\n }\n }, [data]);\n\n if (!value) return null;\n\n return (\n \n );\n}\n\nTagChip.propTypes = {\n data: PropTypes.shape({\n label: PropTypes.string,\n subcategory: PropTypes.string,\n color: PropTypes.string,\n }),\n target: PropTypes.string,\n};\n","import {\n getTagsByCategoryBySubcategory,\n // listTags,\n} from 'graphql/queries';\nimport {\n createTag,\n createRestaurantTag,\n deleteRestaurantTag,\n createRestaurantMealTag,\n deleteRestaurantMealTag,\n createElderTag,\n deleteElderTag,\n} from 'graphql/mutations';\nimport TagChip from './TagChip';\n\nexport const getPropsByMode = (mode) => {\n let listOptionsQueryName;\n let listOptionsQueryOptions = {};\n let createQueryName;\n let key;\n let linkKey;\n let createJoinDataQueryName;\n let deleteJoinDataQueryName;\n let chip;\n let freeSolo = false;\n const [category, subcategory] = mode.split('-');\n switch (category) {\n case '餐廳':\n key = 'tagId';\n linkKey = 'restaurantId';\n listOptionsQueryName = getTagsByCategoryBySubcategory;\n listOptionsQueryOptions = {\n category,\n subcategory: { eq: subcategory },\n };\n createQueryName = createTag;\n createJoinDataQueryName = createRestaurantTag;\n deleteJoinDataQueryName = deleteRestaurantTag;\n chip = TagChip;\n break;\n case '餐點':\n key = 'tagId';\n linkKey = 'restaurantMealId';\n listOptionsQueryName = getTagsByCategoryBySubcategory;\n listOptionsQueryOptions = {\n category,\n subcategory: { eq: subcategory },\n };\n createQueryName = createTag;\n createJoinDataQueryName = createRestaurantMealTag;\n deleteJoinDataQueryName = deleteRestaurantMealTag;\n chip = TagChip;\n break;\n case '送餐對象':\n key = 'tagId';\n linkKey = 'elderId';\n listOptionsQueryName = getTagsByCategoryBySubcategory;\n listOptionsQueryOptions = {\n category,\n subcategory: { eq: subcategory },\n };\n createQueryName = createTag;\n createJoinDataQueryName = createElderTag;\n deleteJoinDataQueryName = deleteElderTag;\n chip = TagChip;\n freeSolo = true;\n break;\n default:\n }\n return {\n key,\n chip,\n linkKey,\n listOptionsQueryName,\n listOptionsQueryOptions,\n createQueryName,\n createJoinDataQueryName,\n deleteJoinDataQueryName,\n freeSolo,\n };\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Chip from '@material-ui/core/Chip';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport FormHelperText from '@material-ui/core/FormHelperText';\n\nimport { asyncListAll } from 'utilities/graph';\nimport { getPropsByMode } from './helpers';\n\nexport default function DataJoinEditorInput({\n title = '',\n showHelperText = true,\n mode = '',\n defaultValues,\n onChange,\n onUpdateOptions,\n disabled,\n freeSolo: inFreeSolo = true,\n variant = 'standard',\n loadOnOpen = false,\n fullWidth = false,\n options = [],\n}) {\n const [allOptions, setAllOptions] = useState([]);\n const [displayedOptions, setDisplayedOptions] = useState([]);\n const [values, setValues] = useState(defaultValues);\n const [freeSolo, setFreeSolo] = useState(inFreeSolo);\n const [isOpen, setIsOpen] = useState(false);\n\n const handleChange = (event, values) => {\n const newValues = values.map((value) => value.replace(/^新增:/, ''));\n setValues([...newValues]);\n onChange(newValues.map((value) => {\n return allOptions.find(({ label }) => label === value) || {\n label: value,\n };\n }));\n };\n\n useEffect(() => {\n if (allOptions.length !== 0) {\n setDisplayedOptions(allOptions\n .map((option) => option.label)\n .sort((a, b) => a > b ? 1 : -1));\n }\n }, [allOptions]);\n\n useEffect(() => {\n if (options?.length !== 0) {\n if (options) {\n setDisplayedOptions(options\n .map((option) => option.label)\n .sort((a, b) => a > b ? 1 : -1));\n }\n }\n }, [options]);\n\n useEffect(() => {\n if (loadOnOpen && !isOpen) return;\n\n if (!mode) return;\n\n (async () => {\n const {\n listOptionsQueryName,\n listOptionsQueryOptions,\n freeSolo,\n } = getPropsByMode(mode);\n const results = await asyncListAll(listOptionsQueryName, { ...listOptionsQueryOptions, limit: 1000 });\n\n setAllOptions(results);\n\n if (!freeSolo) {\n setFreeSolo(false);\n }\n\n if (onUpdateOptions) {\n onUpdateOptions(results);\n }\n })();\n }, [mode, loadOnOpen, isOpen]);\n\n if (!defaultValues) return null;\n\n return (\n \n \n value.map((option, index) => (\n \n ))\n }\n renderInput={(params) => (\n \n )}\n onChange={handleChange}\n disabled={disabled}\n aria-describedby=\"tags-filled-helper-text\"\n onOpen={()=>{\n setIsOpen(true);\n }}\n fullWidth={fullWidth}\n filterOptions={(options, params) => {\n const filtered = options.filter((option) =>\n option.toLowerCase().includes(params.inputValue.toLowerCase()),\n );\n if (params.inputValue !== '' && freeSolo) {\n if (!filtered.find((option) => option === params.inputValue)) {\n filtered.push(`新增:${params.inputValue}`);\n }\n }\n return filtered;\n }}\n noOptionsText='沒有符合所輸入的選項'\n renderOption={(option) => {\n const description = options?.find(({ label }) => label === option)?.description;\n if (description) {\n return (\n
\n {option}\n {description}\n
\n );\n }\n return (\n \n {option}\n \n );\n }}\n />\n {showHelperText &&\n 幫助}\n
\n );\n}\n\nDataJoinEditorInput.propTypes = {\n projectId: PropTypes.string,\n title: PropTypes.string,\n mode: PropTypes.string,\n defaultValues: PropTypes.array,\n onChange: PropTypes.func,\n onUpdateOptions: PropTypes.func,\n disabled: PropTypes.bool,\n freeSolo: PropTypes.bool,\n showHelperText: PropTypes.bool,\n variant: PropTypes.string,\n loadOnOpen: PropTypes.bool,\n fullWidth: PropTypes.bool,\n options: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport TimePicker from 'react-time-picker';\nimport moment from 'moment-timezone';\nimport { getTranslatedMealSlots } from 'utilities/translate';\n\nimport { TIME_ZONE, MONTHS, WEEKDAYS_LONG, WEEKDAYS_SHORT } from '@silvergatedelivery/constants';\n\n// const TIME_ZONE = 'Asia/Taipei';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n minHeight: 300,\n },\n summary: {\n padding: theme.spacing(1),\n marginTop: -12,\n },\n}));\n\n// https://react-day-picker.js.org/examples/months-restrict\n\nconst dayMapping = [\n 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday',\n];\n\nexport default function MealDateSelector({\n mealSlot = 'lunch',\n defaultSelectedDays = [],\n forceUpdateDefaultSelectedDays = false,\n onChange,\n unlockDates = false,\n openingHours = [],\n holidays = [],\n dateOnly = false,\n excludeToday = false,\n}) {\n const classes = useStyles();\n\n const defaultTime = (mealSlot === 'lunch' ? '12:00' : '18:00');\n const { label: mealSlotTitle } = getTranslatedMealSlots().find(({ value }) => value === mealSlot);\n\n const [hasSetDefault, setHasSetDefault] = useState(false);\n const [selectedDays, setSelectedDays] = useState([]);\n const [time, setTime] = useState(defaultTime);\n const [month, setMonth] = useState();\n const [shiftKeyPressed, setShiftKeyPressed] = useState(false);\n const [rangeSelectStart, setRangeSelectStart] = useState();\n\n useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === 'Shift') {\n setShiftKeyPressed(true);\n }\n };\n\n const handleKeyUp = (event) => {\n if (event.key === 'Shift') {\n setShiftKeyPressed(false);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n useEffect(() => {\n if (!forceUpdateDefaultSelectedDays && hasSetDefault) return;\n\n setHasSetDefault(true);\n\n setSelectedDays([...defaultSelectedDays.map((x) => new Date(x))]);\n\n if (defaultSelectedDays[0]) {\n const newTime = moment(defaultSelectedDays[0]).tz(TIME_ZONE).format('HH:mm');\n setTime(newTime);\n if (!month) { // 當defaultSelectedDays裡有多個月份時,例如有1月和2月, 讓月曆的月份不會在點選2月時後自動跳回1月\n setMonth(new Date(defaultSelectedDays[0]));\n }\n } else {\n setTime(defaultTime);\n setMonth(new Date());\n }\n }, [defaultSelectedDays, hasSetDefault, forceUpdateDefaultSelectedDays]);\n\n const updateSelectedDays = (time, selectedDays) => {\n if (!time) return;\n\n const [hour, minute] = time.split(':');\n const days = selectedDays.map((day) => {\n const dayItem = moment(day).tz(TIME_ZONE);\n dayItem.set({\n hour,\n minute,\n second: 0,\n millisecond: 0,\n });\n if (dateOnly) {\n return dayItem.format('YYYY-MM-DD');\n }\n return dayItem.toISOString();\n }).sort();\n if (onChange) {\n onChange(days);\n }\n };\n\n // useEffect(() => {\n // // alter the time based on the selected delivery time\n // }, [time, selectedDays, onChange]);\n\n const handleDayClick = (day, { selected, disabled }) => {\n if (disabled) return;\n\n if (selected) {\n const selectedIndex = selectedDays.findIndex((selectedDay) => DateUtils.isSameDay(selectedDay, day));\n selectedDays.splice(selectedIndex, 1);\n } else {\n selectedDays.push(day);\n if (!shiftKeyPressed) {\n setRangeSelectStart(day);\n }\n if (shiftKeyPressed && rangeSelectStart && !DateUtils.isSameDay(day, rangeSelectStart)) {\n let startDay = rangeSelectStart;\n let endDay = day;\n if (rangeSelectStart > day) {\n startDay = day;\n endDay = rangeSelectStart;\n }\n const dayList = [];\n for (const currentDate = new Date(startDay); currentDate <= endDay; currentDate.setDate(currentDate.getDate() + 1)) {\n dayList.push(new Date(currentDate));\n }\n dayList.forEach((day) => {\n if (selectedDays.findIndex((selectedDay) => DateUtils.isSameDay(selectedDay, day)) === -1) {\n selectedDays.push(day);\n }\n });\n }\n }\n setSelectedDays([...selectedDays]);\n updateSelectedDays(time, selectedDays);\n };\n\n const onPickTime = (newTime) => {\n const time = newTime || defaultTime;\n setTime(time);\n updateSelectedDays(time, selectedDays);\n };\n\n const timeInSlot = (startTime, endTime, toCheck) => {\n const toMinutes = (time) => {\n const [hours, minutes] = time.split(':').map(Number);\n return hours * 60 + minutes;\n };\n return toMinutes(toCheck) >= toMinutes(startTime) && toMinutes(toCheck) <= toMinutes(endTime);\n };\n\n const modifiers = {\n today: new Date(),\n holiday: (day) => {\n if (holidays && holidays.length !== 0) {\n const dateItem = moment(day).tz(TIME_ZONE);\n const date = dateItem.format('YYYY-MM-DD');\n const year = dateItem.year();\n const holidaysToCheck = holidays.find(\n (holiday) => holiday.year === year,\n );\n if (holidaysToCheck && holidaysToCheck.closedDays.length !== 0) {\n if (holidaysToCheck.closedDays.includes(date)) {\n return true;\n }\n }\n }\n if (!openingHours || Object.keys(openingHours).length === 0 ||\n Object.keys(openingHours).every((key) => openingHours[key].length === 0)) {\n return false;\n }\n const openingHour = openingHours[dayMapping[day.getDay()]];\n if (openingHour.length === 0) {\n return true;\n }\n if (mealSlot === 'lunch') {\n return !openingHour.some((slot)=> timeInSlot(slot.startTime, slot.endTime, '12:00'));\n } else if (mealSlot === 'dinner') {\n return !openingHour.some((slot)=> timeInSlot(slot.startTime, slot.endTime, '18:00'));\n }\n return false;\n },\n };\n\n const modifiersStyles = {\n today: {\n color: 'black',\n border: '2px solid blue',\n },\n holiday: {\n color: 'red',\n },\n };\n\n const today = new Date();\n const tomorrow = new Date(today);\n tomorrow.setDate(today.getDate() + 1);\n\n return (\n \n \n
\n {!dateOnly &&\n }\n
\n {!dateOnly && mealSlotTitle} 天數:{selectedDays.length}\n
\n \n );\n}\n\nMealDateSelector.propTypes = {\n mealSlot: PropTypes.string,\n defaultSelectedDays: PropTypes.array,\n onChange: PropTypes.func,\n forceUpdateDefaultSelectedDays: PropTypes.bool,\n unlockDates: PropTypes.bool,\n openingHours: PropTypes.object,\n holidays: PropTypes.array,\n dateOnly: PropTypes.bool,\n excludeToday: PropTypes.bool,\n};\n","import i18n from 'i18next';\n\nconst boardTranslation = {\n 'Add another lane': `新增${i18n.t('送餐群組')}`,\n 'Click to add card': 'Click to add card',\n 'Copy lane': `複製${i18n.t('送餐群組')}`,\n 'Delete lane': `刪除${i18n.t('送餐群組')}`,\n 'Lane actions': '修改',\n 'button': {\n 'Add lane': `新增${i18n.t('送餐群組')}`,\n 'Add card': 'Add card',\n 'Cancel': '取消',\n },\n 'placeholder': {\n 'title': '名稱',\n 'description': '描述',\n 'label': 'label',\n },\n};\n\nexport default boardTranslation;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Storage } from 'aws-amplify';\n\nimport Avatar from '@material-ui/core/Avatar';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n border: '1px solid rgba(255,255,255,0.3)',\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n },\n}));\n\nexport default function DeliveryStaffOrderPhoto({ s3Key }) {\n const classes = useStyles();\n\n const [uri, setUri] = useState();\n\n useEffect(() => {\n (async () => {\n setUri(await Storage.get(s3Key));\n })();\n }, [s3Key]);\n\n return (\n window.open(uri, '_blank')}\n />\n );\n}\n\nDeliveryStaffOrderPhoto.propTypes = {\n s3Key: PropTypes.string.isRequired,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Typography from '@material-ui/core/Typography';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n // minWidth: 480,\n },\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}));\n\nconst CustomDialogTitle = ({ children, onClose, ...other }) => {\n const classes = useStyles();\n return (\n \n {children}\n {onClose ? (\n \n \n \n ) : null}\n \n );\n};\n\nCustomDialogTitle.propTypes = {\n children: PropTypes.node,\n onClose: PropTypes.func,\n};\n\nexport default function DetailFormDialog({\n children,\n title = '新增資料',\n openOnInit = false,\n onClose,\n hideCloseButton = false,\n fullScreen = false,\n maxWidth = 'md',\n exitConfirm = false,\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState(openOnInit);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n if (exitConfirm && !window.confirm('確定要關閉嗎?')) {\n return;\n }\n setOpen(false);\n onClose && onClose();\n };\n\n return (\n \n \n \n {title}\n \n \n {children}\n \n \n \n );\n}\n\nDetailFormDialog.propTypes = {\n children: PropTypes.element,\n title: PropTypes.string,\n openOnInit: PropTypes.bool,\n onClose: PropTypes.func,\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n exitConfirm: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useDropzone } from 'react-dropzone';\nimport { Storage } from 'aws-amplify';\nimport IconButton from '@material-ui/core/IconButton';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n imgContainer: {\n position: 'relative',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[300],\n // backgroundColor: '#000',\n },\n}));\n\nexport default function ImageGalleryUploader({\n s3Prefix,\n s3Keys = [],\n onUpdateS3Keys,\n}) {\n const classes = useStyles();\n\n const [isLoading, setIsLoading] = useState(false);\n const [files, setFiles] = useState([]);\n\n const {\n getRootProps,\n getInputProps,\n } = useDropzone({\n async onDrop(newFiles) {\n setIsLoading(true);\n global.logger.debug('onDrop', newFiles);\n\n if (newFiles.length === 0) return;\n\n await Promise.all(newFiles.map(async (file) => {\n const s3Key = `${s3Prefix}/${file.name}`;\n await Storage.put(s3Key, file, {\n contentType: file.type,\n });\n\n s3Keys.push(s3Key);\n files.push({\n s3Key,\n url: URL.createObjectURL(file),\n });\n }));\n\n setFiles([...files]);\n onUpdateS3Keys(s3Keys);\n setIsLoading(false);\n },\n accept: 'image/*',\n });\n\n const onRemoveFile = async (s3Key) => {\n setIsLoading(true);\n await Storage.remove(s3Key);\n const fileIndex = files.findIndex((file) => file.s3Key === s3Key);\n files.splice(fileIndex, 1);\n\n const s3KeyIndex = s3Keys.findIndex((key) => key === s3Key);\n s3Keys.splice(s3KeyIndex, 1);\n\n setFiles([...files]);\n onUpdateS3Keys(s3Keys);\n setIsLoading(false);\n };\n\n useEffect(() => {\n (async () => {\n const files = await Promise.all(s3Keys.map(async (s3Key) => {\n return {\n s3Key,\n url: await Storage.get(s3Key),\n };\n }));\n\n setFiles(files);\n })();\n }, [s3Keys]);\n\n return (\n \n \n
\n
\n \n {isLoading &&

}\n {!isLoading &&

點此或拖曳上傳圖片

}\n
\n
\n
\n {files.map(({ s3Key, url }, index) => (\n \n onRemoveFile(s3Key)}\n disabled={isLoading}\n >\n \n \n \"image\" e.target.src = '/images/fallback.webp'} />\n \n ))}\n
\n );\n}\n\nImageGalleryUploader.propTypes = {\n s3Prefix: PropTypes.string,\n s3Keys: PropTypes.array,\n onUpdateS3Keys: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Storage } from 'aws-amplify';\n\nimport Avatar from '@material-ui/core/Avatar';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n border: '1px solid rgba(255,255,255,0.3)',\n },\n}));\n\nexport default function ImagePreviewAvatar({ imageS3Keys = [], alt = '無' }) {\n const classes = useStyles();\n\n const [uri, setUri] = useState('');\n const [s3Key, setS3Key] = useState();\n\n useEffect(() => {\n (async () => {\n setUri(await Storage.get(s3Key));\n })();\n }, [s3Key]);\n\n useEffect(() => {\n global.logger.debug('imageS3Keys', imageS3Keys);\n if (Array.isArray(imageS3Keys) && imageS3Keys.length > 0) {\n setS3Key(imageS3Keys[0]);\n }\n }, [imageS3Keys]);\n\n return (\n \n );\n}\n\nImagePreviewAvatar.propTypes = {\n imageS3Keys: PropTypes.array,\n alt: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\n\nexport default function LinearProgressWithLabel(props) {\n return (\n \n \n \n \n \n {`${Math.round(\n props.value,\n )}%`}\n \n \n );\n}\n\nLinearProgressWithLabel.propTypes = {\n /**\n * The value of the progress indicator for the determinate and buffer variants.\n * Value between 0 and 100.\n */\n value: PropTypes.number.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Grid from '@material-ui/core/Grid';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n backgroundColor: '#fff',\n },\n}));\n\nexport default function Loading({ fullScreen = true }) {\n const classes = useStyles();\n\n if (fullScreen) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n \n \n );\n}\n\nLoading.propTypes = {\n fullScreen: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { GOOGLE_KEY } from 'credentials.js';\nimport { formatAddress } from 'utilities/format';\n\nconst useStyles = makeStyles((theme) => ({\n iframe: {\n border: 0,\n },\n}));\n\nexport default function Directions({ startAddress, endAddress, options = {} }) {\n const classes = useStyles();\n const [url, setUrl] = useState();\n\n const { width, height } = Object.assign({\n width: '100%',\n height: 360,\n }, options);\n\n useEffect(() => {\n if (!startAddress || !endAddress) return;\n\n const origin = startAddress.lat && startAddress.lng ?\n `${startAddress.lat},${startAddress.lng}` : formatAddress(startAddress, { ignoreNote: true, includeZipCode: false });\n const destination = endAddress.lat && startAddress.lng ?\n `${endAddress.lat},${endAddress.lng}` : formatAddress(endAddress, { ignoreNote: true, includeZipCode: false });\n\n global.logger.debug({ origin, destination });\n\n const queryParams = [\n `key=${GOOGLE_KEY}`,\n 'language=zh-TW',\n 'region=tw',\n `origin=${origin}`,\n `destination=${destination}`,\n `mode=driving`,\n `avoid=tolls|highways|ferries`,\n ].join('&');\n const url = `https://www.google.com/maps/embed/v1/directions?${queryParams}`;\n global.logger.debug(url);\n setUrl(url);\n }, [startAddress, endAddress]);\n\n if (!url) {\n return (\n
\n \n
);\n }\n\n return (\n \n );\n}\n\nDirections.propTypes = {\n options: PropTypes.object,\n startAddress: PropTypes.any,\n endAddress: PropTypes.any,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { GOOGLE_KEY } from 'credentials.js';\nimport { formatAddress } from 'utilities/format';\n\nconst useStyles = makeStyles((theme) => ({\n iframe: {\n border: 0,\n },\n}));\n\nexport default function Place({ address, options = {} }) {\n const classes = useStyles();\n const [url, setUrl] = useState();\n\n const { width, height } = Object.assign({\n width: '100%',\n height: 200,\n }, options);\n\n useEffect(() => {\n const q = (address && address.lat && address.lng) ? `${address.lat},${address.lng}` :\n formatAddress(address, { ignoreNote: true, includeZipCode: false });\n\n if (!address || !q || q === ' ') {\n setUrl();\n } else {\n const queryParams = [\n `key=${GOOGLE_KEY}`,\n 'language=zh-TW',\n 'region=tw',\n `q=${q}`,\n ].join('&');\n\n const url = `https://www.google.com/maps/embed/v1/place?${queryParams}`;\n setUrl(url);\n }\n }, [address]);\n\n if (!url) {\n return (\n
\n \n
);\n }\n\n return (\n \n );\n}\n\nPlace.propTypes = {\n options: PropTypes.object,\n address: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nimport { formatDatetime, formatDatetimeFromNow } from 'utilities/format';\nimport InfoCard from '../Card/InfoCard';\nimport AdminOrderEditButton from 'forms/AdminOrderForm/AdminOrderEditButton';\nimport { getTranslatedOrderStatus, getTranslatedMealSlots } from 'utilities/translate';\nimport { cancellationReasons } from '@silvergatedelivery/constants';\n\nexport default function OrderCard({ data: inData, onUpdate, ...props }) {\n const { t } = useTranslation();\n const [data, setData] = useState({});\n\n let orderStatusString = (getTranslatedOrderStatus().find((item) => item.value === data.status) || {}).label;\n if (data.status === 'cancelled' && data.cancellationReason) {\n const reason = (cancellationReasons.find((item) => item.value === data.cancellationReason) || {}).label || '';\n orderStatusString += ` (${reason})`;\n if (data.cancellationNote) {\n orderStatusString += ` - ${data.cancellationNote}`;\n }\n }\n const mappings = [\n { key: 'id', label: '編號' },\n { key: 'county', label: '縣市' },\n\n { key: 'deliveryBy', label: '日期時間', format: formatDatetime },\n { key: 'mealSlot', label: '區間', format: (value) => (getTranslatedMealSlots().find((item) => item.value === value) || {}).label },\n { key: 'status', label: '狀態', format: () => (orderStatusString) },\n { key: 'category', label: '類別' },\n\n { key: 'tier', label: '目前接單層級' },\n { key: 'tierExpiredAt', label: '下次更新接單層級時間', format: formatDatetimeFromNow, expand: true },\n\n { key: 'noteForMeal', label: `${t('餐點')}備註` },\n { key: 'noteForDelivery', label: `${t('送餐')}備註` },\n { key: 'note', label: '其他備註' },\n { key: 'total', label: `${t('餐點')}總金額` },\n { key: 'deliveryStaffFee', label: t('送餐費用') },\n\n { key: 'isAudited', label: '需定期檢查訂單', format: (value) => value === 0 ? '是' : '否', expand: false },\n { key: 'nextStatusCheckAt', label: '下次定期檢查訂單時間', format: formatDatetimeFromNow, expand: false },\n ];\n\n useEffect(() => {\n if (inData) {\n global.logger.debug('inData', inData);\n setData(inData);\n }\n }, [inData]);\n\n return (\n {\n setData(data);\n onUpdate && onUpdate(data);\n }}\n {...props}\n />\n );\n}\n\nOrderCard.propTypes = {\n data: PropTypes.object,\n onUpdate: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\n\nimport { formatDatetime } from 'utilities/format';\nimport InfoCard from '../Card/InfoCard';\nimport {\n deliveryStaffOrderStatus,\n} from '@silvergatedelivery/constants';\nimport DeliveryStaffOrderPhoto from 'components/DeliveryStaffOrderPhoto';\nimport { deliveryResult } from '@silvergatedelivery/constants';\n\nexport default function DeliveryStaffOrderCard({ data = {} }) {\n const { t } = useTranslation();\n const { deliveryResult: inDeliveryResult } = data || {};\n const result = (deliveryResult.find(({ value }) => value === inDeliveryResult) || {}).label;\n\n const mappings = [\n {\n key: 'status',\n label: `${t('送餐')}狀態`,\n format: (value) => {\n return value ? deliveryStaffOrderStatus.find((item) => item.value === value).label : null;\n },\n },\n { key: 'deliveryPositionUpdatedAt', label: '目前位置最後更新於', format: (value) => formatDatetime(value, { second: true }) },\n { key: 'deliveryPosition', label: '目前位置', format: (position) => position ? `${position.latitude || ''}, ${position.longitude || ''}` : '' },\n { key: 'checkListIsComplete', label: `${t('送餐')}完成${result ? '(' + result + ')' : ''}` },\n { key: 'checkListReminder', label: t('生活提醒(氣候、保暖、補充水份)') },\n { key: 'checkListChat', label: t('跟長輩聊天關心(身體、生活)') },\n { key: 'diary', label: '關懷日誌' },\n ];\n\n return (\n \n \n {\n (data.photoS3Keys || []).map((s3Key)=>(\n \n \n \n ))\n }\n \n \n );\n}\n\nDeliveryStaffOrderCard.propTypes = {\n data: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n // maxWidth: 360,\n backgroundColor: theme.palette.background.paper,\n },\n}));\n\nexport default function MealItems({ items }) {\n const classes = useStyles();\n\n return (\n \n {items.map((item, index)=>(\n \n \n \n \n \n \n ))}\n \n );\n}\n\nMealItems.propTypes = {\n items: PropTypes.array,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport {\n GoogleMap,\n LoadScript,\n Marker,\n InfoWindow,\n Polyline,\n} from '@react-google-maps/api';\n// import { Storage } from 'aws-amplify';\nimport Grid from '@material-ui/core/Grid';\n\nimport {\n formatAddress,\n formatPolyline,\n getStartEndForDeliveryTime,\n formatDeliveryPeriod,\n} from 'utilities/format';\nimport InfoCard from '../Card/InfoCard';\nimport { GOOGLE_KEY } from 'credentials.js';\nimport Directions from 'components/Map/Directions';\nimport MealItems from './MealItems';\n\nexport default function OrderDetails({ order, mode = 'static' }) {\n const { t } = useTranslation();\n const [map, setMap] = useState(null);\n const [info, setInfo] = useState();\n // const [uri, setUri] = useState();\n // const [s3Key, setS3Key] = useState();\n\n // useEffect(() => {\n // (async () => {\n // setUri(await Storage.get(s3Key));\n // })();\n // }, [s3Key]);\n\n // useEffect(() => {\n // setS3Key(`orders/${orderId}/direction.png`);\n // }, [orderId]);\n\n const {\n direction,\n deliveryBy,\n mealItems,\n noteForMeal,\n noteForDelivery,\n note,\n restaurant,\n elder,\n } = order;\n\n global.logger.debug(order);\n\n const {\n bounds,\n startAddress: googleStartAddress,\n startLocation,\n endAddress: googleEndAddress,\n endLocation,\n overviewPolyline,\n } = direction;\n\n const addressFormatOptions = {\n ignoreCountry: true,\n includeZipCode: false,\n };\n\n const startAddress = formatAddress(restaurant.address, addressFormatOptions) +\n `\\n(${restaurant.address.lat},${restaurant.address.lng})` +\n `\\n - 導航: ${googleStartAddress}` +\n `\\n(${startLocation.lat},${startLocation.lng})`;\n\n const endAddress = formatAddress(elder.address, addressFormatOptions) +\n `\\n(${elder.address.lat},${elder.address.lng})` +\n `\\n - 導航: ${googleEndAddress}` +\n `\\n(${endLocation.lat},${endLocation.lng})`;\n\n const onLoad = React.useCallback(function callback(map) {\n if (!bounds) return;\n map.fitBounds({\n north: bounds.northeast.lat,\n south: bounds.southwest.lat,\n east: bounds.northeast.lng,\n west: bounds.southwest.lng,\n });\n setMap(map);\n }, [bounds]);\n\n const onUnmount = React.useCallback(function callback(map) {\n setMap(null);\n }, []);\n\n if (!startLocation || !endLocation) return null;\n\n const mappings = [\n {\n key: 'mealItems',\n label: t('餐點'),\n format: (items) => {\n return ;\n },\n },\n { key: 'noteForMeal', label: `${t('餐點')}備註` },\n { key: 'noteForDelivery', label: `${t('送餐')}備註` },\n { key: 'note', label: '其他備註' },\n { key: 'deliveryPeriod', label: `${t('送餐')}區間` },\n { key: 'startAddress', label: t('取餐地址') },\n { key: 'endAddress', label: `${t('送餐')}地址` },\n { key: 'distance', label: '距離' },\n { key: 'duration', label: '車程' },\n ];\n const { start, end } = getStartEndForDeliveryTime(deliveryBy);\n\n const data = Object.assign({\n start,\n end,\n deliveryPeriod: formatDeliveryPeriod(start, end),\n mealItems,\n noteForMeal,\n noteForDelivery,\n note,\n }, direction, {\n startAddress,\n endAddress,\n });\n\n // TODO: Switch mode\n // use static map to reduce google api calls\n return (\n \n {\n mode === 'static' ?\n \n {/* \"地圖\" */}\n \n :\n \n \n {map && \n \n\n setInfo({ position: startLocation, content: startAddress })}\n icon={{\n url: 'http://maps.google.com/mapfiles/kml/paddle/go.png',\n scaledSize: new window.google.maps.Size(32, 32),\n }}\n />\n setInfo({ position: endLocation, content: endAddress })}\n icon={{\n url: 'http://maps.google.com/mapfiles/kml/paddle/red-circle.png',\n scaledSize: new window.google.maps.Size(32, 32),\n }}\n />\n {info &&\n setInfo(null)}\n options={{ pixelOffset: new window.google.maps.Size(0, -32) }}\n >\n
\n {info.content}\n
\n }\n
}\n \n \n }\n
);\n}\n\nOrderDetails.propTypes = {\n order: PropTypes.object,\n mode: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\n\nimport InfoCard from '../Card/InfoCard';\nimport CustomTimeline from 'components/CustomTimeline';\nimport {\n deliveryStaffOrderStatus,\n} from '@silvergatedelivery/constants';\n\nexport default function DeliveryStaffOrdersCard({ data = [], ...props }) {\n const render = (item) => (\n \n {deliveryStaffOrderStatus.find(({ value })=>value === item.status).label} {item.deliveryStaff.name}\n \n \n {item.updatedBy}\n \n );\n\n return (\n \n \n \n );\n}\n\nDeliveryStaffOrdersCard.propTypes = {\n data: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\n\nimport {\n getOrder,\n getClient,\n getDeliveryStaff,\n getDeliveryStaffOrder,\n getDeliveryStaffOrdersByOrder,\n getOrderEventsByOrderByCreatedAt,\n getPandagoOrdersByOrderByCreatedAt,\n getUberOrdersByOrderByCreatedAt,\n} from 'graphql/queries';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { Colors } from '@silvergatedelivery/constants';\n\nimport OrderCard from './OrderCard';\nimport ClientCard from '../Card/ClientCard';\nimport ElderCard from '../Card/ElderCard';\nimport RestaurantCard from '../Card/RestaurantCard';\nimport DeliveryStaffOrderCard from './DeliveryStaffOrderCard';\nimport DeliveryStaffCard from '../Card/DeliveryStaffCard';\nimport OrderDetails from './OrderDetails';\nimport OrderEventCard from './OrderEventCard';\nimport OrderStatusProgress from './OrderStatusProgress';\nimport DeliveryStaffOrdersCard from './DeliveryStaffOrdersCard';\nimport PandagoOrderTable from 'components/PandagoOrderTable';\nimport UberOrderTable from 'components/UberOrderTable';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n // minHeight: 'calc(100vh - 64px)',\n // height: '100%',\n backgroundColor: Colors.background.light,\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n space: {\n height: theme.spacing(2),\n },\n // centerContainer: {\n // paddingLeft: theme.spacing(2),\n // paddingRight: theme.spacing(2),\n // },\n}));\n\nexport default function Order({ id, onUpdate }) {\n const classes = useStyles();\n const [data, setData] = useState();\n const [client, setClient] = useState({});\n const [deliveryStaffOrder, setDeliveryStaffOrder] = useState({});\n const [deliveryStaffOrders, setDeliveryStaffOrders] = useState([]);\n const [deliveryStaff, setDeliveryStaff] = useState({});\n const [orderEvents, setOrderEvents] = useState([]);\n const [uberOrders, setUberOrders] = useState([]);\n const [pandagoOrders, setPandagoOrders] = useState([]);\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n\n useEffect(() => {\n if (!id) return;\n (async () => {\n const [\n { data: { getOrder: order } },\n ] = await Promise.all([\n request(getOrder, { id }),\n ]);\n\n setData(order);\n\n const [\n { data: { getClient: client } },\n ] = await Promise.all([\n request(getClient, { id: order.individualId || order.clientId }),\n ]);\n\n setClient(client);\n\n global.logger.debug(order);\n\n if (order.deliveryStaffId) {\n const [\n { data: { getDeliveryStaff: staff } },\n { data: { getDeliveryStaffOrder: staffOrder } },\n ] = await Promise.all([\n request(getDeliveryStaff, { id: order.deliveryStaffId }),\n request(getDeliveryStaffOrder, { id: order.deliveryStaffOrderId }),\n ]);\n\n setDeliveryStaffOrder(staffOrder || {});\n setDeliveryStaff(staff || {});\n }\n\n const [\n { data: { getDeliveryStaffOrdersByOrder: { items: staffOrders } } },\n orderEvents,\n pandagoOrders,\n uberOrders,\n ] = await Promise.all([\n request(getDeliveryStaffOrdersByOrder, { orderId: order.id }),\n asyncListAll(getOrderEventsByOrderByCreatedAt, { orderId: order.id, sortDirection: 'ASC' }),\n asyncListAll(getPandagoOrdersByOrderByCreatedAt, { orderId: order.id }),\n asyncListAll(getUberOrdersByOrderByCreatedAt, { orderId: order.id }),\n ]);\n\n setDeliveryStaffOrders(staffOrders);\n setOrderEvents(orderEvents);\n setPandagoOrders(pandagoOrders);\n setUberOrders(uberOrders);\n })();\n }, [id, lastUpdatedAt]);\n\n if (!data) return null;\n\n return (\n \n \n setLastUpdatedAt(Date.now())}\n />\n {/* TODO: order actions */}\n \n
\n \n \n {\n setLastUpdatedAt(Date.now());\n if (onUpdate) {\n onUpdate();\n }\n }}\n />\n
\n \n \n \n {/* Map, Events */}\n \n
\n {data.deliveryStaffOrderId && (\n \n \n
\n \n )}\n \n
\n \n \n \n \n
\n \n {data.deliveryStaffId &&\n \n
\n \n }\n \n \n {uberOrders.length > 0 &&\n \n \n \n \n }\n {pandagoOrders.length > 0 &&\n \n \n \n \n }\n\n \n );\n}\n\nOrder.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n onUpdate: PropTypes.func,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport OpenInNewIcon from '@material-ui/icons/OpenInNew';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\n\nimport Order from 'components/Order/Order';\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nexport default function OrderDialog({\n id,\n mode = 'button',\n open: inOpen,\n onClose,\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState();\n\n const handleClickOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n if (onClose) {\n onClose();\n } else {\n setOpen(false);\n }\n };\n\n const handleOpenOrderPage = () => {\n window.open(`/order/${id}`);\n };\n\n useEffect(() => {\n if (inOpen !== void(0)) {\n setOpen(inOpen);\n }\n }, [inOpen]);\n\n return (\n \n {!onClose && mode === 'button' &&\n }\n {!onClose && mode === 'icon' &&\n \n \n \n }\n {id && open &&\n \n \n \n \n \n \n \n 訂單\n \n {/* */}\n \n \n \n \n \n \n }\n \n );\n}\n\nOrderDialog.propTypes = {\n id: PropTypes.string,\n mode: PropTypes.string,\n open: PropTypes.bool,\n onClose: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\n\nimport CustomTimeline from 'components/CustomTimeline';\n// import { getOrderEventsByOrderByCreatedAt } from 'graphql/queries';\n// import { asyncListAll } from 'utilities/graph';\nimport InfoCard from '../Card/InfoCard';\n\n// const mockupEvents = [\n// {\n// createdAt: '2020-09-28T00:00:00.000Z',\n// content: '客戶:下單',\n// },\n// {\n// createdAt: '2020-09-29T00:00:00.000Z',\n// content: '系統:降低訂單層級至2',\n// },\n// {\n// createdAt: '2020-09-30T00:00:00.000Z',\n// content: '系統:降低訂單層級至3',\n// },\n// {\n// createdAt: '2020-10-01T01:00:00.000Z',\n// content: '大使:接單',\n// },\n// {\n// createdAt: '2020-10-01T03:00:00.000Z',\n// content: '餐廳:可以取餐',\n// },\n// {\n// createdAt: '2020-10-01T03:30:00.000Z',\n// content: '大使:送餐中',\n// },\n// {\n// createdAt: '2020-10-01T04:30:00.000Z',\n// content: '大使:已送達',\n// },\n// {\n// createdAt: '2020-10-01T06:00:00.000Z',\n// content: '大使:關懷日誌',\n// },\n// ];\n\nexport default function OrderEventCard({\n events = [],\n timelineOnly = false,\n hideDetails = false,\n hideSource = false,\n}) {\n global.logger.debug('events', events);\n const render = (item = {}) => (\n \n {item.content}\n \n {!hideSource && \n {item.createdBy}\n }\n );\n\n const Timeline = () => !content.startsWith(`{\\\"`)) /* eslint-disable-line no-useless-escape */\n .map((event) => {\n if (hideDetails) {\n event.content = event.content.split(' 送餐大使(')[0];\n }\n return event;\n })\n }\n render={render}\n />;\n\n if (timelineOnly) {\n return ();\n }\n\n return (\n \n <>\n \n \n \n );\n}\n\nOrderEventCard.propTypes = {\n events: PropTypes.array,\n timelineOnly: PropTypes.bool,\n hideDetails: PropTypes.bool,\n hideSource: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepButton from '@material-ui/core/StepButton';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport { getTranslatedOrderStatus } from 'utilities/translate';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n}));\n\nexport default function OrderStatusProgress({ status, onClick = () => {} }) {\n const classes = useStyles();\n const [activeStep, setActiveStep] = useState(0);\n const [completed, setCompleted] = useState({});\n\n const filteredOrderStatus = getTranslatedOrderStatus()\n .filter(({ step }) => step !== void 0)\n .sort((a, b) => a.step > b.step ? 1 : -1);\n\n useEffect(() => {\n const completed = filteredOrderStatus.map(({ step }) => {\n return 0 <= step && step <= activeStep;\n });\n setCompleted(completed);\n }, [activeStep]);\n\n useEffect(() => {\n if (status) {\n const matched = filteredOrderStatus.find(({ value }) => value === status);\n if (matched) {\n setActiveStep(matched.step);\n } else {\n setActiveStep(-1);\n }\n }\n }, [status]);\n\n return (\n
\n \n {filteredOrderStatus.map(({ label, color, icon }, index) => (\n \n setActiveStep(index)}\n completed={completed[index]}\n >\n \n {label}\n \n \n \n ))}\n \n
\n );\n}\n\nOrderStatusProgress.propTypes = {\n status: PropTypes.string,\n onClick: PropTypes.func,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport { request } from 'utilities/graph';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport {\n adminUpdateOrder,\n} from 'graphql/mutations';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport { toastr } from 'react-redux-toastr';\n\nexport default function ResetCancelledOrderButton({\n onUpdate,\n ordersSelected,\n}) {\n const [open, setOpen] = useState(false);\n const [progress, setProgress] = useState(0);\n\n const onResetCancelledOrder = async () => {\n const ordersCancelled = ordersSelected.current.filter((order) => order.status === 'cancelled')\n .sort((a, b) => a.date > b.date ? 1 : -1);\n let orderProcessed = 0;\n const toUpdateData = [];\n\n if (ordersCancelled.some(({ orderGroupId }) => orderGroupId)) {\n toastr.error('無法重置多點配送訂單');\n return;\n }\n\n if (ordersCancelled.length !== 0) {\n let orderDuration = `修改訂單的送餐日期範圍:${ordersCancelled[0].date} 至 ${ordersCancelled[ordersCancelled.length - 1].date}`;\n if (ordersCancelled[0].date === ordersCancelled[ordersCancelled.length - 1].date) {\n orderDuration = `修改訂單的送餐日期:${ordersCancelled[0].date}`;\n }\n if (window.confirm(`共${ordersCancelled.length}筆已取消的訂單, 確定要修改這${ordersCancelled.length}筆訂單?\\n${orderDuration}`)) {\n setOpen(true);\n const s = new Semaphore(10);\n await Promise.all(ordersCancelled.map((order) =>\n s.runExclusive(async () => {\n const data = {\n id: order.id,\n restaurantId: order.restaurantId,\n deliveryBy: order.deliveryBy,\n status: order.deliveryStaffId ? 'ready' : 'waitingForDeliveryStaff',\n tier: order.tier,\n cancellationReason: undefined,\n cancellationNote: undefined,\n };\n try {\n await request(adminUpdateOrder, { input: { orders: [data] } });\n toUpdateData.push(data);\n } catch (e) {\n console.log(e);\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / ordersCancelled.length);\n }),\n ));\n onUpdate && onUpdate(toUpdateData);\n setOpen(false);\n }\n } else {\n toastr.error('選擇的訂單中沒有已取消的訂單');\n }\n };\n\n return (\n <>\n {\n await onResetCancelledOrder();\n }}\n >\n 重置已取消的訂單\n \n \n \n 重置訂單中\n \n \n \n \n \n \n );\n}\n\nResetCancelledOrderButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport cache from 'utilities/cache';\nimport {\n getDeliveryStaffIdSchema,\n} from 'forms/schemas';\n\nexport default function DeliveryStaffSelect({ onUpdate }) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [deliveryStaffOptions, setDeliveryStaffOptions] = useState([]);\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n const clientId = cache.get('app:facilityId');\n const deliveryStaffIds = await getDeliveryStaffIdSchema(null, null, clientId, true, true);\n setDeliveryStaffOptions(deliveryStaffIds.enum.map((id, index) => ({\n id,\n name: deliveryStaffIds.enumNames[index],\n })));\n setIsLoading(false);\n })();\n }, []);\n\n return {\n onUpdate && onUpdate(value);\n }}\n getOptionLabel={(option) => option.name}\n renderInput={(params) => (\n \n {isLoading && }\n {params.InputProps.endAdornment}\n \n ),\n }}\n InputLabelProps={{\n shrink: true,\n }}\n label={t('送餐大使')}\n variant=\"standard\"\n />\n )}\n />;\n}\n\nDeliveryStaffSelect.propTypes = {\n onUpdate: PropTypes.func,\n};\n\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { request } from 'utilities/graph';\nimport {\n adminUpdateOrder,\n} from 'graphql/mutations';\nimport DeliveryStaffSelect from './DeliveryStaffSelect';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport { toastr } from 'react-redux-toastr';\n\nexport default function UpdateOrderDeliveryStaffButton({\n onUpdate,\n ordersSelected,\n noSubmit=false,\n}) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [newDeliveryStaff, setNewDeliveryStaff] = useState();\n const [progress, setProgress] = useState(0);\n\n const handleSubmit = async () => {\n if (noSubmit) {\n onUpdate && onUpdate(newDeliveryStaff.id);\n handleClose();\n return;\n }\n\n setIsLoading(true);\n const ordersUndelivered = ordersSelected.current.filter((order) => !['cancelled', 'delivered', 'completed'].includes(order.status));\n\n let orderProcessed = 0;\n const toUpdateData = [];\n const s = new Semaphore(10);\n await Promise.all(ordersUndelivered.map((order) =>\n s.runExclusive(async () => {\n const data = {\n id: order.id,\n restaurantId: order.restaurantId,\n deliveryBy: order.deliveryBy,\n status: newDeliveryStaff.id ? 'ready' : 'reMatchingDeliveryStaff',\n tier: order.tier,\n deliveryStaffId: newDeliveryStaff.id,\n };\n try {\n await request(adminUpdateOrder, { input: { orders: [data] } });\n toUpdateData.push(data);\n } catch (e) {\n console.log(e);\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / ordersUndelivered.length);\n }),\n ));\n\n onUpdate && onUpdate(toUpdateData);\n\n setIsLoading(false);\n handleClose();\n };\n\n const onUpdateDeliveryStaff = async () => {\n const ordersUndelivered = ordersSelected.current.filter((order) => !['cancelled', 'delivered', 'completed'].includes(order.status))\n .sort((a, b) => a.date > b.date ? 1 : -1);\n if (ordersUndelivered.some(({ orderGroupId }) => orderGroupId)) {\n toastr.error('無法變更多點配送訂單,請先取消該訂單');\n return;\n }\n if (ordersUndelivered.length !== 0) {\n let orderDuration = `修改訂單的送餐日期範圍:${ordersUndelivered[0].date} 至 ${ordersUndelivered[ordersUndelivered.length - 1].date}`;\n if (ordersUndelivered[0].date === ordersUndelivered[ordersUndelivered.length - 1].date) {\n orderDuration = `修改訂單的送餐日期:${ordersUndelivered[0].date}`;\n }\n if (noSubmit || window.confirm(\n `共${ordersUndelivered.length}筆未送達的訂單, 確定要修改這${ordersUndelivered.length}筆訂單?\\n${orderDuration}`)) {\n setOpen(true);\n }\n } else {\n toastr.error('選擇的訂單中沒有未送達的訂單');\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setNewDeliveryStaff(undefined);\n };\n\n const onSelectDeliveryStaff = ((newDeliveryStaff) => {\n setNewDeliveryStaff(newDeliveryStaff);\n });\n\n return (\n \n {\n await onUpdateDeliveryStaff();\n }}\n >\n {`更換${t('送餐大使')}`}\n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {!isLoading ? `更換${t('送餐大使')}` : '更新訂單中'}\n \n \n {!isLoading ?\n :\n \n }\n \n \n \n \n \n \n \n );\n}\n\nUpdateOrderDeliveryStaffButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n noSubmit: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Grid from '@material-ui/core/Grid';\nimport { asyncListAll } from 'utilities/graph';\nimport { getEldersByClientByLinkGroupName } from 'graphql/queries';\n\nexport default function LinkGroupElderSelect({\n onUpdate,\n defaultValue,\n clientId,\n linkGroupName,\n excludedElderId,\n}) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [elderOptions, setElderOptions] = useState([]);\n const [linkGroupElderIds, setLinkGroupElderIds] = useState(defaultValue || []);\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n const elders = await asyncListAll(getEldersByClientByLinkGroupName, {\n clientId,\n linkGroupName: { eq: linkGroupName },\n });\n let filteredElders = elders;\n if (excludedElderId) {\n filteredElders = elders.filter(({ id }) => id !== excludedElderId);\n }\n setElderOptions(filteredElders.map((elder) => ({\n id: elder.id,\n name: elder.name,\n })));\n setIsLoading(false);\n })();\n }, []);\n\n return (\n \n \n id)}\n value={linkGroupElderIds}\n getOptionLabel={(option) => {\n const elder = elderOptions.find(({ id }) => id === option) || {};\n return elder.name;\n }}\n filterSelectedOptions\n onChange={(event, newValue) => {\n setLinkGroupElderIds(newValue);\n onUpdate && onUpdate(newValue);\n }}\n renderInput={(params) => (\n \n )}\n />\n \n \n {isLoading && }\n \n );\n}\n\nLinkGroupElderSelect.propTypes = {\n onUpdate: PropTypes.func,\n defaultValue: PropTypes.array,\n clientId: PropTypes.string,\n linkGroupName: PropTypes.string,\n excludedElderId: PropTypes.string,\n};\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { request } from 'utilities/graph';\nimport {\n adminUpdateOrder,\n} from 'graphql/mutations';\nimport {\n getOrder,\n} from 'graphql/queries';\nimport LinkGroupElderSelect from './LinkGroupElderSelect';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport { toastr } from 'react-redux-toastr';\nimport { Typography } from '@material-ui/core';\n\nexport default function UpdateOrderLinkGroupEldersButton({\n onUpdate,\n ordersSelected,\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [linkGroupElderIds, setLinkGroupElderIds] = useState([]);\n const [progress, setProgress] = useState(0);\n const mealCount = ordersSelected.current[0] ? ordersSelected.current[0].mealItems[0].quantity : 0;\n\n const handleSubmit = async () => {\n setIsLoading(true);\n const orders = ordersSelected.current;\n\n let orderProcessed = 0;\n const toUpdateData = [];\n const s = new Semaphore(10);\n\n const orderElderId = linkGroupElderIds.shift();\n\n await Promise.all(orders.map((order) =>\n s.runExclusive(async () => {\n const data = {\n id: order.id,\n restaurantId: order.restaurantId,\n elderId: orderElderId,\n deliveryBy: order.deliveryBy,\n status: order.status,\n tier: order.tier,\n linkGroupElderIds,\n };\n try {\n await request(adminUpdateOrder, { input: { orders: [data] } });\n const { data: { getOrder: orderUpdated } } = await request(getOrder, { id: order.id });\n toUpdateData.push(orderUpdated);\n } catch (e) {\n console.log(e);\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / orders.length);\n }),\n ));\n onUpdate && onUpdate(toUpdateData);\n\n setIsLoading(false);\n handleClose();\n };\n\n const onUpdateOrder = async () => {\n const orders = ordersSelected.current;\n\n if (orders.some(({ orderGroupId }) => orderGroupId)) {\n toastr.error('無法變更多點配送訂單,請先取消該訂單');\n return;\n }\n if (orders.some(({ elder }) => !elder.linkGroupName)) {\n toastr.error('訂單的送餐對象沒有設定家庭代碼');\n return;\n }\n if (orders.some(({ elderId }) => elderId !== orders[0].elderId)) {\n toastr.error('訂單的送餐對象不一致');\n return;\n }\n\n let sameLinkGroup = false;\n if (orders[0].elder.linkGroupName &&\n orders[0].mealItems && orders[0].mealItems.length === 1 &&\n orders[0].mealItems[0].quantity > 1) {\n sameLinkGroup = orders.every((order) => {\n return order.elder.linkGroupName === orders[0].elder.linkGroupName &&\n order.mealItems.length === 1 &&\n order.mealItems[0].quantity === orders[0].mealItems[0].quantity;\n });\n } else {\n toastr.error('需要增加訂單餐點數量');\n return;\n }\n if (!sameLinkGroup) {\n toastr.error('訂單的家庭代碼或餐點數量不一致');\n return;\n }\n\n if (orders.length !== 0) {\n const sortedOrders = orders.sort((a, b) => a.date > b.date ? 1 : -1);\n let orderDuration = `修改訂單的送餐日期範圍:${sortedOrders[0].date} 至 ${sortedOrders[sortedOrders.length - 1].date}`;\n if (sortedOrders[0].date === sortedOrders[sortedOrders.length - 1].date) {\n orderDuration = `修改訂單的送餐日期:${sortedOrders[0].date}`;\n }\n if (window.confirm(`確定要修改這${orders.length}筆訂單?\\n${orderDuration}`)) {\n setOpen(true);\n }\n } else {\n toastr.error('選擇的訂單中沒有未送達的訂單');\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setLinkGroupElderIds([]);\n };\n\n const onLinkGroupElderUpdate = ((newLinkGroupElderIds) => {\n setLinkGroupElderIds(newLinkGroupElderIds);\n });\n\n return (\n \n {\n await onUpdateOrder();\n }}\n >\n {'修改家庭代碼餐點分配'}\n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {!isLoading ? '修改家庭代碼餐點分配' : '更新訂單中'}\n \n \n {ordersSelected.current[0] ? ordersSelected.current[0].elder.linkGroupName : ''}\n \n {`需分配的餐點數量: ${mealCount}`}\n \n \n 訂單將設定在第一位送餐對象\n \n {!isLoading ?\n :\n \n }\n \n \n \n \n \n \n \n );\n}\n\nUpdateOrderLinkGroupEldersButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport Grid from '@material-ui/core/Grid';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Button from '@material-ui/core/Button';\nimport AddIcon from '@material-ui/icons/Add';\nimport IconButton from '@material-ui/core/IconButton';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { getRestaurantMealsByRestaurantByIsActive } from 'forms/AdminBulkOrderForm/queries';\nimport { getDefaultMealItem } from 'forms/AdminBulkOrderForm/helpers';\nimport { getRestaurantIdSchema } from 'forms/schemas';\nimport { asyncListAll } from 'utilities/graph';\nimport { getConfigurationByCategoryByStatus } from 'graphql/queries';\nimport cache from 'utilities/cache';\n\nexport default function RestaurantMealSelect({ onUpdate }) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [restaurantOptions, setRestaurantOptions] = useState([]);\n const [restaurantIdSelected, setRestaurantIdSelected] = useState();\n const [mealItems, setMealItems] = useState([getDefaultMealItem()]);\n const [restaurantMealOptions, setRestaurantMealOptions] = useState({});\n const [orderConfigurations, setOrderConfigurations] = useState([]);\n\n const getConfigurationValues = (inConfigurationKey) => {\n try {\n const items = orderConfigurations.find(({ key }) => key === inConfigurationKey).value.split(',').map((x) => parseInt(x, 10));\n return items;\n } catch (e) {\n return [];\n }\n };\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n const clientId = cache.get('app:facilityId');\n const [restaurantIds, orderConfigurations] = await Promise.all([\n getRestaurantIdSchema(null, null, clientId, false, false),\n asyncListAll(getConfigurationByCategoryByStatus, {\n category: '訂單',\n status: { eq: '使用中' },\n })],\n );\n setOrderConfigurations(orderConfigurations);\n setRestaurantOptions(restaurantIds.enum.map((id, index) => ({\n id,\n name: restaurantIds.enumNames[index],\n })));\n setIsLoading(false);\n })();\n }, []);\n\n return (\n \n \n {\n const newRestaurantId = value.id;\n setRestaurantIdSelected(newRestaurantId);\n const mealItems = [getDefaultMealItem()];\n setMealItems(mealItems);\n if (newRestaurantId && (!restaurantMealOptions[newRestaurantId])) {\n const mealOptions = await asyncListAll(\n getRestaurantMealsByRestaurantByIsActive, { restaurantId: newRestaurantId });\n restaurantMealOptions[newRestaurantId] = mealOptions;\n setRestaurantMealOptions({ ...restaurantMealOptions });\n }\n onUpdate && onUpdate({\n restaurantId: value.id,\n mealItems,\n });\n }}\n getOptionLabel={(option) => option.name}\n renderInput={(params) => (\n \n {isLoading && }\n {params.InputProps.endAdornment}\n \n ),\n }}\n InputLabelProps={{\n shrink: true,\n }}\n label={t('餐廳')}\n variant=\"standard\"\n />\n )}\n />\n \n {mealItems && mealItems.map((mealItem, index) => {\n return (\n \n \n name)}\n values={restaurantMealOptions[restaurantIdSelected] && restaurantMealOptions[restaurantIdSelected].map(({ id }) => id)}\n required={false}\n freeSolo\n value={mealItem.name}\n label={`${t('餐點')}名稱`}\n onChange={(value)=>{\n const restaruantMeal = restaurantMealOptions[restaurantIdSelected].find(({ id }) => id === value);\n const name = (restaruantMeal ? restaruantMeal.name : value) || '';\n const cost = (restaruantMeal ? restaruantMeal.cost : 0) || 0;\n const price = (restaruantMeal ? restaruantMeal.price : 0) || 0;\n const surcharges = (restaruantMeal ? restaruantMeal.surcharges : []) || [];\n mealItems[index] = {\n name,\n quantity: mealItems[index].quantity || 1,\n price,\n cost,\n note: '',\n surcharges,\n };\n setMealItems([...mealItems]);\n onUpdate && onUpdate({ mealItems });\n }}\n />\n \n \n `${x}`)}\n getOptionLabel={(x) => `${x}`}\n values={getConfigurationValues('餐點數量選單')}\n value={mealItem.quantity}\n required={true}\n label=\"數量\"\n InputLabelProps={{ shrink: true }}\n inputProps={{ min: 0 }}\n freeSolo={true}\n onChange={(x) => {\n const value = x ? parseFloat(x) : 0;\n mealItems[index].quantity = value;\n setMealItems([...mealItems]);\n onUpdate && onUpdate({ mealItems });\n }}\n onWheel={(e) => e.currentTarget.blur()}\n />\n \n \n `${x}`)}\n getOptionLabel={(x) => `${x}`}\n values={getConfigurationValues('餐點進價選單')}\n value={mealItem.cost}\n required={true}\n label=\"進價\"\n InputLabelProps={{ shrink: true }}\n inputProps={{ min: 0 }}\n freeSolo={true}\n onChange={(x) => {\n const value = x ? parseFloat(x) : 0;\n mealItems[index].cost = value;\n setMealItems([...mealItems]);\n onUpdate && onUpdate({ mealItems });\n }}\n onWheel={(e) => e.currentTarget.blur()}\n />\n \n \n `${x}`)}\n getOptionLabel={(x) => `${x}`}\n values={getConfigurationValues('餐點價格選單')}\n value={mealItem.price}\n required={true}\n label=\"單價\"\n InputLabelProps={{ shrink: true }}\n inputProps={{ min: 0 }}\n freeSolo={true}\n onChange={(x) => {\n const value = x ? parseFloat(x) : 0;\n mealItems[index].price = value;\n setMealItems([...mealItems]);\n onUpdate && onUpdate({ mealItems });\n }}\n onWheel={(e) => e.currentTarget.blur()}\n />\n \n \n \n {\n const value = event.target.value;\n mealItems[index].note = value;\n setMealItems([...mealItems]);\n onUpdate && onUpdate({ mealItems });\n }}\n />\n \n {mealItems.length > 1 &&\n {\n mealItems.splice(index, 1);\n setMealItems([...mealItems]);\n onUpdate && onUpdate({ mealItems });\n }}\n >\n \n }\n \n \n );\n })}\n\n \n {\n mealItems.push(getDefaultMealItem());\n setMealItems([...mealItems]);\n onUpdate && onUpdate({ mealItems });\n }}\n >\n \n 新增餐點\n \n \n );\n}\n\nRestaurantMealSelect.propTypes = {\n onUpdate: PropTypes.func,\n};\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { request } from 'utilities/graph';\nimport {\n adminUpdateOrder,\n} from 'graphql/mutations';\nimport {\n getOrder,\n} from 'graphql/queries';\nimport RestaurantMealSelect from './RestaurantMealSelect';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport { toastr } from 'react-redux-toastr';\n\nexport default function UpdateOrderRestaurantButton({\n onUpdate,\n ordersSelected,\n}) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [restaurantMeal, setRestaurantMeal] = useState({});\n const [progress, setProgress] = useState(0);\n\n const handleSubmit = async () => {\n const { restaurantId, mealItems } = restaurantMeal;\n setIsLoading(true);\n const ordersUndelivered = ordersSelected.current.filter((order) => !['cancelled', 'delivered', 'completed'].includes(order.status));\n\n let orderProcessed = 0;\n const toUpdateData = [];\n const s = new Semaphore(10);\n const total = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.price * currentValue.quantity;\n }, 0);\n const totalCost = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.cost * currentValue.quantity;\n }, 0);\n await Promise.all(ordersUndelivered.map((order) =>\n s.runExclusive(async () => {\n const data = {\n id: order.id,\n restaurantId: restaurantId,\n deliveryBy: order.deliveryBy,\n status: order.status,\n tier: order.tier,\n total,\n totalCost,\n mealItems,\n };\n try {\n await request(adminUpdateOrder, { input: { orders: [data] } });\n const { data: { getOrder: orderUpdated } } = await request(getOrder, { id: order.id });\n toUpdateData.push(orderUpdated);\n } catch (e) {\n console.log(e);\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / ordersUndelivered.length);\n }),\n ));\n onUpdate && onUpdate(toUpdateData);\n\n setIsLoading(false);\n handleClose();\n };\n\n const onUpdateRestaurant = async () => {\n const ordersUndelivered = ordersSelected.current.filter((order) => !['cancelled', 'delivered', 'completed'].includes(order.status))\n .sort((a, b) => a.date > b.date ? 1 : -1);\n if (ordersUndelivered.some(({ orderGroupId }) => orderGroupId)) {\n toastr.error('無法變更多點配送訂單,請先取消該訂單');\n return;\n }\n\n if (ordersUndelivered.length !== 0) {\n let orderDuration = `修改訂單的送餐日期範圍:${ordersUndelivered[0].date} 至 ${ordersUndelivered[ordersUndelivered.length - 1].date}`;\n if (ordersUndelivered[0].date === ordersUndelivered[ordersUndelivered.length - 1].date) {\n orderDuration = `修改訂單的送餐日期:${ordersUndelivered[0].date}`;\n }\n if (window.confirm(`共${ordersUndelivered.length}筆未送達的訂單, 確定要修改這${ordersUndelivered.length}筆訂單?\\n${orderDuration}`)) {\n setOpen(true);\n }\n } else {\n toastr.error('選擇的訂單中沒有未送達的訂單');\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setRestaurantMeal({});\n };\n\n const onRestaurantMealUpdate = ((newRestaurantMeal) => {\n setRestaurantMeal({\n ...restaurantMeal,\n ...newRestaurantMeal,\n });\n });\n\n return (\n \n {\n await onUpdateRestaurant();\n }}\n >\n {`更換${t('餐廳')}`}\n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {!isLoading ? `更換${t('餐廳')}` : '更新訂單中'}\n \n \n {!isLoading ?\n :\n \n }\n \n \n \n \n \n \n \n );\n}\n\nUpdateOrderRestaurantButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n};\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport TextField from '@material-ui/core/TextField';\nimport { request } from 'utilities/graph';\nimport { getOrder } from 'graphql/queries';\nimport { adminUpdateOrder } from 'graphql/mutations';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport { toastr } from 'react-redux-toastr';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nexport default function UpdateOrderTimeButton({\n onUpdate,\n ordersSelected,\n noSubmit=false,\n}) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [progress, setProgress] = useState(0);\n const [newDeliveryTime, setNewDeliverTime] = useState('12:00');\n\n const handleSubmit = async () => {\n if (noSubmit) {\n onUpdate && onUpdate(newDeliveryTime);\n handleClose();\n return;\n }\n\n setIsLoading(true);\n const ordersUndelivered = ordersSelected.current.filter((order) => !['cancelled', 'delivered', 'completed'].includes(order.status));\n\n let orderProcessed = 0;\n const toUpdateData = [];\n const s = new Semaphore(10);\n const [newHour, newMinute] = newDeliveryTime.split(':');\n await Promise.all(ordersUndelivered.map((order) =>\n s.runExclusive(async () => {\n const newDeliveryBy = moment.tz(order.deliveryBy, TIME_ZONE).hour(newHour).minute(newMinute).toISOString();\n const data = {\n id: order.id,\n restaurantId: order.restaurantId,\n deliveryBy: newDeliveryBy,\n status: order.status,\n tier: order.tier,\n };\n try {\n await request(adminUpdateOrder, { input: { orders: [data] } });\n const { data: { getOrder: updatedOrder } } = await request(getOrder, { id: order.id });\n toUpdateData.push(updatedOrder);\n } catch (e) {\n console.log(e);\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / ordersUndelivered.length);\n }),\n ));\n onUpdate && onUpdate(toUpdateData);\n\n setIsLoading(false);\n handleClose();\n };\n\n const onUpdateDeliveryTime = async () => {\n const ordersUndelivered = ordersSelected.current.filter((order) => !['cancelled', 'delivered', 'completed'].includes(order.status))\n .sort((a, b) => a.date > b.date ? 1 : -1);\n if (ordersUndelivered.some(({ orderGroupId }) => orderGroupId)) {\n toastr.error('無法變更多點配送訂單,請先取消該訂單');\n return;\n }\n if (ordersUndelivered.length !== 0) {\n let orderDuration = `修改訂單的送餐日期範圍:${ordersUndelivered[0].date} 至 ${ordersUndelivered[ordersUndelivered.length - 1].date}`;\n if (ordersUndelivered[0].date === ordersUndelivered[ordersUndelivered.length - 1].date) {\n orderDuration = `修改訂單的送餐日期:${ordersUndelivered[0].date}`;\n }\n if (noSubmit || window.confirm(\n `共${ordersUndelivered.length}筆未送達的訂單, 確定要修改這${ordersUndelivered.length}筆訂單?\\n${orderDuration}`)) {\n setOpen(true);\n }\n } else {\n toastr.error('選擇的訂單中沒有未送達的訂單');\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setNewDeliverTime('12:00');\n };\n\n return (\n \n {\n await onUpdateDeliveryTime();\n }}\n >\n {`修改${t('送餐')}時間`}\n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {!isLoading ? `修改${t('送餐')}時間` : '更新訂單中'}\n \n \n {!isLoading ?\n {\n setNewDeliverTime(e.target.value);\n }}\n /> :\n \n }\n \n \n \n \n \n \n \n );\n}\n\nUpdateOrderTimeButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n noSubmit: PropTypes.bool,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport { request } from 'utilities/graph';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport TextField from '@material-ui/core/TextField';\nimport Grid from '@material-ui/core/Grid';\nimport {\n adminUpdateOrder,\n} from 'graphql/mutations';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport { toastr } from 'react-redux-toastr';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { cancellationReasons } from '@silvergatedelivery/constants';\n\nexport default function UpdateOrderToCancelledButton({\n onUpdate,\n ordersSelected,\n}) {\n const [open, setOpen] = useState(false);\n const [progress, setProgress] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [cancellationReason, setCancellationReason] = useState();\n const [cancellationNote, setCancellationNote] = useState();\n\n const handleClose = () => {\n setOpen(false);\n setCancellationReason();\n setCancellationNote();\n };\n\n const handleSubmit = async () => {\n let orderProcessed = 0;\n const toUpdateData = [];\n const ordersUncancelled = ordersSelected.current.filter((order) => !['completed', 'delivered', 'cancelled'].includes(order.status));\n\n setIsLoading(true);\n\n const s = new Semaphore(10);\n const orderGrouped = {};\n ordersUncancelled.forEach((order) => {\n const groupId = order.orderGroupId || order.id;\n orderGrouped[groupId] = orderGrouped[groupId] || [];\n orderGrouped[groupId].push(order);\n });\n\n await Promise.all(Object.keys(orderGrouped).map((groupId) =>\n s.runExclusive(async () => {\n const data = orderGrouped[groupId].map((order) => (\n {\n id: order.id,\n restaurantId: order.restaurantId,\n deliveryBy: order.deliveryBy,\n status: 'cancelled',\n tier: order.tier,\n cancellationReason,\n cancellationNote,\n }\n ));\n try {\n await request(adminUpdateOrder, { input: { orders: data } });\n toUpdateData.push(...data);\n } catch (e) {\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / ordersUncancelled.length);\n }),\n ));\n onUpdate && onUpdate(toUpdateData);\n\n setIsLoading(false);\n setOpen(false);\n setCancellationReason();\n setCancellationNote();\n };\n\n const onSetOrdersAsCancelled = async () => {\n const ordersUncancelled = ordersSelected.current.filter((order) => !['completed', 'delivered', 'cancelled'].includes(order.status))\n .sort((a, b) => a.date > b.date ? 1 : -1);\n if (ordersUncancelled.length !== 0) {\n let orderDuration = `修改訂單的送餐日期範圍:${ordersUncancelled[0].date} 至 ${ordersUncancelled[ordersUncancelled.length - 1].date}`;\n if (ordersUncancelled[0].date === ordersUncancelled[ordersUncancelled.length - 1].date) {\n orderDuration = `修改訂單的送餐日期:${ordersUncancelled[0].date}`;\n }\n if (window.confirm(`共${ordersUncancelled.length}筆可取消的訂單, 確定要修改這${ordersUncancelled.length}筆訂單?\\n${orderDuration}`)) {\n setOpen(true);\n }\n } else {\n window.alert(`選擇的訂單中沒有可取消的訂單`);\n }\n };\n\n return (\n <>\n {\n await onSetOrdersAsCancelled();\n }}\n >\n 標示為訂單已取消\n \n \n \n 取消訂單\n \n \n \n \n label)}\n values={cancellationReasons.map(({ value }) => value)}\n required\n value={cancellationReason}\n label={'訂單取消原因'}\n disabled={isLoading}\n onChange={(value) => setCancellationReason(value)}\n freeSolo={false}\n />\n \n \n setCancellationNote(e.target.value) }\n />\n \n \n {isLoading &&\n
\n \n
}\n
\n \n \n \n \n \n \n );\n}\n\nUpdateOrderToCancelledButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n};\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { request } from 'utilities/graph';\nimport {\n adminUpdateOrder,\n} from 'graphql/mutations';\nimport cache from 'utilities/cache';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport { toastr } from 'react-redux-toastr';\n\nexport default function UpdateOrderToCompletedButton({\n onUpdate,\n ordersSelected,\n}) {\n const { t } = useTranslation();\n const username = cache.get('app:username');\n const defaultDiary = `${username}將訂單標示為已完成`;\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [diary, setDiary] = useState(defaultDiary);\n const [progress, setProgress] = useState(0);\n\n const handleSubmit = async () => {\n setIsLoading(true);\n const ordersIncompleted = ordersSelected.current.filter((order) => order.status !== 'completed');\n let orderProcessed = 0;\n const toUpdateData = [];\n const s = new Semaphore(10);\n await Promise.all(ordersIncompleted.map((order) =>\n s.runExclusive(async () => {\n const data = {\n id: order.id,\n restaurantId: order.restaurantId,\n deliveryBy: order.deliveryBy,\n status: 'completed',\n tier: order.tier,\n diary,\n };\n try {\n await request(adminUpdateOrder, { input: { orders: [data] } });\n toUpdateData.push(data);\n } catch (e) {\n console.log(e);\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / ordersIncompleted.length);\n }),\n ));\n\n onUpdate && onUpdate(toUpdateData);\n\n setIsLoading(false);\n handleClose();\n };\n\n const onSetOrdersAsCompleted = async () => {\n const ordersIncompleted = ordersSelected.current.filter((order) => order.status !== 'completed')\n .sort((a, b) => a.date > b.date ? 1 : -1);\n if (ordersIncompleted.some(({ orderGroupId }) => orderGroupId)) {\n toastr.error('無法變更多點配送訂單,請先取消該訂單');\n return;\n }\n\n if (ordersIncompleted.length !== 0) {\n let orderDuration = `修改訂單的送餐日期範圍:${ordersIncompleted[0].date} 至 ${ordersIncompleted[ordersIncompleted.length - 1].date}`;\n if (ordersIncompleted[0].date === ordersIncompleted[ordersIncompleted.length - 1].date) {\n orderDuration = `修改訂單的送餐日期:${ordersIncompleted[0].date}`;\n }\n if (window.confirm(`共${ordersIncompleted.length}筆未完成的訂單, 確定要修改這${ordersIncompleted.length}筆訂單?\\n${orderDuration}`)) {\n setOpen(true);\n }\n } else {\n toastr.error(`選擇的訂單中沒有未完成的訂單`);\n }\n };\n\n const handleClose = () => {\n setDiary(defaultDiary);\n setOpen(false);\n };\n\n return (\n \n {\n await onSetOrdersAsCompleted(onUpdate);\n }}\n >\n 標示為訂單已完成\n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {!isLoading ? t('送餐關懷') : '更新訂單中'}\n \n \n {!isLoading ?\n setDiary(e.target.value) }\n style={{ width: 360 }}\n /> :\n \n }\n \n \n \n \n \n \n \n );\n}\n\nUpdateOrderToCompletedButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { getTranslatedOrderStatus } from 'utilities/translate';\nimport { cancellationReasons } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function OrderStatusChip({ status, reason }) {\n const classes = useStyles();\n\n const matchedOrderStatus = getTranslatedOrderStatus().find((item) => item.value === status);\n let label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n if (reason) {\n const reasonLabel = (cancellationReasons.find(({ value }) => reason === value) || {}).label;\n if (reasonLabel) {\n label += ` - ${reasonLabel}`;\n }\n }\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nOrderStatusChip.propTypes = {\n status: PropTypes.string,\n reason: PropTypes.string,\n};\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Typography from '@material-ui/core/Typography';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Grid from '@material-ui/core/Grid';\nimport { request } from 'utilities/graph';\nimport { toastr } from 'react-redux-toastr';\nimport {\n quoteMultiStopOrder, placeMultiStopOrder,\n} from 'graphql/mutations';\nimport { formatAddress } from 'utilities/format';\n\nexport default function PlaceLalamoveMultiStopButton({\n onUpdate,\n ordersSelected,\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [quoteOrderResult, setQuoteOrderResult] = useState();\n\n const handleSubmit = async () => {\n const orderIds = ordersSelected.current.map(({ id }) => id);\n setIsLoading(true);\n try {\n const { data: { placeMultiStopOrder: { message, errors, data } } } = await request(placeMultiStopOrder, { input: { orderIds } });\n if (message === 'success') {\n console.log(data);\n onUpdate && onUpdate(data);\n } else {\n toastr.error(errors[0]);\n }\n } catch (e) {\n console.log(e);\n }\n setIsLoading(false);\n handleClose();\n };\n\n const onPlaceLalamoveOrder = (onUpdate) => {\n const orders = ordersSelected.current;\n if (orders.length <= 1) {\n toastr.error('請選擇一筆以上的訂單');\n return;\n }\n\n if (orders.some((order) => order.restaurantId !== orders[0].restaurantId)) {\n toastr.error('訂單的餐廳不一致');\n return;\n }\n\n if (orders.some((order) => order.date !== orders[0].date || order.mealSlot !== orders[0].mealSlot)) {\n toastr.error('訂單的送餐時間不一致');\n return;\n }\n\n if (orders.some((order) => order.deliveryStaffId && order.status !== 'cancelled')) {\n toastr.error('有訂單已經指定送餐大使');\n return;\n }\n\n if (orders.some((order) => !['waitingForDeliveryStaff', 'reMatchingDeliveryStaff', 'cancelled'].includes(order.status))) {\n toastr.error('訂單狀態必須是配對大使中或已經取消');\n return;\n }\n\n if (orders.length !== 0) {\n const restaurantId = orders[0].restaurantId;\n const elderIds = orders.map(({ elderId }) => elderId);\n setIsLoading(true);\n request(quoteMultiStopOrder, { input: { restaurantId, elderIds } })\n .then((quoteResult) => {\n setQuoteOrderResult(quoteResult.data.quoteMultiStopOrder.data);\n setIsLoading(false);\n }).catch((error) => {\n setIsLoading(false);\n });\n setOpen(true);\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setQuoteOrderResult();\n };\n\n const convertMetersToKilometers = (meters) => {\n const kilometers = meters / 1000;\n const roundedKm = Math.round(kilometers * 10) / 10;\n return `${roundedKm}公里`;\n };\n\n return (\n \n {\n await onPlaceLalamoveOrder(onUpdate);\n }}\n >\n 使用Lalamove多點配送\n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n Lalamove 多點配送\n \n \n {!quoteOrderResult && (\n \n \n \n 估價中\n \n \n \n \n )}\n {quoteOrderResult && quoteOrderResult.code !== 'SUCCESS' && (\n \n \n \n 估價失敗\n \n \n \n \n {quoteOrderResult.message}\n \n \n \n )}\n {quoteOrderResult && quoteOrderResult.code === 'SUCCESS' && (\n \n \n \n 估價結果\n \n \n \n \n 配送費用\n \n \n {`$${quoteOrderResult.deliveryStaffFee}`}\n \n \n \n \n 配送距離\n \n \n {convertMetersToKilometers(quoteOrderResult.distance)}\n \n \n \n \n 配送順序\n \n \n \n \n \n {`${ordersSelected.current[0].restaurant.name}(餐廳)`}\n \n \n {formatAddress(ordersSelected.current[0].restaurant.address)}\n \n \n {quoteOrderResult.deliveryQueue.map((elderId) => {\n const { elder } = ordersSelected.current.find((e) => e.elderId === elderId);\n return (\n \n \n {elder.name}\n \n \n {formatAddress(elder.address, { ignoreNote: true })}\n \n \n );\n })}\n \n )}\n \n \n \n \n 確定配送\n {isLoading && (quoteOrderResult && quoteOrderResult.code === 'SUCCESS') &&\n }\n \n \n \n \n );\n}\n\nPlaceLalamoveMultiStopButton.propTypes = {\n onUpdate: PropTypes.func,\n ordersSelected: PropTypes.object,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment-timezone';\nimport shortuuid from 'short-uuid';\nimport {\n counties,\n TIME_ZONE,\n orderSources,\n orderStatus,\n cancellationReasons,\n} from '@silvergatedelivery/constants';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport DataTable from 'components/Table/DataTable';\nimport OrderDialog from 'components/Order/OrderDialog';\nimport {\n listOrders,\n getOrdersByCountyByDate,\n getOrdersByClientByDate,\n getOrdersByElderByDate,\n getOrdersByRestaurantByCreatedAt,\n getOrdersByCountyByStatus,\n getOrdersByCountyBySource,\n getOrdersByDeliveryStaffByDate,\n getOrdersByStatusByDate,\n getOrdersByRestaurantByDate,\n getRecurringOrderLogByRecurringOrderIdByDate,\n getOrder,\n} from 'graphql/queries';\nimport OrderStatusChip from 'components/OrderStatusChip';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport Order from 'components/Order/Order';\nimport LinkButton from 'components/Table/LinkButton';\nimport AdminOrderEditButton from 'forms/AdminOrderForm/AdminOrderEditButton';\nimport cache from 'utilities/cache';\nimport UpdateOrderToCompletedButton from 'components/Order/UpdateOrderToCompletedButton';\nimport UpdateOrderToCancelledButton from 'components/Order/UpdateOrderToCancelledButton';\nimport UpdateOrderDeliveryStaffButton from 'components/Order/UpdateOrderDeliveryStaffButton';\nimport UpdateOrderRestaurantButton from 'components/Order/UpdateOrderRestaurantButton';\nimport UpdateOrderTimeButton from 'components/Order/UpdateOrderTimeButton';\nimport UpdateOrderLinkGroupEldersButton from 'components/Order/UpdateOrderLinkGroupEldersButton';\nimport ResetCancelledOrderButton from 'components/Order/ResetCancelledOrderButton';\nimport PlaceLalamoveMultiStopButton from 'components/Order/PlaceLalamoveMultiStopButton';\nimport { getTranslatedOrderStatus, getTranslatedMealSlots } from 'utilities/translate';\nimport { formatAddress, formatAddressLatLng, formatTags } from 'utilities/format';\nimport { asyncListAll, request } from 'utilities/graph';\nimport Loading from 'components/Loading';\nimport deliveryStaffFeeCalculationMethod from '@silvergatedelivery/constants/src/deliveryStaffFeeCalculationMethod';\nimport { getDeliveryStaffIdSchema } from 'forms/schemas';\nimport { useCache } from 'CacheProvider';\nimport { sortBy } from 'utilities/sorting';\n\nconst lastWeek = moment().tz(TIME_ZONE).add(-7, 'days').format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\nconst nextWeek = moment().tz(TIME_ZONE).add(7, 'days').format('YYYY-MM-DD');\n\nexport default function OrderTable({\n title = '訂單',\n description,\n clientId,\n elderId,\n restaurantId,\n deliveryStaffId,\n recurringOrderId,\n queryStatus,\n defaultIndex = 0,\n orderIds: inOrderIds,\n showElderTags = false,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [data, setData] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const ordersSelected = useRef([]);\n const [deliveryStaffOptions, setDeliveryStaffOptions] = useState();\n const { appGroup } = useCache();\n let defaultQueryOrderStatus = queryStatus || cache.get('app:query:orderStatus') || 'cancelled';\n if (defaultQueryOrderStatus === 'undefined') {\n defaultQueryOrderStatus = undefined;\n }\n\n const translatedOrderStatus = getTranslatedOrderStatus();\n const notAdminMode = appGroup !== 'Admins';\n const defaultIndexes = [\n {\n name: 'getOrdersByCountyByDate',\n label: `按地區/${t('送餐')}時間/狀態查詢`,\n partitionKey: 'county',\n sortKey: 'date',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [{ value: undefined, label: '全部' }, ...translatedOrderStatus],\n }],\n operation: getOrdersByCountyByDate,\n },\n {\n name: 'getOrdersByCountyByDate',\n label: `按地區/${t('送餐')}時間/訂單來源查詢`,\n partitionKey: 'county',\n sortKey: 'date',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }, {\n label: '訂單來源',\n key: 'source',\n type: 'select',\n options: [{ value: undefined, label: '全部' }, ...orderSources],\n }],\n operation: getOrdersByCountyByDate,\n },\n {\n name: 'getOrdersByCountyByStatus',\n label: '按地區/狀態查詢',\n partitionKey: 'county',\n sortKey: 'status',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [{ value: undefined, label: '全部' }, ...translatedOrderStatus],\n }],\n operation: getOrdersByCountyByStatus,\n },\n {\n name: 'getOrdersByCountyBySource',\n label: '按地區/訂單來源查詢',\n partitionKey: 'county',\n sortKey: 'source',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n }, {\n label: '訂單來源',\n key: 'source',\n type: 'select',\n options: [{ value: undefined, label: '全部' }, ...orderSources],\n }],\n operation: getOrdersByCountyBySource,\n },\n {\n name: 'getOrdersByStatusByDate',\n label: '按狀態查詢',\n partitionKey: 'status',\n sortKey: 'date',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [{ value: undefined, label: '全部' }, ...translatedOrderStatus],\n }],\n operation: getOrdersByStatusByDate,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [{ value: undefined, label: '全部' }, ...translatedOrderStatus],\n }],\n operation: listOrders,\n },\n ];\n\n const customToolbarSelect = ({ onUpdate }) =>\n \n \n \n \n \n \n \n \n \n ;\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const id = rowData[0];\n return (\n \n \n \n );\n },\n selectableRows: 'multiple',\n isRowSelectable: () => true,\n };\n const translatedMealSlots = getTranslatedMealSlots();\n const columns = [\n {\n name: 'id',\n label: '編號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: t('取餐編號'),\n options: {\n filter: false,\n sort: true,\n customBodyRender(value) {\n return shortuuid().fromUUID(value).slice(-6);\n },\n },\n },\n {\n name: 'referenceId',\n label: '整合編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender(value) {\n return (value || '').split('-')[1] || '';\n },\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n // filterList: usePreFilter ? [cache.get('app:location')].filter((x) => x) : [],\n filter: true,\n sort: true,\n },\n },\n {\n name: 'clientId',\n label: '機構/客戶編號',\n options: {\n filter: false,\n sort: true,\n display: notAdminMode ? 'excluded' : false,\n },\n },\n {\n name: 'client.name',\n label: '機構名稱/客戶姓名',\n options: {\n filter: true,\n sort: true,\n display: notAdminMode ? 'excluded' : true,\n },\n },\n {\n name: 'tier',\n label: '目前層級',\n options: {\n filter: true,\n sort: true,\n display: false,\n },\n },\n {\n name: 'category',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n display: false,\n },\n },\n {\n name: 'elderId',\n label: `${t('送餐對象')}編號`,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elder.name',\n label: t('送餐對象'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elder.address',\n label: '送餐地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender(value) {\n return formatAddress(value);\n },\n sortCompare(order) {\n return (obj1, obj2) => {\n const addr1 = formatAddress(obj1.data);\n const addr2 = formatAddress(obj2.data);\n if (addr1 === addr2) {\n return (obj1.rowData[0] + obj1.rowData[1] > obj2.rowData[0] + obj2.rowData[1] ? 1 : -1) * (order === 'asc' ? 1 : -1);\n }\n return (addr1 > addr2 ? 1 : -1) * (order === 'asc' ? 1 : -1);\n };\n },\n },\n },\n {\n name: 'elder.address',\n label: '送餐地址經緯度',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddressLatLng,\n },\n },\n {\n name: 'elder.tags',\n label: '送餐對象標籤',\n options: {\n display: showElderTags ? true : 'excluded',\n filter: false,\n sort: false,\n customBodyRender: formatTags,\n },\n },\n {\n name: 'restaurant.name',\n label: t('餐廳'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffId',\n label: t('送餐大使'),\n options: {\n filter: false,\n sort: true,\n customBodyRender(deliveryStaffId) {\n if (deliveryStaffOptions) {\n const index = deliveryStaffOptions.enum.findIndex((id) => id === deliveryStaffId);\n if (index !== -1) {\n return deliveryStaffOptions.enumNames[index];\n }\n }\n return '';\n },\n },\n },\n {\n name: 'date',\n label: '日期',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'deliveryBy',\n label: '時間',\n type: 'time',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'mealSlot',\n label: '時段',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return translatedMealSlots.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'status',\n label: '狀態',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender: (value) => {\n return (\n \n );\n },\n filterOptions: {\n renderValue: (v) => (orderStatus.find(({ value }) => value === v) || {}).label,\n },\n customFilterListOptions: {\n render: (v) => (orderStatus.find(({ value }) => value === v) || {}).label,\n },\n },\n },\n {\n name: 'cancellationReason',\n label: '訂單取消原因',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender: (value, tableMeta, updateValue) => {\n const reason = cancellationReasons.find((reason) => reason.value === value);\n if (reason) {\n return reason.label;\n }\n return '';\n },\n },\n },\n {\n name: 'cancellationNote',\n label: '訂單取消備註',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'direction.distance',\n label: '距離',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'noteForDelivery',\n label: `${t('送餐')}備註`,\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'noteForMeal',\n label: `${t('餐點')}備註`,\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'note',\n label: '備註',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'deliveryStaffFee',\n label: t('送餐費用'),\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n display: true,\n },\n },\n {\n name: 'deliveryStaffFeeCalculationMethod',\n label: '送餐費用計算方法',\n options: {\n filter: false,\n sort: true,\n display: false,\n customBodyRender: (method) => {\n return (deliveryStaffFeeCalculationMethod.find(({ value }) => value === method) || {}).label;\n },\n },\n },\n {\n name: 'mealItems',\n label: t('餐點'),\n options: {\n filter: false,\n sort: true,\n customBodyRender: (mealItems) => {\n return mealItems.map(({ name, quantity }) => `${name} x${quantity}`).join(', ');\n },\n },\n },\n {\n name: 'totalCost',\n label: '餐點總進價',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'total',\n label: '餐點總金額',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'source',\n label: '訂單來源',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: (source) => (orderSources.find((orderSource) => orderSource.value === source) || {}).label || '',\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n // const queryFunc = async () => {\n // if (clientId) {\n // return asyncListAll(getOrdersByClientByCreatedAt, { clientId });\n // }\n\n // if (elderId) {\n // return asyncListAll(getOrdersByElderByCreatedAt, { elderId });\n // }\n\n // if (restaurantId) {\n // return asyncListAll(getOrdersByRestaurantByCreatedAt, { restaurantId });\n // }\n\n // return asyncListAll(listOrders);\n // };\n\n const updateOrdersByRecurringOrderId = () => {\n if (!recurringOrderId) return;\n setIndexes([]);\n setQueryParams({});\n setData([]);\n (async () => {\n setIsLoading(true);\n try {\n const recurringOrderLogs = await asyncListAll(getRecurringOrderLogByRecurringOrderIdByDate,\n { recurringOrderId, date: { ge: moment().tz(TIME_ZONE).format('YYYY-MM-DD') } });\n const orderIds = recurringOrderLogs.map(({ orderIds }) => orderIds).flat();\n const orders = await Promise.all(orderIds.map(async (id) => {\n const { data: { getOrder: order } } = await request(getOrder, { id });\n return order;\n }));\n setData(orders.filter(({ status }) => status !== 'cancelled'));\n } catch (e) {\n console.error(e);\n }\n setIsLoading(false);\n })();\n };\n\n const updateOrdersByOrderIds = () => {\n if (!inOrderIds || inOrderIds.length === 0) return;\n setIndexes([]);\n setQueryParams({});\n setData([]);\n (async () => {\n setIsLoading(true);\n try {\n const orders = await Promise.all(inOrderIds.map(async (id) => {\n const { data: { getOrder: order } } = await request(getOrder, { id });\n return order;\n }));\n setData(orders);\n } catch (e) {\n console.error(e);\n }\n setIsLoading(false);\n })();\n };\n\n useEffect(() => {\n if (deliveryStaffId) {\n const filterClientId = clientId || cache.get('app:facilityId');\n const indexes = [\n {\n name: 'getOrdersByDeliveryStaffByDate',\n label: `按${t('送餐大使')}查詢`,\n partitionKey: 'deliveryStaffId',\n sortKey: 'date',\n fields: [{\n label: `${t('送餐大使')}ID`,\n key: 'deliveryStaffId',\n type: 'select',\n options: [{ value: deliveryStaffId, label: deliveryStaffId }],\n disabled: true,\n size: 6,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n comparisonOperator: 'ne',\n options: [\n { value: 'cancelled', label: '排除取消的訂單' },\n { value: undefined, label: '全部' }],\n size: 6,\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }],\n operation: getOrdersByDeliveryStaffByDate,\n },\n ];\n if (filterClientId) {\n indexes[0].fields.push({\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: filterClientId, label: filterClientId }],\n disabled: true,\n });\n }\n setIndexes(indexes);\n setQueryParams({\n date: {\n from: lastWeek,\n to: nextWeek,\n },\n deliveryStaffId,\n clientId: filterClientId,\n status: defaultQueryOrderStatus,\n });\n } else\n if (restaurantId) {\n const filterClientId = clientId || cache.get('app:facilityId');\n const indexes = [\n {\n name: 'getOrdersByRestaurantByDate',\n label: `按${t('餐廳')}/送餐時間查詢`,\n partitionKey: 'restaurantId',\n sortKey: 'date',\n fields: [{\n label: `${t('餐廳')} ID`,\n key: 'restaurantId',\n type: 'select',\n options: [{ value: restaurantId, label: restaurantId }],\n disabled: true,\n size: 6,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n comparisonOperator: 'ne',\n options: [\n { value: 'cancelled', label: '排除取消的訂單' },\n { value: undefined, label: '全部' }],\n size: 6,\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }],\n operation: getOrdersByRestaurantByDate,\n },\n {\n name: 'getOrdersByRestaurantByCreatedAt',\n label: `按${t('餐廳')}/下單時間查詢`,\n partitionKey: 'restaurantId',\n sortKey: 'createdAt',\n fields: [{\n label: `${t('餐廳')} ID`,\n key: 'restaurantId',\n type: 'select',\n options: [{ value: restaurantId, label: restaurantId }],\n disabled: true,\n size: 6,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n comparisonOperator: 'ne',\n options: [\n { value: 'cancelled', label: '排除取消的訂單' },\n { value: undefined, label: '全部' }],\n size: 6,\n }, {\n label: '下單時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getOrdersByRestaurantByCreatedAt,\n },\n ];\n if (filterClientId) {\n indexes[0].fields.push({\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: filterClientId, label: filterClientId }],\n disabled: true,\n });\n indexes[1].fields.push({\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: filterClientId, label: filterClientId }],\n disabled: true,\n });\n }\n setIndexes(indexes);\n setQueryParams({\n date: {\n from: todayDate,\n to: todayDate,\n },\n createdAt: {\n from: todayDate,\n to: todayDate,\n },\n restaurantId,\n clientId: filterClientId,\n status: defaultQueryOrderStatus,\n });\n } else\n if (clientId) {\n setIndexes([\n {\n name: 'getOrdersByClientByDate',\n label: '按客戶查詢',\n partitionKey: 'clientId',\n sortKey: 'date',\n fields: [{\n label: '客戶 ID',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientId }],\n disabled: true,\n size: 6,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n comparisonOperator: 'ne',\n options: [\n { value: 'cancelled', label: '排除取消的訂單' },\n { value: undefined, label: '全部' }],\n size: 6,\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }],\n operation: getOrdersByClientByDate,\n },\n ]);\n setQueryParams({\n date: {\n from: todayDate,\n to: todayDate,\n },\n clientId,\n status: defaultQueryOrderStatus,\n });\n } else\n if (elderId) {\n setIndexes([\n {\n name: 'getOrdersByElderByDate',\n label: '按長輩查詢',\n partitionKey: 'elderId',\n sortKey: 'date',\n fields: [{\n label: '長輩 ID',\n key: 'elderId',\n type: 'select',\n options: [{ value: elderId, label: elderId }],\n disabled: true,\n size: 6,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n comparisonOperator: 'ne',\n options: [\n { value: 'cancelled', label: '排除取消的訂單' },\n { value: undefined, label: '全部' }],\n size: 6,\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }],\n operation: getOrdersByElderByDate,\n },\n ]);\n setQueryParams({\n date: {\n from: lastWeek,\n to: nextWeek,\n },\n elderId,\n status: defaultQueryOrderStatus,\n });\n } else if (recurringOrderId) {\n updateOrdersByRecurringOrderId();\n } else if (inOrderIds && inOrderIds.length !== 0) {\n updateOrdersByOrderIds();\n } else {\n setIndexes(defaultIndexes);\n setQueryParams({\n date: {\n from: todayDate,\n to: todayDate,\n },\n status: queryStatus,\n county: cache.get('app:location') || counties[0],\n });\n }\n }, [elderId, clientId, restaurantId, recurringOrderId, queryStatus, inOrderIds]);\n\n useEffect(() => {\n (async () => {\n const deliveryStaffOptions = await getDeliveryStaffIdSchema(null, null, null, true, true);\n setDeliveryStaffOptions(deliveryStaffOptions);\n })();\n }, []);\n\n const onDataSelectionChange = (dataSelected) => {\n ordersSelected.current = dataSelected;\n };\n\n const onRefresh = () => {\n if (recurringOrderId) {\n updateOrdersByRecurringOrderId();\n } else if (inOrderIds && inOrderIds.length !== 0) {\n updateOrdersByOrderIds();\n }\n };\n\n const onParamChange = (params) => {\n if (params.status !== defaultQueryOrderStatus) {\n cache.set('app:query:orderStatus', params.status);\n }\n };\n\n const customDownloadData = (columns, data) => {\n const tagIndex = columns.findIndex(({ name }) => name === 'elder.tags');\n if (tagIndex !== -1) {\n return data.map((value) => {\n if (value?.data[tagIndex]?.items) {\n value.data[tagIndex] = value.data[tagIndex].items\n .map(({ tag }) => tag)\n .sort(sortBy('name'))\n .sort(sortBy('subcategory'))\n .sort(sortBy('category'))\n .map((tag) => tag.label).join('、');\n }\n return value;\n });\n }\n return data;\n };\n\n if (!indexes || !queryParams) return null;\n\n if (isLoading) {\n return ();\n }\n\n return (\n \n \n );\n}\n\nOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n clientId: PropTypes.string,\n elderId: PropTypes.string,\n deliveryStaffId: PropTypes.string,\n restaurantId: PropTypes.string,\n recurringOrderId: PropTypes.string,\n defaultIndex: PropTypes.number,\n queryStatus: PropTypes.string,\n orderIds: PropTypes.array,\n showElderTags: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { pandagoOrderStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function PandagoOrderStatusChip({ status }) {\n const classes = useStyles();\n\n const matchedOrderStatus = pandagoOrderStatus.find((item) => item.value === status);\n const label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nPandagoOrderStatusChip.propTypes = {\n status: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport PandagoOrderStatusChip from 'components/PandagoOrderStatusChip';\n\nexport default function PandagoOrderLogTable({\n title = '訂單更新紀錄',\n description,\n data,\n ...props\n}) {\n const options = {\n rowsPerPageOptions: [5, 10, 20, 50],\n rowsPerPage: 5,\n };\n\n const columns = [\n {\n name: 'client_order_id',\n label: '訂單編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'order_id',\n label: '編號',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'timeline.estimated_pickup_time',\n label: '預計取餐時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'timeline.estimated_delivery_time',\n label: '預計送達時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'driver.id',\n label: '送餐員 ID',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'driver.name',\n label: '送餐員 名字',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'driver.phone_number',\n label: '送餐員 電話',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'created_at',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updated_at',\n label: '更新於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n ];\n\n return (\n \n \n \n );\n}\n\nPandagoOrderLogTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport ReactJson from 'react-json-view';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listPandagoOrders,\n getPandagoOrdersByStatusByShouldBeSentToPandago,\n getPandagoOrdersByProcessStatusByShouldBeSentToPandago,\n getPandagoOrdersByOrderByCreatedAt,\n} from 'graphql/queries';\nimport Order from 'components/Order/Order';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport {\n // LAUNCH_DATE,\n TIME_ZONE,\n pandagoOrderStatus,\n processStatus,\n} from '@silvergatedelivery/constants';\nimport ProcessStatusChip from 'components/ProcessStatusChip';\nimport PandagoOrderStatusChip from 'components/PandagoOrderStatusChip';\nimport PandagoOrderLogTable from './PandagoOrderLogTable';\nimport ImagePreviewAvatar from 'components/ImagePreviewAvatar';\n\n// const past = moment(LAUNCH_DATE).tz(TIME_ZONE).format('YYYY-MM-DD');\nconst past = moment().add(-3, 'days').tz(TIME_ZONE).format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function PandagoOrderTable({\n title = 'Pandago 訂單',\n description,\n orderId,\n data,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [showQueryGenerator, setShowQueryGenerator] = useState(true);\n const [showNestedOrder, setShowNestedOrder] = useState(true);\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const [x, orderId, processlogs] = rowData; // eslint-disable-line no-unused-vars\n\n return (\n \n \n {showNestedOrder && }\n \n );\n },\n };\n\n const columns = [\n {\n name: 'proofOfDeliveryS3Key',\n label: '送達證明',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(proofOfDeliveryS3Key) {\n return (\n \n );\n },\n },\n },\n {\n name: 'orderId',\n label: '訂單編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'processlogs',\n label: '紀錄',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'id',\n label: '編號',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'processStatus',\n label: '處理狀況',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'processStatusMessage',\n label: '處理資訊',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'trackingLink',\n label: '追蹤網頁',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(trackingLink) {\n if (!trackingLink) {\n return;\n }\n return (\n \n );\n },\n },\n },\n {\n name: 'cancelledReason',\n label: '取消原因',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '描述',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'paymentMethod',\n label: '付款方式',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'amount',\n label: '訂單金額',\n type: 'currency',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'fee',\n label: '送餐費用',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'shouldBeSentToPandagoAt',\n label: '預計送單時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'estimatedPickupTime',\n label: '預計取餐時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'estimatedDeliveryTime',\n label: '預計送達時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'driver',\n label: '送餐員',\n options: {\n filter: true,\n sort: true,\n customBodyRender({ id, name, phoneNumber }) {\n if (id === 'N/A') return '';\n\n return `${name} ${phoneNumber}`;\n },\n },\n },\n {\n name: 'pandagoOrderPayload',\n label: 'Payload',\n options: {\n display: false,\n filter: false,\n sort: false,\n customBodyRender(data) {\n if (!data) return '';\n\n return ;\n },\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderId',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n if (data) {\n setShowQueryGenerator(false);\n setShowNestedOrder(false);\n return;\n }\n if (orderId) {\n setShowQueryGenerator(false);\n setShowNestedOrder(false);\n setIndexes([\n {\n name: 'getPandagoOrdersByOrderByCreatedAt',\n label: '按訂單查詢',\n partitionKey: 'orderId',\n sortKey: 'createdAt',\n fields: [{\n label: '訂單編號',\n key: 'orderId',\n }],\n operation: getPandagoOrdersByOrderByCreatedAt,\n },\n ]);\n setQueryParams({\n orderId,\n createdAt: {\n from: past,\n to: todayDate,\n },\n });\n return;\n }\n setIndexes([\n {\n name: 'getPandagoOrdersByProcessStatusByShouldBeSentToPandago',\n label: '按處理狀況查詢',\n partitionKey: 'processStatus',\n sortKey: 'shouldBeSentToPandagoAt',\n fields: [{\n label: '處理狀況',\n key: 'processStatus',\n type: 'select',\n options: processStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToPandagoAt',\n type: 'datetime',\n }],\n operation: getPandagoOrdersByProcessStatusByShouldBeSentToPandago,\n },\n {\n name: 'getPandagoOrdersByStatusByShouldBeSentToPandago',\n label: '按Pandago狀態查詢',\n partitionKey: 'status',\n sortKey: 'shouldBeSentToPandagoAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: pandagoOrderStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToPandagoAt',\n type: 'datetime',\n }],\n operation: getPandagoOrdersByStatusByShouldBeSentToPandago,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '預計送單時間',\n key: 'shouldBeSentToPandagoAt',\n type: 'datetime',\n }],\n operation: listPandagoOrders,\n },\n ]);\n setQueryParams({\n processStatus: 'processing',\n shouldBeSentToPandagoAt: {\n from: past,\n to: todayDate,\n },\n });\n }, [data, orderId]);\n\n return (\n \n \n \n );\n}\n\nPandagoOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n orderId: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport querystring from 'query-string';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Backdrop from '@material-ui/core/Backdrop';\n\nimport { request } from 'utilities/graph';\nimport { linePayGetPaymentUrl, linePayConfirmTransaction } from 'graphql/mutations';\nimport cache from 'utilities/cache';\nimport amplifyConfig from '../../aws-exports';\n\nexport default function LinePayButton({\n order = {},\n redirectPath,\n onComplete,\n disabled,\n reportLoading,\n textButton = false,\n}) {\n const [isLoading, setIsLoading] = useState(true);\n\n const handleClick = async () => {\n setIsLoading(true);\n reportLoading(true);\n cache.set('public:menu-payment-service', 'linepay');\n try {\n const clientId = cache.get('app:clientId');\n const {\n subTotal,\n discount,\n discountRule,\n amount,\n description,\n category,\n items,\n deliveryStaffFee,\n } = order;\n\n const { data: { linePayGetPaymentUrl: { data: linePayGetPaymentUrlResult } } } = await request(linePayGetPaymentUrl, {\n input: {\n clientId,\n subTotal,\n discount,\n discountRule,\n amount,\n description,\n category,\n items,\n redirectPath,\n deliveryStaffFee,\n },\n });\n\n const {\n transactionId,\n orderId,\n linePayTransactionId,\n linePayPaymentUrlWeb,\n linePayPaymentUrlApp,\n } = JSON.parse(linePayGetPaymentUrlResult);\n\n global.logger.debug({\n transactionId,\n orderId,\n linePayTransactionId,\n linePayPaymentUrlWeb,\n linePayPaymentUrlApp,\n });\n\n cache.set('linepay:pending-transactionId', transactionId);\n\n // open payment url in web\n if (window.mobileCheck()) {\n const envName = amplifyConfig.aws_cloud_logic_custom[0].endpoint.split('/').pop();\n // 在手機上不能用linePayPaymentUrlApp操作sandbox,會顯示載入失敗\n if (envName === 'production') {\n window.open(linePayPaymentUrlApp, '_self');\n } else {\n window.open(linePayPaymentUrlWeb, '_self');\n }\n } else {\n window.open(linePayPaymentUrlWeb, '_self');\n }\n } catch (e) {\n global.logger.error(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n reportLoading(false);\n }, 1000);\n }\n };\n\n const handleConfirm = async (linePayTransactionId, orderId) => {\n setIsLoading(true);\n reportLoading(true);\n try {\n const transactionId = cache.get('linepay:pending-transactionId');\n\n const { data: { linePayConfirmTransaction: { data: linePayConfirmTransactionResult } } } = await request(linePayConfirmTransaction, {\n input: {\n transactionId,\n linePayTransactionId,\n },\n });\n\n const {\n status,\n } = JSON.parse(linePayConfirmTransactionResult);\n\n global.logger.debug({\n status,\n });\n if (status === 'approved') {\n // cache.set('linepay:pending-transactionId', '');\n onComplete({ id: transactionId });\n }\n } catch (e) {\n global.logger.error(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n reportLoading(false);\n }, 1000);\n }\n };\n\n useEffect(() => {\n const { transactionId: linePayTransactionId, orderId } = querystring.parse(window.location.search);\n const paymentService = cache.get('public:menu-payment-service');\n if (paymentService === 'linepay' && linePayTransactionId && orderId) {\n return handleConfirm(linePayTransactionId, orderId);\n } else {\n setIsLoading(false);\n reportLoading(false);\n }\n }, []);\n\n return (\n
\n {textButton ?\n \n 確認付款(LINE Pay)\n {isLoading && \n \n }\n :\n \n \n {isLoading && \n \n }\n }\n
\n );\n}\n\nLinePayButton.propTypes = {\n disabled: PropTypes.bool,\n order: PropTypes.object,\n onComplete: PropTypes.func,\n redirectPath: PropTypes.string,\n reportLoading: PropTypes.func,\n textButton: PropTypes.bool,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport querystring from 'query-string';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport Typography from '@material-ui/core/Typography';\n\nimport { request } from 'utilities/graph';\nimport { newebPayGetTradePostData, newebPayConfirmTransaction } from 'graphql/mutations';\nimport cache from 'utilities/cache';\n\nexport default function NewebPayButton({\n order = {},\n redirectPath,\n clientBackPath,\n email,\n onComplete,\n disabled,\n reportLoading,\n textButton = false,\n}) {\n const [isLoading, setIsLoading] = useState(true);\n\n const handleClick = async () => {\n setIsLoading(true);\n reportLoading(true);\n cache.set('public:menu-payment-service', 'newebpay');\n try {\n const clientId = cache.get('app:clientId');\n const {\n subTotal,\n discount,\n discountRule,\n amount,\n description,\n category,\n items,\n } = order;\n\n const input = {\n clientId,\n subTotal,\n discount,\n discountRule,\n amount,\n description,\n category,\n items,\n redirectPath,\n clientBackPath,\n email,\n };\n\n const {\n data: { newebPayGetTradePostData: { data: newebPayGetTradePostDataResult } },\n } = await request(newebPayGetTradePostData, { input });\n const postData = JSON.parse(newebPayGetTradePostDataResult);\n const form = document.createElement('form');\n form.method = 'POST';\n form.action = postData.url;\n\n Object.keys(postData.data).forEach((key) => {\n const inputNewebPay = document.createElement('input');\n inputNewebPay.type = 'hidden';\n inputNewebPay.name = key;\n inputNewebPay.value = postData.data[key];\n form.appendChild(inputNewebPay);\n });\n document.body.appendChild(form);\n form.submit();\n } catch (e) {\n global.logger.error(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n reportLoading(false);\n }, 1000);\n }\n };\n\n const handleConfirm = async (transactionId) => {\n setIsLoading(true);\n reportLoading(true);\n try {\n const { data: { newebPayConfirmTransaction: { data: newebPayConfirmTransactionResult } } } = await request(newebPayConfirmTransaction, {\n input: {\n transactionId,\n },\n });\n\n const {\n status,\n } = JSON.parse(newebPayConfirmTransactionResult);\n\n global.logger.debug({\n status,\n });\n if (status === 'approved') {\n onComplete({ id: transactionId });\n }\n } catch (e) {\n global.logger.error(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n reportLoading(false);\n }, 1000);\n }\n };\n\n useEffect(() => {\n const { transactionId } = querystring.parse(window.location.search);\n const paymentService = cache.get('public:menu-payment-service');\n if (paymentService === 'newebpay' && transactionId) {\n return handleConfirm(transactionId);\n } else {\n setIsLoading(false);\n reportLoading(false);\n }\n }, []);\n\n return (\n
\n {textButton ?\n \n 確認付款(信用卡或網路ATM)\n {isLoading && \n \n }\n :\n \n 信用卡或網路ATM (使用藍新金流)\n {isLoading && \n \n }\n \n }\n
\n );\n}\n\nNewebPayButton.propTypes = {\n disabled: PropTypes.bool,\n order: PropTypes.object,\n onComplete: PropTypes.func,\n redirectPath: PropTypes.string,\n clientBackPath: PropTypes.string,\n email: PropTypes.string,\n reportLoading: PropTypes.func,\n textButton: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { processStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function ProcessStatusChip({ status }) {\n const classes = useStyles();\n\n const matched = processStatus.find((item) => item.value === status);\n const label = matched ? matched.label : 'N/A';\n const backgroundColor = matched ? matched.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nProcessStatusChip.propTypes = {\n status: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport moment from 'moment-timezone';\nimport PropTypes from 'prop-types';\nimport Box from '@material-ui/core/Box';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nimport {\n API,\n graphqlOperation,\n} from 'aws-amplify';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { asyncListAll } from 'utilities/graph';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n },\n paper: {\n padding: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n maxWidth: 300,\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n chip: {\n margin: 2,\n },\n}));\n\nexport default function QueryGenerator({\n indexes = [],\n defaultParams = {},\n defaultIndex = 0,\n onUpdate,\n autoStart = true,\n disabled = false,\n refreshAt,\n display = true,\n appendNewData = false,\n limit = 1000,\n}) {\n const classes = useStyles();\n\n const [isLoading, setIsLoading] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(defaultIndex);\n const [params, setParams] = useState(defaultParams);\n const [data, setData] = useState([]);\n const [nextToken, setNextToken] = useState();\n const [isStart, setIsStart] = useState(false);\n const [isEnd, setIsEnd] = useState(false);\n const [hasAutoStarted, setHasAutoStarted] = useState(false);\n const undefinedValue = 'undefined'; // select control 如果value放undefined會show不出label\n\n const handleSubmit = async (forceReload = false, inNextToken, queryAll = false) => {\n setIsLoading(true);\n\n try {\n const oldData = isStart ? data : [];\n\n setIsStart(true);\n\n const { partitionKey, sortKey, fields, operation } = indexes[selectedIndex];\n const queryParams = {\n limit,\n sortDirection: 'DESC',\n nextToken: inNextToken || nextToken,\n };\n\n if (partitionKey) {\n queryParams[partitionKey] = params[partitionKey];\n }\n\n if (sortKey) {\n const field = fields.find(({ key }) => key === sortKey);\n if (field) {\n if (field.type === 'datetime') {\n queryParams[sortKey] = {\n between: [\n moment(params[sortKey].from).tz(TIME_ZONE).startOf('day').toISOString(),\n moment(params[sortKey].to).tz(TIME_ZONE).endOf('day').toISOString(),\n ],\n };\n } else if (field.type === 'date') {\n queryParams[sortKey] = {\n between: [params[sortKey].from, params[sortKey].to],\n };\n } else\n if (params[sortKey] !== undefined && params[sortKey] !== undefinedValue ) {\n queryParams[sortKey] = {\n eq: params[sortKey],\n };\n }\n }\n }\n fields\n .filter(({ key }) => key !== partitionKey && key !== sortKey)\n .forEach(({ type, key, comparisonOperator = 'eq' }) => {\n if (type === 'datetime') {\n queryParams.filter = queryParams.filter || {};\n queryParams.filter[key] = {\n between: [\n moment(params[key].from).tz(TIME_ZONE).startOf('day').toISOString(),\n moment(params[key].to).tz(TIME_ZONE).endOf('day').toISOString(),\n ],\n };\n } else if (type === 'date') {\n queryParams.filter = queryParams.filter || {};\n queryParams.filter[key] = {\n between: [params[key].from, params[key].to],\n };\n } else if (params[key] !== undefined && params[key] !== undefinedValue ) {\n queryParams.filter = queryParams.filter || {};\n queryParams.filter[key] = {\n [comparisonOperator]: params[key],\n };\n }\n });\n\n // global.logger.debug('queryParams', queryParams);\n let newItems;\n let token;\n\n if (queryAll) {\n (newItems = await asyncListAll(operation, queryParams));\n } else {\n const res = await API.graphql(graphqlOperation(operation, queryParams));\n ({ items: newItems, nextToken: token } = res.data[Object.keys(res.data)[0]]);\n setNextToken(token);\n\n // in case there is no data returned.\n if (newItems.length === 0 && token) {\n return handleSubmit(forceReload, token);\n }\n }\n\n const updatedData = forceReload === true ? newItems : (appendNewData ? [...oldData, ...newItems] : [...newItems, ...oldData]);\n setData(updatedData);\n\n if (!token) {\n setIsEnd(true);\n }\n\n if (onUpdate) {\n onUpdate(\n updatedData,\n Object.fromEntries(\n Object.entries(params).map(([key, value]) => [key, value === undefinedValue ? undefined : value]),\n ),\n );\n }\n } catch (e) {\n global.logger.error(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n }, 1000);\n }\n };\n\n const renderField = (field) => {\n let value = params[field.key];\n if (field.type === 'select') {\n // 如果沒有match的option, 就用第一個option\n const matched = field.options.find(({ value }) => {\n return value === params[field.key] ||\n (value === undefined && params[field.key] === undefinedValue);\n });\n value = matched ? value : field.options[0].value;\n if (value === undefined) {\n value = undefinedValue;\n }\n if (value !== params[field.key]) {\n setParams({\n ...params,\n [field.key]: value,\n });\n }\n }\n const props = {\n disabled: field.disabled || disabled || isLoading,\n fullWidth: true,\n name: field.key,\n value,\n label: field.label || field.key,\n variant: 'outlined',\n onChange: (e) => {\n setParams({\n ...params,\n [field.key]: e.target.value,\n });\n },\n };\n switch (field.type) {\n case 'datetime':\n case 'date':\n return (\n \n \n {\n params[field.key] = params[field.key] || {};\n params[field.key].from = e.target.value;\n setParams({\n ...params,\n });\n }}\n />\n \n \n {\n params[field.key] = params[field.key] || {};\n params[field.key].to = e.target.value;\n setParams({\n ...params,\n });\n }}\n />\n \n \n );\n case 'select':\n return (\n \n \n {field.label || field.key}\n \n \n {field.options.map((item, index) => {\n return ({item.label});\n })}\n \n \n );\n case 'string':\n default:\n return (\n );\n }\n };\n\n\n const reset = () => {\n setIsStart(false);\n setIsEnd(false);\n setData([]);\n setNextToken(null);\n\n if (autoStart && !hasAutoStarted) {\n setHasAutoStarted(true);\n handleSubmit();\n }\n };\n\n useEffect(() => {\n if (refreshAt) {\n reset();\n handleSubmit(true);\n }\n }, [refreshAt]);\n\n useEffect(() => {\n reset();\n }, [selectedIndex, params]);\n\n if (indexes.length === 0) return null;\n\n return (\n \n \n \n \n \n \n \n 索引\n \n {\n setSelectedIndex(e.target.value);\n }}\n >\n {indexes.map((item, index) => {\n return ({item.label});\n })}\n \n \n \n {indexes[selectedIndex].fields.map((field, index)=> {\n if (field.hidden) {\n return null;\n }\n return (\n \n \n {renderField(field)}\n \n );\n })}\n \n {isStart &&\n handleSubmit()}\n disabled={disabled || isLoading || isEnd}\n >\n {isLoading ? : isEnd ? `共${data.length}筆資料,已無更多資料` : `目前有${data.length}筆資料,點此搜尋更多資料`}\n }\n {isStart && !isEnd && !isLoading &&\n handleSubmit(undefined, undefined, true)}\n disabled={disabled || isLoading || isEnd}\n style={{ marginLeft: 16 }}\n >\n {isLoading ? : `搜尋全部資料(費時)`}\n }\n {!isStart &&\n handleSubmit(true) }\n disabled={disabled || isLoading || isEnd}\n >\n 搜尋\n }\n \n \n \n \n );\n}\n\nQueryGenerator.propTypes = {\n indexes: PropTypes.array,\n defaultParams: PropTypes.object,\n onUpdate: PropTypes.func,\n disabled: PropTypes.bool,\n autoStart: PropTypes.bool,\n defaultIndex: PropTypes.number,\n refreshAt: PropTypes.any,\n display: PropTypes.bool,\n appendNewData: PropTypes.bool,\n limit: PropTypes.number,\n};\n","import CheckboxesWithSelectAll from 'forms/components/CheckboxesWithSelectAll';\n\nconst uiSchema = {\n 'status': {\n 'ui:width': '50%',\n },\n 'category': {\n 'ui:width': '50%',\n },\n 'oneOf': {\n 'ui:width': '50%',\n },\n 'deliveryOption': {\n 'ui:width': '50%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'deliveryGroupId': {\n 'ui:width': '100%',\n },\n 'elderId': {\n 'ui:width': '100%',\n },\n 'deliveryStaffId': {\n 'ui:width': '50%',\n },\n 'restaurantId': {\n 'ui:width': '50%',\n },\n 'repeatOn': {\n 'ui:widget': CheckboxesWithSelectAll,\n 'ui:options': {\n 'inline': true,\n },\n },\n 'deliveryBy': {\n 'ui:width': '33.33%',\n },\n 'startOn': {\n 'ui:width': '33.33%',\n },\n 'endOn': {\n 'ui:width': '33.33%',\n },\n};\n\nexport default uiSchema;\n","export const getElder = /* GraphQL */ `\n query GetElder($id: ID!) {\n getElder(id: $id) {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\n","import moment from 'moment-timezone';\nimport { request } from 'utilities/graph';\nimport {\n getElderDeliveryGroupByDeliveryGroupId,\n} from 'graphql/queries';\nimport {\n getElder,\n} from './queries';\n\nconst getDatesBetween = (startDate, endDate) => {\n const dates = [];\n const currentDate = moment(startDate);\n\n while (currentDate.isSameOrBefore(endDate, 'day')) {\n dates.push(currentDate.format('YYYY-MM-DD'));\n currentDate.add(1, 'day');\n }\n\n return dates;\n};\n\nexport const processNewRecurringOrderSetting = async (data) => {\n const {\n startOn, endOn, elderId, restaurantId, deliveryStaffId, deliveryGroupId, mealItems, repeatOn, deliveryBy,\n } = data;\n const hour = parseInt(deliveryBy.split(':')[0]);\n data.mealSlot = hour <= 14 ? 'lunch' : 'dinner';\n\n // 建立30天訂單\n const today = moment().tz('Asia/Taipei').format('YYYY-MM-DD');\n const oneMonthAfter = moment().add(30, 'days').tz('Asia/Taipei').format('YYYY-MM-DD');\n if (endOn && endOn < today) {\n return;\n }\n const start = startOn < today ? today : startOn;\n const end = (endOn && (endOn < oneMonthAfter)) ? endOn : oneMonthAfter;\n const toCreateOrders = [];\n const elders = [];\n if (start <= end) {\n const datesBetween = getDatesBetween(start, end);\n if (elderId) {\n const { data: { getElder: data } } = await request(getElder, { id: elderId });\n if (data) {\n elders.push(data);\n }\n }\n if (deliveryGroupId) {\n const { data: { getElderDeliveryGroupByDeliveryGroupId: { items } } } =\n await request(getElderDeliveryGroupByDeliveryGroupId, { deliveryGroupId });\n if (items && items.length !== 0) {\n const getElderWithSortOrder = async (elderId, sortOrder) => {\n const { data: { getElder: data } } = await request(getElder, { id: elderId });\n if (data && data.status === '使用中') {\n elders.push({\n ...data,\n deliveryGroupId,\n sortOrder,\n });\n }\n };\n await Promise.all(items.map(({ elderId, sortOrder }) => {\n return getElderWithSortOrder(elderId, sortOrder);\n }));\n }\n }\n const hour = parseInt(deliveryBy.split(':')[0]);\n const mealSlot = hour <= 14 ? 'lunch' : 'dinner';\n const total = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.price * currentValue.quantity;\n }, 0);\n const totalCost = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.cost * currentValue.quantity;\n }, 0);\n elders.forEach((elder) => {\n const deliveryDatetimes = [];\n datesBetween.forEach((date) => {\n const week = moment(date).day();\n if (repeatOn.includes(week)) {\n if ((mealSlot === 'lunch' && elder.lunchRepeatOn && elder.lunchRepeatOn.includes(week)) ||\n (mealSlot === 'dinner' && elder.dinnerRepeatOn && elder.dinnerRepeatOn.includes(week))) {\n const deliveryDatetime = moment.tz(`${date} ${deliveryBy}`, 'Asia/Taipei').toISOString();\n deliveryDatetimes.push(deliveryDatetime);\n }\n }\n });\n if (deliveryDatetimes.length !== 0) {\n toCreateOrders.push({\n elderId: elder.id,\n restaurantId,\n deliveryStaffId,\n mealItems,\n deliveryDatetimes,\n noteForDelivery: elder.noteForDelivery,\n noteForMeal: elder.noteForMeal,\n note: elder.note,\n deliveryGroupId: elder.deliveryGroupId,\n deliveryGroupSortOrder: elder.sortOrder,\n total,\n totalCost,\n deliveryStaffFee: 0,\n category: '送餐',\n paymentMethod: 'PAID',\n source: 'admin',\n });\n }\n });\n }\n return {\n toCreateOrders,\n elders,\n toCreateRecurringOrder: data,\n };\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport Grid from '@material-ui/core/Grid';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { useTranslation } from 'react-i18next';\nimport { getRecurringOrder } from 'graphql/queries';\nimport {\n updateRecurringOrder,\n} from 'graphql/mutations';\nimport {\n getDeliveryStaffIdSchema,\n getRestaurantIdSchema,\n getElderIdSchema,\n} from 'forms/schemas';\nimport uiSchema from './AdminRecurringOrderForm.uiSchema';\nimport { toastr } from 'react-redux-toastr';\nimport cache from 'utilities/cache';\nimport { processNewRecurringOrderSetting } from './helpers';\n\nconst defaultFormData = {};\n\nexport default function AdminRecurringOrderForm({ formData: inFormData, editMode='group', mode='add', ...props }) {\n const { t } = useTranslation();\n const [onlyShowFacilityRestaurant, setOnlyShowFacilityRestaurant] = useState(false);\n const [onlyShowFacilityDeliveryStaff, setOnlyShowFacilityDeliveryStaff] = useState(false);\n const dataFormRef = useRef();\n const isInitialRender = useRef(true);\n\n // load here for translation purpose\n const { default: defaultSchema } = require('./AdminRecurringOrderForm.schema.js');\n const schema = JSON.parse(JSON.stringify(defaultSchema));\n if (mode === 'add') {\n schema.description = '設定週期性排單後,首先會依照設定自動新增最近30天的訂單,每天凌晨會自動新增第31天的訂單,也就是任何時間都會有未來30天的訂單';\n } else {\n schema.description = '請注意,更改週期性排單設定不會影響目前30天內已新增的訂單';\n }\n if (editMode === 'group') {\n delete schema.properties.elderId;\n schema.required.push('deliveryGroupId');\n } else {\n delete schema.properties.deliveryGroupId;\n schema.required.push('elderId');\n }\n const formData = (inFormData || defaultFormData);\n if (!formData.deliveryStaffId) delete formData.deliveryStaffId;\n\n useEffect(() => {\n if (isInitialRender.current) {\n isInitialRender.current = false;\n } else {\n if (dataFormRef.current && dataFormRef.current.updateSchema) {\n dataFormRef.current.updateSchema();\n }\n }\n }, [onlyShowFacilityRestaurant, onlyShowFacilityDeliveryStaff]);\n\n\n const createFunc = async (data) => {\n return await processNewRecurringOrderSetting(data);\n };\n\n const updateFunc = async (data) => {\n const hour = parseInt(data.deliveryBy.split(':')[0]);\n data.mealSlot = hour <= 14 ? 'lunch' : 'dinner';\n // workaroud...\n data.mealItems.forEach((mealItem) => {\n if (!mealItem.surcharges) {\n mealItem.surcharges = [];\n }\n });\n const newData = JSON.parse(JSON.stringify(data));\n delete newData.restaurant;\n delete newData.elder;\n delete newData.deliveryGroup;\n toastr.warning('請注意,更改週期性排單設定不會影響目前30天內已新增的訂單,可以按下重置訂單按鈕來重新新增訂單');\n if (newData.endOn === undefined) {\n newData.endOn = null;\n }\n try {\n await request(updateRecurringOrder, { input: newData });\n } catch (e) {\n console.log(e);\n }\n const { data: { getRecurringOrder: recurringOrder } } = await request(getRecurringOrder, { id: data.id });\n return recurringOrder;\n };\n\n return (\n \n \n \n {\n setOnlyShowFacilityRestaurant(e.target.checked);\n }}\n name={'onlyShowOrgRestaurant'}\n color=\"primary\"\n />\n }\n label={`只顯示與該機構相關的${t('餐廳')}`}\n />\n {\n setOnlyShowFacilityDeliveryStaff(e.target.checked);\n }}\n name={'onlyShowFacilityDeliveryStaff'}\n color=\"primary\"\n />\n }\n label={`只顯示該機構的${t('送餐大使')}`}\n />\n \n \n {\n const clientId = cache.get('app:facilityId');\n return getElderIdSchema(elderId, null, clientId, false, true);\n },\n }, {\n key: 'deliveryStaffId',\n func: (deliveryStaffId) => {\n const clientId = cache.get('app:facilityId');\n return getDeliveryStaffIdSchema(deliveryStaffId, null, clientId, true, false, false, true, onlyShowFacilityDeliveryStaff);\n },\n }, {\n key: 'restaurantId',\n func: (restaurantId) => {\n const clientId = cache.get('app:facilityId');\n return getRestaurantIdSchema(restaurantId, null, clientId, false, onlyShowFacilityRestaurant);\n },\n }]}\n ref={dataFormRef}\n {...props}\n />\n \n );\n}\n\nAdminRecurringOrderForm.propTypes = {\n formData: PropTypes.object,\n editMode: PropTypes.string,\n mode: PropTypes.string,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport IconButton from '@material-ui/core/IconButton';\nimport AddIcon from '@material-ui/icons/Add';\nimport SettingsBackupRestoreIcon from '@material-ui/icons/SettingsBackupRestore';\nimport EditIcon from '@material-ui/icons/Edit';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport Typography from '@material-ui/core/Typography';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CheckIcon from '@material-ui/icons/Check';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport FormDialog from 'components/FormDialog';\nimport AdminRecurringOrderForm from './AdminRecurringOrderForm';\nimport { formatDatetime } from 'utilities/format';\nimport { Semaphore } from 'async-mutex';\nimport { asyncListAll, request } from 'utilities/graph';\nimport {\n getRecurringOrder,\n getRecurringOrderLogByRecurringOrderIdByDate,\n getOrder,\n} from 'graphql/queries';\nimport { processNewRecurringOrderSetting } from './helpers';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport {\n createRecurringOrder,\n createRecurringOrderLog,\n adminCreateOrder,\n adminUpdateOrder,\n updateRecurringOrder,\n} from 'graphql/mutations';\nimport cache from 'utilities/cache';\nimport moment from 'moment';\n\nexport default function AdminRecurringOrderEditButton({\n title,\n mode = 'add',\n item,\n onUpdate,\n open: inOpen = false,\n exitConfirm = false,\n}) {\n const { t } = useTranslation();\n const [open, setOpen] = useState(inOpen);\n const [editItem, setEditItem] = useState();\n const [anchorEl, setAnchorEl] = useState(null);\n const [editMode, setEditMode] = useState('group');\n const [toCreateOrders, setToCreateOrders] = useState([]);\n const [elders, setElders] = useState([]);\n const [toCreateRecurringOrder, setToCreateRecurringOrder] = useState();\n const [toUpdateRecurringOrder, setToUpdateRecurringOrder] = useState();\n const [openConfirmDialog, setOpenConfirmDialog] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [createResults, setCreateResults] = useState([]);\n const [createErrors, setCreateErrors] = useState([]);\n const [orderCreated, setOrderCreated] = useState(false);\n const [cancelOrdersProgress, setCancelOrdersProgress] = useState(0);\n const [toCancelOrders, setToCancelOrders] = useState([]);\n const [showBackdrop, setShowBackdrop] = useState(false);\n\n const handleButtonClick = (event) => {\n if (mode === 'add') {\n setAnchorEl(event.currentTarget);\n } else {\n if (item.elderId) {\n setEditMode('single');\n } else {\n setEditMode('group');\n }\n setOpen(true);\n setEditItem(item);\n }\n };\n\n const handleResetButtonClick = async () => {\n setShowBackdrop(true);\n const { toCreateOrders, elders, toCreateRecurringOrder } = await processNewRecurringOrderSetting(item);\n const recurringOrderLogs = await asyncListAll(getRecurringOrderLogByRecurringOrderIdByDate,\n { recurringOrderId: toCreateRecurringOrder.id,\n date: { ge: moment().tz(TIME_ZONE).format('YYYY-MM-DD') } });\n const orderIds = recurringOrderLogs.map(({ orderIds }) => orderIds).flat();\n const orders = await Promise.all(orderIds.map(async (id) => {\n const { data: { getOrder: order } } = await request(getOrder, { id });\n return order;\n }));\n const ordersUncancelled = orders.filter((order) => !['completed', 'delivered', 'cancelled'].includes(order.status));\n setCancelOrdersProgress(0);\n setToCancelOrders(ordersUncancelled);\n setToCreateOrders(toCreateOrders);\n setElders(elders);\n setToUpdateRecurringOrder(toCreateRecurringOrder);\n setShowBackdrop(false);\n setOpenConfirmDialog(true);\n };\n\n const handleMenuClick = (editMode) => () => {\n if (!open) {\n setEditMode(editMode);\n setIsLoading(false);\n setOrderCreated(false);\n setOpen(true);\n setEditItem(item);\n }\n setAnchorEl(null);\n };\n\n const getRecurringOrderUpdated = async (recurringOrderId) => {\n const { data: { getRecurringOrder: data } } = await request(getRecurringOrder, { id: recurringOrderId });\n return data;\n };\n\n const cancelOrders = async () => {\n let orderProcessed = 0;\n const toUpdateData = [];\n const ordersUncancelled = toCancelOrders.filter((order) => !['completed', 'delivered', 'cancelled'].includes(order.status));\n\n const s = new Semaphore(10);\n const orderGrouped = {};\n ordersUncancelled.forEach((order) => {\n const groupId = order.orderGroupId || order.id;\n orderGrouped[groupId] = orderGrouped[groupId] || [];\n orderGrouped[groupId].push(order);\n });\n\n await Promise.all(Object.keys(orderGrouped).map((groupId) =>\n s.runExclusive(async () => {\n const data = orderGrouped[groupId].map((order) => (\n {\n id: order.id,\n restaurantId: order.restaurantId,\n deliveryBy: order.deliveryBy,\n status: 'cancelled',\n tier: order.tier,\n cancellationReason: 'others',\n cancellationNote: '重置週期性排單',\n }\n ));\n try {\n await request(adminUpdateOrder, { input: { orders: data } });\n toUpdateData.push(...data);\n } catch (e) {\n console.error(e.errors[0].message);\n }\n orderProcessed += data.length;\n setCancelOrdersProgress(orderProcessed * 100 / ordersUncancelled.length);\n }),\n ));\n };\n\n const handleComplete = async () => {\n if (orderCreated) {\n setOpen(false);\n setOrderCreated(false);\n setOpenConfirmDialog(false);\n return;\n }\n setIsLoading(true);\n\n await cancelOrders();\n\n let results = [];\n const errors = [];\n const elderNameInErrors = [];\n if (toCreateOrders.length !== 0) {\n const s = new Semaphore(10);\n await Promise.all(toCreateOrders.map((order) =>\n s.runExclusive(async () => {\n try {\n const res = await request(adminCreateOrder, { input: { orders: [order] } });\n const { data: { adminCreateOrder: { data } } } = res;\n results = [...results, ...data];\n setCreateResults(results);\n } catch (e) {\n global.logger.debug(e);\n let message = '';\n if (e.errors && e.errors[0]) {\n switch (e.errors[0].message) {\n case 'The string supplied did not seem to be a phone number':\n message = `熊貓外送: ${t('送餐對象')}電話不完整或有誤`;\n break;\n case 'Unable to process order\\norder is outside deliverable range':\n message = `熊貓外送: ${t('送餐對象')}地址不在服務範圍內`;\n break;\n default:\n message = e.errors[0].message;\n }\n }\n errors.push({\n elderId: order.elderId,\n message,\n });\n const elderName = (elders.find(({ id })=> id === order.elderId) || {}).name;\n if (elderName) {\n elderNameInErrors.push(elderName);\n }\n }\n }),\n ));\n }\n\n const now = moment().toISOString();\n let recurringOrderId;\n const username = cache.get('app:username');\n if (toCreateRecurringOrder) {\n Object.assign(toCreateRecurringOrder, {\n lastExecutedAt: now,\n lastExecutedStatus: errors.length === 0 ? 'success' : 'failed',\n lastExecutedStatusMessage: elderNameInErrors.length === 0 ? '' : `新增訂單失敗: ${elderNameInErrors.join(' ')}`,\n });\n try {\n const { data: { createRecurringOrder: { id } } } = await request(createRecurringOrder, { input: toCreateRecurringOrder });\n recurringOrderId = id;\n } catch (e) {\n console.log(e);\n }\n } else if (toUpdateRecurringOrder) {\n recurringOrderId = toUpdateRecurringOrder.id;\n try {\n await request(updateRecurringOrder, { input: {\n id: toUpdateRecurringOrder.id,\n lastExecutedAt: now,\n lastExecutedStatus: errors.length === 0 ? 'success' : 'failed',\n lastExecutedStatusMessage: elderNameInErrors.length === 0 ? '' : `新增訂單失敗: ${elderNameInErrors.join(' ')}`,\n updatedAt: now,\n updatedBy: username,\n } });\n } catch (e) {\n console.log(e);\n }\n }\n try {\n const resultsGroupedByDeliveryBy = results.reduce((acc, order) => {\n const key = order.deliveryBy;\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(order);\n return acc;\n }, {});\n const toCreateRecurringOrderLog = [];\n Object.keys(resultsGroupedByDeliveryBy).map((deliveryBy) => {\n toCreateRecurringOrderLog.push({\n orderIds: resultsGroupedByDeliveryBy[deliveryBy].map(({ id }) => id),\n recurringOrderId,\n deliveryBy: (toCreateRecurringOrder || toUpdateRecurringOrder).deliveryBy,\n date: deliveryBy.slice(0, 10),\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n });\n });\n if (toCreateRecurringOrderLog.length !== 0) {\n await Promise.all(toCreateRecurringOrderLog.map((recurringOrderLog) => {\n request(createRecurringOrderLog, { input: recurringOrderLog });\n }));\n }\n } catch (e) {\n console.log(e);\n }\n const recurringOrder = await getRecurringOrderUpdated(recurringOrderId); // in order to get the data in the table joined\n onUpdate && onUpdate(recurringOrder);\n\n setCreateErrors(errors);\n setOrderCreated(true);\n setIsLoading(false);\n };\n\n return (\n \n { mode === 'edit'?\n \n {item?.status === '使用中' &&\n \n \n \n \n \n \n }\n \n \n \n \n \n \n \n :\n \n \n \n \n \n }\n {\n setAnchorEl(null);\n }}\n >\n 新增送餐群組週期性排單\n 新增單一送餐對象週期性排單\n \n {open &&\n {\n setOpen(false);\n setEditItem();\n }}\n exitConfirm={exitConfirm}\n >\n {\n if (mode === 'add') {\n const { toCreateOrders, elders, toCreateRecurringOrder } = data;\n setToCreateOrders(toCreateOrders);\n setElders(elders);\n setToCreateRecurringOrder(toCreateRecurringOrder);\n setOpenConfirmDialog(true);\n } else {\n setOpen(false);\n setEditItem();\n onUpdate && onUpdate(data);\n }\n }}\n editMode={editMode}\n mode={mode}\n />\n }\n {openConfirmDialog &&\n \n \n \n {toCancelOrders.length !== 0 &&\n
\n \n \n \n {`此週期性排單30天內有${toCancelOrders.length}張訂單,按下確定後會取消這些訂單`}\n \n \n {cancelOrdersProgress !== 0 &&\n \n
\n \n
\n
}\n
\n }\n {toCreateOrders.length !== 0 &&\n \n \n \n 請檢閱後按下確定新增下列訂單\n \n }\n {toCreateOrders.length === 0 &&\n \n \n 此週期性排單在30天內沒有需要新增的訂單,請確認送餐對象與此排單的送餐週期設定是否正確,若仍要新增此週期性排單設定請按確定。\n \n }\n {\n toCreateOrders.map((order, index) => (\n \n \n \n {(elders.find(({ id })=> id === order.elderId) || {}).name || ''}\n \n \n {order.deliveryDatetimes.map((datetime) => {\n const matched = createResults.find(({ elderId, deliveryBy }) => elderId === order.elderId && deliveryBy === datetime);\n return (\n \n \n {isLoading && !matched && }\n {(isLoading || orderCreated) && matched && }\n {(!isLoading && orderCreated) && !matched && }\n \n {formatDatetime(datetime, { weekday: true })}\n \n \n \n );\n })}\n \n \n {(createErrors.find(({ elderId })=> elderId === order.elderId) || {}).message || ''}\n \n \n \n ))\n }\n
\n \n {!orderCreated &&\n {\n setOpenConfirmDialog(false);\n }}\n style={{ marginRight: 16 }}\n disabled={isLoading}\n >\n 取消\n }\n \n {orderCreated ? '關閉' : '確定'}\n {isLoading && }\n \n \n
\n \n }\n {showBackdrop && \n \n }\n
\n );\n}\n\nAdminRecurringOrderEditButton.propTypes = {\n title: PropTypes.string,\n mode: PropTypes.string,\n item: PropTypes.object,\n onUpdate: PropTypes.func,\n open: PropTypes.bool,\n exitConfirm: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport AdminRecurringOrderEditButton from './AdminRecurringOrderEditButton';\n\nexport default function AdminRecurringOrderButtonFunc({ mode = 'edit', ...props }) {\n const title = mode === 'edit' ? '修改週期性排單' : '新增週期性排單';\n\n return (\n );\n}\n\nAdminRecurringOrderButtonFunc.propTypes = {\n mode: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { asyncListAll } from 'utilities/graph';\nimport DataTable from 'components/Table/DataTable';\nimport Loading from 'components/Loading';\n\nimport { getEldersByClientByStatus, getDeliveryStaffsByClientIdByIsActive, getElderDeliveryGroupsByClientByStatus } from 'graphql/queries';\nimport cache from 'utilities/cache';\n\nexport default function AdminRecurringOrderPreviewTable({\n description,\n data: inData,\n ...props\n}) {\n const [data, setData] = useState([]);\n const [elders, setElders] = useState([]);\n const [deliveryStaffs, setDeliveryStaffs] = useState([]);\n const [elderDeliveryGrops, setElderDeliveryGroups] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n const columns = [\n {\n name: 'id',\n label: '週期性排單編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffName',\n label: '送餐大使',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'lunchMonday',\n label: ' 週一(午)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dinnerMonday',\n label: '週一(晚)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lunchTuesday',\n label: '週二(午)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dinnerTuesday',\n label: '週二(晚)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lunchWednesday',\n label: '週三(午)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dinnerWednesday',\n label: '週三(晚)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lunchThursday',\n label: '週四(午)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dinnerThursday',\n label: '週四(晚)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lunchFriday',\n label: '週五(午)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dinnerFriday',\n label: '週五(晚)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lunchSaturday',\n label: '週六(午)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dinnerSaturday',\n label: '週六(晚)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lunchSunday',\n label: '週日(午)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dinnerSunday',\n label: '週日(晚)',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n ];\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => false,\n };\n\n useEffect(() => {\n const clientId = cache.get('app:facilityId');\n (async () => {\n const [deliveryStaffs, elders, elderDeliveryGroups] = await Promise.all([\n asyncListAll(getDeliveryStaffsByClientIdByIsActive, {\n clientId,\n isActive: { eq: 1 },\n }),\n asyncListAll(getEldersByClientByStatus, { clientId, status: { eq: '使用中' }, limit: 1000 }),\n asyncListAll(getElderDeliveryGroupsByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n limit: 1000,\n }),\n ]);\n setElders(elders);\n setDeliveryStaffs(deliveryStaffs);\n setElderDeliveryGroups(elderDeliveryGroups);\n setIsLoading(false);\n })();\n }, []);\n\n useEffect(() => {\n const newData = [];\n if (elders.length === 0) {\n return;\n }\n if (deliveryStaffs.length === 0) {\n return;\n }\n inData.forEach(({ id, elderId, deliveryGroupId, elder, repeatOn, mealSlot: recurringOrderMealSlot, deliveryStaffId }) => {\n const deliveryStaff = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n const elderIncluded = [];\n if (deliveryGroupId) {\n const filteredElderDeliveryGroups = elderDeliveryGrops.filter(({ deliveryGroupId: id }) => id === deliveryGroupId);\n filteredElderDeliveryGroups.forEach(({ elderId }) => {\n const elder = elders.find(({ id }) => id === elderId);\n if (elder) {\n elderIncluded.push(elder);\n }\n });\n }\n if (elderId && elder) {\n elderIncluded.push(elder);\n }\n elderIncluded.forEach((elder) => {\n const { name: deliveryStaffName = 'N/A' } = deliveryStaff || {};\n\n const getDelvieryStaffName = (week, mealSlot) => {\n if (recurringOrderMealSlot !== mealSlot) {\n return '';\n }\n if (repeatOn.includes(week)) {\n if ((mealSlot === 'lunch' && elder.lunchRepeatOn && elder.lunchRepeatOn.includes(week)) ||\n (mealSlot === 'dinner' && elder.dinnerRepeatOn && elder.dinnerRepeatOn.includes(week))) {\n return elder.name;\n }\n }\n return '';\n };\n\n newData.push({\n id,\n deliveryStaffName,\n lunchMonday: getDelvieryStaffName(1, 'lunch'),\n dinnerMonday: getDelvieryStaffName(1, 'dinner'),\n lunchTuesday: getDelvieryStaffName(2, 'lunch'),\n dinnerTuesday: getDelvieryStaffName(2, 'dinner'),\n lunchWednesday: getDelvieryStaffName(3, 'lunch'),\n dinnerWednesday: getDelvieryStaffName(3, 'dinner'),\n lunchThursday: getDelvieryStaffName(4, 'lunch'),\n dinnerThursday: getDelvieryStaffName(4, 'dinner'),\n lunchFriday: getDelvieryStaffName(5, 'lunch'),\n dinnerFriday: getDelvieryStaffName(5, 'dinner'),\n lunchSaturday: getDelvieryStaffName(6, 'lunch'),\n dinnerSaturday: getDelvieryStaffName(6, 'dinner'),\n lunchSunday: getDelvieryStaffName(0, 'lunch'),\n dinnerSunday: getDelvieryStaffName(0, 'dinner'),\n });\n });\n });\n setData(newData);\n }, [inData, elders, deliveryStaffs, elderDeliveryGrops]);\n\n if (isLoading) {\n return ();\n }\n\n return (\n \n );\n}\n\nAdminRecurringOrderPreviewTable.propTypes = {\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport FormDialog from 'components/FormDialog';\nimport AdminRecurringOrderPreviewTable from './AdminRecurringOrderPreviewTable';\n\nexport default function AdminRecurringOrderPreviewButton({ data }) {\n const [open, setOpen] = useState(false);\n\n const handleButtonClick = (event) => {\n setOpen(true);\n };\n\n return (\n \n \n \n \n \n \n {open &&\n {\n setOpen(false);\n }}\n maxWidth='xl'\n >\n \n }\n \n );\n}\n\nAdminRecurringOrderPreviewButton.propTypes = {\n data: PropTypes.array,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport AdminRecurringOrderPreviewButton from './AdminRecurringOrderPreviewButton';\n\nexport default function AdminRecurringOrderPreviewFunc({ data, ...props }) {\n return (\n );\n}\n\nAdminRecurringOrderPreviewFunc.propTypes = {\n data: PropTypes.array,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport DataTable from 'components/Table/DataTable';\nimport Loading from 'components/Loading';\nimport {\n // getRecurringOrdersByStatus,\n getRecurringOrdersByClientByStatus,\n getRecurringOrdersByElderByStatus,\n getRecurringOrdersByDeliveryGroupByStatus,\n getRecurringOrdersByDeliveryStaffByStatus,\n getRecurringOrdersByRestaurantByStatus,\n} from 'graphql/queries';\nimport AdminRecurringOrderButtonFunc from 'forms/AdminRecurringOrderForm/AdminRecurringOrderButtonFunc';\nimport AdminRecurringOrderPreviewFunc from 'forms/AdminRecurringOrderForm/AdminRecurringOrderPreviewFunc';\nimport cache from 'utilities/cache';\nimport { getTranslatedMealSlots } from 'utilities/translate';\nimport { WEEKDAYS_SHORT } from '@silvergatedelivery/constants';\nimport moment from 'moment-timezone';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport OrderTable from 'components/OrderTable';\nimport { useCache } from 'CacheProvider';\nimport { asyncListAll } from 'utilities/graph';\nimport { getDeliveryStaffIdSchema } from 'forms/schemas';\n\nexport default function RecurringOrderTable({\n title = '週期性排單',\n description,\n clientId: inClientId,\n elderId,\n deliveryGroups,\n restaurantId,\n deliveryStaffId,\n queryStatus,\n defaultIndex = 0,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const { appGroup } = useCache();\n const ordersSelected = useRef([]);\n const notAdminMode = appGroup !== 'Admins';\n const clientId = inClientId || cache.get('app:facilityId');\n const clientName = notAdminMode ? cache.get('app:name') : clientId;\n const [data, setData] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [deliveryStaffOptions, setDeliveryStaffOptions] = useState();\n\n useEffect(() => {\n (async () => {\n const deliveryStaffOptions = await getDeliveryStaffIdSchema(null, null, clientId, true, true);\n setDeliveryStaffOptions(deliveryStaffOptions);\n })();\n }, []);\n\n const defaultIndexes = [\n {\n name: 'getRecurringOrdersByClientByStatus',\n label: '按狀態查詢',\n partitionKey: 'clientId',\n sortKey: 'status',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: ['使用中', '已停用'].map((item) => {\n return { value: item, label: item };\n }),\n }],\n operation: getRecurringOrdersByClientByStatus,\n },\n ];\n\n const translatedMealSlots = getTranslatedMealSlots();\n const columns = [\n {\n name: 'id',\n label: '編號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'client.name',\n label: '客戶',\n options: {\n filter: false,\n sort: true,\n display: notAdminMode ? 'excluded' : true,\n },\n },\n {\n name: 'category',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n display: notAdminMode ? 'excluded' : true,\n },\n },\n {\n name: 'deliveryGroupId',\n label: `${t('送餐群組')}編號`,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryGroup.name',\n label: `${t('送餐群組')}`,\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elderId',\n label: `${t('送餐對象')}編號`,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elder.name',\n label: t('送餐對象'),\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffId',\n label: t('送餐大使'),\n options: {\n display: true,\n filter: true,\n sort: true,\n customBodyRender(deliveryStaffId) {\n if (deliveryStaffOptions) {\n const index = deliveryStaffOptions.enum.findIndex((id) => id === deliveryStaffId);\n if (index !== -1) {\n return deliveryStaffOptions.enumNames[index];\n }\n }\n return '';\n },\n },\n },\n {\n name: 'mealSlot',\n label: '時段',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return translatedMealSlots.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'deliveryBy',\n label: '送餐時間',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender(value) {\n return moment(value, 'HH:mm:ss').format('HH:mm');\n },\n },\n },\n {\n name: 'startOn',\n label: '開始日期',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'endOn',\n label: '結束日期',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'repeatOn',\n label: '送餐週期',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender: (repeatOn) => {\n return repeatOn.sort((a, b) => {\n if (a === 0) return 1; // move 0 to the last possition\n if (b === 0) return -1;\n return a - b;\n }).map((day) => `${WEEKDAYS_SHORT[day]}`).join('、');\n },\n },\n },\n {\n name: 'restaurant.name',\n label: t('餐廳'),\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'mealItems',\n label: t('餐點'),\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender: (mealItems) => {\n return mealItems.map(({ name, quantity }) => `${name} x${quantity}`).join(', ');\n },\n },\n },\n {\n name: 'lastExecutedAt',\n label: '上次排單時間',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lastExecutedStatus',\n label: '上次排單結果',\n type: 'text',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender: (status) => {\n if (status === 'success') {\n return '排單成功';\n }\n if (status === 'failed') {\n return '排單失敗';\n }\n return '';\n },\n },\n },\n {\n name: 'lastExecutedStatusMessage',\n label: '上次排單訊息',\n type: 'text',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n ];\n\n useEffect(() => {\n if (deliveryStaffId) {\n const indexes = [\n {\n name: 'getRecurringOrdersByDeliveryStaffByStatus',\n label: `按${t('送餐大使')}查詢`,\n partitionKey: 'deliveryStaffId',\n sortKey: 'status',\n fields: [{\n label: `${t('送餐大使')}ID`,\n key: 'deliveryStaffId',\n type: 'select',\n options: [{ value: deliveryStaffId, label: deliveryStaffId }],\n disabled: true,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: ['使用中', '已停用'].map((item) => {\n return { value: item, label: item };\n }),\n }],\n operation: getRecurringOrdersByDeliveryStaffByStatus,\n },\n ];\n if (clientId) {\n indexes[0].fields.push( {\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n disabled: true,\n });\n }\n setIndexes(indexes);\n setQueryParams({\n deliveryStaffId,\n status: '使用中',\n clientId,\n });\n } else if (restaurantId) {\n const indexes = [\n {\n name: 'getRecurringOrdersByRestaurantByStatus',\n label: `按${t('餐廳')}查詢`,\n partitionKey: 'restaurantId',\n sortKey: 'status',\n fields: [{\n label: `${t('餐廳')} ID`,\n key: 'restaurantId',\n type: 'select',\n options: [{ value: restaurantId, label: restaurantId }],\n disabled: true,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: ['使用中', '已停用'].map((item) => {\n return { value: item, label: item };\n }),\n }],\n operation: getRecurringOrdersByRestaurantByStatus,\n },\n ];\n if (clientId) {\n indexes[0].fields.push( {\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n disabled: true,\n });\n }\n setIndexes(indexes);\n setQueryParams({\n restaurantId,\n status: '使用中',\n clientId,\n });\n } else if (elderId) {\n setIndexes([]);\n setQueryParams({});\n setData([]);\n (async () => {\n setIsLoading(true);\n try {\n const recurringOrdersByElder = await asyncListAll(getRecurringOrdersByElderByStatus, { elderId });\n let recurringOrdersByDeliveryGroups = [];\n if (deliveryGroups && deliveryGroups.length !== 0) {\n console.log(deliveryGroups);\n recurringOrdersByDeliveryGroups = await Promise.all(deliveryGroups.map(({ deliveryGroup: { id: deliveryGroupId } }) =>\n asyncListAll(getRecurringOrdersByDeliveryGroupByStatus, { deliveryGroupId })));\n }\n console.log([...recurringOrdersByElder, ...recurringOrdersByDeliveryGroups.flat()]);\n setData([...recurringOrdersByElder, ...recurringOrdersByDeliveryGroups.flat()]);\n } catch (e) {\n console.error(e);\n }\n setIsLoading(false);\n })();\n } else if (clientId) {\n setIndexes([\n {\n name: 'getRecurringOrdersByClientByStatus',\n label: '按狀態查詢',\n partitionKey: 'clientId',\n sortKey: 'status',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: ['使用中', '已停用'].map((item) => {\n return { value: item, label: item };\n }),\n }],\n operation: getRecurringOrdersByClientByStatus,\n },\n ]);\n setQueryParams({\n clientId,\n status: '使用中',\n });\n } else {\n setIndexes(defaultIndexes);\n setQueryParams({\n clientId,\n status: '使用中',\n });\n }\n }, [elderId, clientId, restaurantId, queryStatus]);\n\n const onDataSelectionChange = (dataSelected) => {\n ordersSelected.current = dataSelected;\n };\n\n if (!indexes || !queryParams) return null;\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n return (\n \n \n \n );\n },\n };\n\n if (isLoading) {\n return ();\n }\n\n return (\n \n \n );\n}\n\nRecurringOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n clientId: PropTypes.string,\n elderId: PropTypes.string,\n deliveryGroups: PropTypes.array,\n deliveryStaffId: PropTypes.string,\n restaurantId: PropTypes.string,\n defaultIndex: PropTypes.number,\n queryStatus: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\n\nimport VerticalTabs from 'components/Tab/VerticalTabs';\nimport OrderTable from 'components/OrderTable';\nimport RecurringOrderTable from 'components/RecurringOrderTable';\nimport RestaurantCard from 'components/Card/RestaurantCard';\nimport RestaurantMeals from 'views/Admin/RestaurantMeals/RestaurantMeals';\nimport RestaurantOwnerCard from 'components/Card/RestaurantOwnerCard';\n\nexport default function RestaurantDetails({ id: inId, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [tabs, setTabs] = useState([]);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n const tabs = [\n {\n label: '基本資料',\n component: \n \n \n \n \n \n \n ,\n },\n {\n label: '訂單',\n component: ,\n },\n {\n label: '週期性排單',\n component: ,\n },\n {\n label: t('餐點'),\n component: ,\n },\n ];\n setTabs(tabs);\n }, [id]);\n\n if (!id) {\n return null;\n }\n\n return (\n \n );\n}\n\nRestaurantDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Box from '@material-ui/core/Box';\n\nexport default function TabPanel(props) {\n const { children, value, index, p = 0, ...other } = props;\n\n return (\n
\n );\n}\n\nTabPanel.propTypes = {\n children: PropTypes.element.isRequired,\n value: PropTypes.number,\n index: PropTypes.number,\n p: PropTypes.number,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport { makeStyles } from '@material-ui/core/styles';\n// import { useHistory, useLocation } from 'react-router-dom';\nimport querystring from 'query-string';\n\nimport TabPanel from 'components/Tab/TabPanel';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n display: 'flex',\n backgroundColor: 'inherit',\n },\n tabs: {\n borderRight: `1px solid ${theme.palette.divider}`,\n marginRight: theme.spacing(1),\n },\n panels: {\n flex: 1,\n overflowX: 'auto',\n },\n}));\n\nexport default function VerticalTabs({\n tabs = [],\n isNested = false,\n defaultTabIndex = 0,\n padding = 16,\n}) {\n const classes = useStyles();\n // const history = useHistory();\n // const location = useLocation();\n\n const [tabIndex, setTabIndex] = useState(-1);\n\n const handleChangeTab = (e, newValue) => {\n setTabIndex(newValue);\n\n if (!isNested) {\n const tabName = tabs[newValue].label.replace('&', ' ');\n // const params = new URLSearchParams({ tab: tabName });\n // history.replace({\n // // pathname: location.pathname,\n // search: params.toString(),\n // });\n const url = new URL(window.location);\n url.searchParams.set('tab', tabName);\n window.history.pushState(null, '', url.toString());\n }\n };\n\n useEffect(() => {\n if (!tabs || tabs.length === 0 || isNested) {\n setTabIndex(defaultTabIndex);\n }\n\n const { tab } = querystring.parse(window.location.search);\n if (tab) {\n const tabIndex = !isNaN(tab) ? parseInt(tab) : tabs.findIndex(({ label }) => label.replace('&', ' ') === tab);\n setTabIndex(tabIndex);\n } else {\n setTabIndex(defaultTabIndex);\n }\n }, [isNested, tabs, defaultTabIndex]);\n\n if (tabIndex < 0) return null;\n\n return (\n
\n \n {tabs.map(({ label }, index) => (\n \n ))}\n \n {tabs.map(({ component }, index)=>(\n \n {component}\n \n ))}\n
\n );\n}\n\nVerticalTabs.propTypes = {\n tabs: PropTypes.array,\n isNested: PropTypes.bool,\n defaultTabIndex: PropTypes.number,\n padding: PropTypes.number,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\n\nimport Table from 'components/Table/Table';\nimport { asyncListAll } from 'utilities/graph';\n// import FormDialog from 'components/FormDialog';\nimport { sortBy } from 'utilities/sorting';\nimport QueryGenerator from 'components/QueryGenerator';\n// import { Colors } from '@silvergatedelivery/constants';\n\nexport default function DataTable({\n data: inData,\n indexes,\n defaultIndex,\n queryDefaultParams = {},\n title = '資料',\n description,\n columns,\n options,\n listQuery,\n listQueries,\n queryFunc,\n disableUpdate,\n padding = 16,\n dataSortFunc,\n showQueryGenerator = true,\n onDataSelectionChange,\n customToolbarSelect,\n customDownloadData,\n children,\n onRefresh,\n onParamChange,\n ...props\n}) {\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n const [params, setParams] = useState();\n // const [open, setOpen] = useState(false);\n // const [editItem, setEditItem] = useState();\n\n const handleUpdate = (items) => {\n setData([...items]);\n };\n\n useEffect(() => {\n if (inData) {\n setData(inData);\n return;\n }\n\n if (!listQuery && !listQueries && !queryFunc) {\n setData([]);\n return;\n }\n\n (async () => {\n try {\n setIsLoading(true);\n\n let records = [];\n\n if (listQuery) {\n records = await asyncListAll(listQuery.name, listQuery.params);\n } else\n if (listQueries) {\n await Promise.all(listQueries.map(async (listQuery) => {\n const data = await asyncListAll(listQuery.name, listQuery.params);\n records = [...records, ...data];\n }));\n } else\n if (queryFunc) {\n records = await queryFunc();\n } else {\n records = [];\n }\n\n setData(records.sort(dataSortFunc ? dataSortFunc : sortBy('createdAt', true)));\n\n // testing\n if (process.env.NODE_ENV === 'development') {\n // setOpen(true);\n // setEditItem(records[0]);\n }\n } catch (e) {\n global.logger.error(e);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [inData, lastUpdatedAt, listQuery, listQueries, queryFunc, dataSortFunc]);\n\n const onRowSelectionChange = (_currentRowsSelected, _allRowsSelected, rowsSelected) => {\n if (onDataSelectionChange) {\n onDataSelectionChange(data.filter((_d, index) => rowsSelected.includes(index)));\n }\n };\n\n // global.logger.debug('indexes', { indexes, queryDefaultParams });\n\n return (\n \n {indexes && indexes.length > 0 &&\n \n {\n handleUpdate(data);\n setParams(params);\n onParamChange && onParamChange(params);\n }}\n refreshAt={lastUpdatedAt}\n display={showQueryGenerator}\n appendNewData={true}\n />\n }\n {children && {children(data, params)}}\n \n setOpen(true)}\n // onBatchAdd={onBatchAdd}\n // onUpdateItem={disableUpdate ? undefined : (item)=>{\n // setOpen(true);\n // setEditItem(item);\n // }}\n onRowSelectionChange={onRowSelectionChange}\n customToolbarSelect={customToolbarSelect}\n customDownloadData={customDownloadData}\n onRefresh={!indexes || indexes.length == 0 && onRefresh ? onRefresh :\n (updatedData) => {\n global.logger.debug('onRefresh', updatedData);\n try {\n if (updatedData) {\n if (Array.isArray(updatedData)) {\n updatedData.forEach((updatedDataItem) => {\n const matched = data.find((x) => x.id === updatedDataItem.id);\n if (matched) {\n Object.assign(matched, updatedDataItem);\n } else {\n // TODO: handle not matched\n }\n });\n setData([...data]);\n } else {\n const matched = data.find((x) => x.id === updatedData.id);\n if (matched) {\n Object.assign(matched, updatedData);\n setData([...data]);\n } else\n if (updatedData.id) {\n setData([updatedData, ...data]);\n } else {\n setLastUpdatedAt(Date.now());\n }\n }\n } else {\n setLastUpdatedAt(Date.now());\n }\n } catch (e) {\n setLastUpdatedAt(Date.now());\n }\n }}\n {...props}\n />\n \n {/* {open &&\n {\n setOpen(false);\n setEditItem();\n }}\n >\n {\n setOpen(false);\n setLastUpdatedAt(Date.now());\n setEditItem();\n }}\n />\n } */}\n \n );\n}\n\nDataTable.propTypes = {\n data: PropTypes.array,\n indexes: PropTypes.array,\n defaultIndex: PropTypes.number,\n queryDefaultParams: PropTypes.object,\n title: PropTypes.string,\n description: PropTypes.string,\n columns: PropTypes.array,\n options: PropTypes.object,\n listQuery: PropTypes.object,\n listQueries: PropTypes.array,\n queryFunc: PropTypes.func,\n form: PropTypes.func,\n disableUpdate: PropTypes.bool,\n padding: PropTypes.number,\n dataSortFunc: PropTypes.func,\n showQueryGenerator: PropTypes.bool,\n onDataSelectionChange: PropTypes.func,\n customToolbarSelect: PropTypes.func,\n customDownloadData: PropTypes.func,\n children: PropTypes.func,\n onRefresh: PropTypes.func,\n onParamChange: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport Link from '@material-ui/core/Link';\nimport Button from '@material-ui/core/Button';\nimport { Link as RouteLink } from 'react-router-dom';\nimport IconButton from '@material-ui/core/IconButton';\nimport LaunchIcon from '@material-ui/icons/Launch';\nimport cache from 'utilities/cache';\n\nfunction LinkButton({\n path,\n label,\n size = 'small',\n newTab = true,\n disabled = false,\n text,\n icon,\n buttonStyle = {},\n}) {\n const linkProps = newTab ? {\n target: '_blank',\n rel: 'noopener',\n } : {};\n let url = path;\n if (!path.startsWith('https://')) {\n url = `/${cache.get('app:pathPrefix')}${path}`;\n }\n const getLinkComponent = () => {\n if (text && icon) {\n return (\n \n {text}\n \n );\n }\n\n if (text) {\n return text;\n }\n\n return (\n \n {icon ? icon : }\n \n );\n };\n\n return (\n \n e.preventDefault() : undefined}\n {...linkProps}\n style={{ color: 'white' }}\n >\n {getLinkComponent()}\n \n \n );\n}\n\nLinkButton.propTypes = {\n label: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n text: PropTypes.string,\n size: PropTypes.string,\n newTab: PropTypes.bool,\n disabled: PropTypes.bool,\n icon: PropTypes.element,\n buttonStyle: PropTypes.object,\n};\n\nexport default LinkButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport grey from '@material-ui/core/colors/grey';\n\nconst useStyles = makeStyles((theme) => ({\n nestedContainer: {\n backgroundColor: grey['200'],\n },\n nestedContainerNoPadding: {\n backgroundColor: grey['200'],\n padding: 0,\n },\n childrenContainer: {\n marginBottom: theme.spacing(4),\n },\n}));\n\nfunction NestedTableContainer({ columns = [], children, noPadding = false }) {\n const classes = useStyles();\n\n return (\n \n \n {Array.isArray(children) ?\n children.map((x, index)=>(\n
\n {x}\n
\n )):\n children}\n
\n
);\n}\n\nNestedTableContainer.propTypes = {\n columns: PropTypes.array,\n children: PropTypes.node,\n noPadding: PropTypes.bool,\n};\n\nexport default NestedTableContainer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TableFooter from '@material-ui/core/TableFooter';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport MuiTablePagination from '@material-ui/core/TablePagination';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst defaultFooterStyles = {};\nconst footerStyle = {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: '0px 24px 0px 24px',\n};\n\nfunction Footer({ description = '', count, textLabels,\n rowsPerPage, rowsPerPageOptions = [10, 20, 50, 100, 500, 1000],\n page, changePage, changeRowsPerPage,\n}) {\n return (\n \n \n \n {description}\n \n \n `${from}-${to} ${textLabels.displayRows} ${count}`}\n backIconButtonProps={{\n 'aria-label': textLabels.previous,\n }}\n nextIconButtonProps={{\n 'aria-label': textLabels.next,\n }}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={(_, page) => changePage(page)}\n onRowsPerPageChange={(event) => changeRowsPerPage(event.target.value)}\n />\n \n \n \n );\n}\n\nFooter.propTypes = {\n description: PropTypes.string,\n count: PropTypes.any,\n classes: PropTypes.any,\n textLabels: PropTypes.any,\n rowsPerPage: PropTypes.any,\n rowsPerPageOptions: PropTypes.any,\n page: PropTypes.any,\n changeRowsPerPage: PropTypes.func,\n changePage: PropTypes.func,\n};\n\nexport default withStyles(defaultFooterStyles, { name: 'Footer' })(Footer);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport MUIDataTable from 'mui-datatables';\nimport moment from 'moment-timezone';\nimport deepcopy from 'deepcopy';\nimport { CSVLink } from 'react-csv';\nimport ReactJson from 'react-json-view';\nimport { toastr } from 'react-redux-toastr';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { createTheme, MuiThemeProvider } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport EditIcon from '@material-ui/icons/Edit';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport SyncIcon from '@material-ui/icons/Sync';\nimport AddIcon from '@material-ui/icons/Add';\n// import AddCircleIcon from '@material-ui/icons/AddCircle';\nimport GetAppIcon from '@material-ui/icons/GetApp';\n// import QueueIcon from '@material-ui/icons/Queue';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport FileCopyIcon from '@material-ui/icons/FileCopyOutlined';\n\nimport Footer from './Footer';\nimport { Colors, TIME_ZONE } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { formatDatetimeFromNow } from 'utilities/format';\nimport { useCache } from 'CacheProvider';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n position: 'relative',\n flex: 1,\n height: '100%',\n width: '100%',\n },\n numberContainer: {\n textAlign: 'right',\n paddingRight: theme.spacing(1),\n },\n loadingContainer: {\n position: 'absolute',\n zIndex: 110,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'rgba(255,255,255,0.8)',\n },\n}));\n\nconst theme = (props = {}) => {\n const { cell = {} } = props;\n const cellStyle = Object.assign({\n minWidth: 48,\n maxWidth: 200,\n }, cell);\n\n return createTheme({\n palette: {\n primary: {\n light: Colors.primaryLight,\n main: Colors.primary,\n dark: Colors.primaryDark,\n contrastText: '#fff',\n },\n },\n overrides: {\n MUIDataTable: {\n paper: {\n '& tbody tr.Mui-selected': {\n '&:hover': {\n backgroundColor: Colors.light2,\n },\n },\n },\n },\n MUIDataTableHeadCell: {\n root: {\n ...cellStyle,\n fontWeight: 'bold',\n },\n },\n MUIDataTableBodyCell: {\n root: cellStyle,\n },\n MUIDataTableSelectCell: {\n expandDisabled: {\n // Soft hide the button.\n visibility: 'hidden',\n },\n },\n MUIDataTableFilter: {\n root: {\n minWidth: 400,\n },\n },\n MuiTab: {\n root: {\n minWidth: `100px !important`,\n },\n },\n },\n });\n};\n\nexport default function Table({\n title,\n description = '',\n data,\n columns,\n options,\n themeProps,\n onUpdateItem,\n onRefresh,\n onAddItem,\n onBatchAdd,\n // batchTemplateFields,\n isLoading,\n // nested = false,\n hide,\n editButton: EditButton,\n customButton,\n onRowSelectionChange = () => {},\n customToolbarSelect,\n customDownloadData,\n}) {\n const classes = useStyles();\n const { appGroup } = useCache();\n\n const [updatedColumns, setUpdatedColumns] = useState(columns);\n const groupKey = appGroup === 'FacilityAdmins' ? '' : appGroup;\n const cachedVisibleColumnKey = `app:table:${groupKey}${title}${description}:visibleColumns`;\n const cachedPageKey = `app:table:${groupKey}${title}${description}:page`;\n const cachedRowsPerPageKey = `app:table:${groupKey}${title}${description}:RowsPerPage`;\n\n // const handleUpload = (event) => {\n // const file = event.target.files[0];\n // // global.logger.debug(file);\n\n // const reader = new FileReader();\n // reader.onload = () => {\n // const options = {\n // columns: true,\n // };\n // csv.parse(reader.result, options, (err, data) => {\n // if (err) {\n // global.logger.debug(err);\n // } else\n // if (onBatchAdd) {\n // const updatedData = data.map((item) => {\n // const newItem = {};\n // columns\n // .filter(({ isTemplate }) => isTemplate)\n // .forEach(({ name, label, type }) => {\n // newItem[name] = item[label];\n // switch (type) {\n // case 'number':\n // newItem[name] = parseInt(item[label]);\n // break;\n // default:\n // newItem[name] = item[label];\n // }\n // });\n\n // return newItem;\n // });\n // onBatchAdd(updatedData);\n // }\n // });\n // };\n\n // reader.readAsText(file, { encoding: 'utf8' });\n // };\n\n // overwrite options\n const updatedOptions = Object.assign({\n enableNestedDataAccess: '.',\n pagination: true,\n responsive: 'standard', // nested ? 'vertical' : 'standard',\n tableBodyHeight: undefined, // nested ? undefined : 'calc(100vh - 223px)', // 183\n rowsPerPageOptions: [10, 20, 50, 100, 500, 1000],\n page: cache.get(cachedPageKey) || 0,\n rowsPerPage: cache.get(cachedRowsPerPageKey) || 10,\n filterType: 'checkbox',\n fixedHeader: true,\n resizableColumns: false,\n selectableRows: 'none',\n print: true,\n download: true,\n downloadOptions: {\n filename: `${title}.csv`,\n separator: ',',\n filterOptions: {\n useDisplayedColumnsOnly: true,\n useDisplayedRowsOnly: true,\n },\n },\n onDownload: (buildHead, buildBody, columns, data) => {\n let updatedData = data;\n if (customDownloadData) {\n updatedData = customDownloadData(columns, data);\n }\n return '\\uFEFF' + buildHead(columns) + buildBody(updatedData);\n },\n expandableRows: true,\n isRowExpandable: () => false,\n isRowSelectable: () => false,\n selectableRowsOnClick: false,\n customToolbarSelect: customToolbarSelect && ((selectedRows, displayData, setSelectedRows) =>\n customToolbarSelect({ onUpdate: onRefresh, selectedRows, setSelectedRows })),\n onRowSelectionChange,\n onRowClick: (rowData, rowMeta) => {\n const item = data[rowMeta.dataIndex];\n global.logger.debug(item);\n },\n customToolbar: () =>\n \n {onRefresh &&\n \n \n \n \n }\n {onBatchAdd &&\n \n \n isTemplate).map(({ label }) => label)]}\n filename={`${title}-批量模板.csv`}\n component={CSVLink}\n >\n \n \n \n \n }\n {/* {onBatchAdd &&\n \n \n \n \n \n \n } */}\n {EditButton && }\n {onAddItem &&\n \n \n \n \n }\n {customButton && customButton({ data })}\n ,\n customFooter: (count, page, rowsPerPage, changeRowsPerPage, changePage, textLabels) => {\n // 用onChangePage和onChangeRowsPerPage會有一些狀況會沒有被call, 無法正確cache, 所以在這裡cache\n cache.set(cachedPageKey, page);\n cache.set(cachedRowsPerPageKey, rowsPerPage);\n return (\n \n );\n },\n textLabels: {\n body: {\n noMatch: '抱歉,找不到相關資料',\n toolTip: '排序',\n columnHeaderTooltip: (column) => `使用[${column.label}]排序`,\n },\n pagination: {\n next: '下一頁',\n previous: '上一頁',\n rowsPerPage: '每頁顯示',\n displayRows: '總項目數',\n },\n toolbar: {\n search: '搜尋',\n downloadCsv: '下載 CSV',\n print: '列印',\n viewColumns: '顯示欄位',\n filterTable: '篩選數據',\n },\n filter: {\n all: '全部',\n title: '篩選數據',\n reset: '重設',\n },\n viewColumns: {\n title: '欄位',\n titleAria: '顯示/隱藏欄位',\n },\n selectedRows: {\n text: '筆資料已選取',\n },\n // selectedRows: {\n // text: 'row(s) selected',\n // delete: 'Delete',\n // deleteAria: 'Delete Selected Rows',\n // },\n },\n onViewColumnsChange(changedColumn, action) {\n global.logger.debug('onViewColumnsChange', changedColumn, action);\n const cacheVisiableColumns = (cache.get(cachedVisibleColumnKey) || '').split(',');\n const index = cacheVisiableColumns.indexOf(changedColumn);\n if (action === 'add' && index === -1) {\n cacheVisiableColumns.push(changedColumn);\n } else\n if (action === 'remove' && index !== -1) {\n cacheVisiableColumns.splice(index, 1);\n }\n\n cache.set(cachedVisibleColumnKey, cacheVisiableColumns.join(','));\n },\n onColumnViewChange: (changedColumn, action, ...args) => {\n global.logger.debug(changedColumn, action, args);\n const cacheVisiableColumns = (cache.get(cachedVisibleColumnKey) || '').split(',');\n const index = cacheVisiableColumns.indexOf(changedColumn);\n if (action === 'add' && index === -1) {\n cacheVisiableColumns.push(changedColumn);\n } else\n if (action === 'remove' && index !== -1) {\n cacheVisiableColumns.splice(index, 1);\n }\n\n cache.set(cachedVisibleColumnKey, cacheVisiableColumns.join(','));\n },\n }, options);\n\n useEffect(() => {\n const newColumns = deepcopy(columns);\n\n const cacheVisiableColumns = cache.get(cachedVisibleColumnKey) ? cache.get(cachedVisibleColumnKey).split(',') : undefined;\n const visibleColumns = [];\n\n if ((EditButton || onUpdateItem) && !newColumns.find(({ name }) => name === 'actions')) {\n newColumns.push({\n name: 'actions',\n label: ' ',\n type: 'actions',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n viewColumns: false,\n customBodyRenderLite: (dataIndex) => {\n return (\n
\n {\n EditButton ? :\n {\n if (onUpdateItem) {\n onUpdateItem(data[dataIndex], dataIndex);\n }\n }}\n >\n \n \n }\n
\n );\n },\n },\n });\n }\n\n newColumns\n .map((column, index) => {\n if (!Object.prototype.hasOwnProperty.call(column, 'options')) {\n column.options = {};\n }\n return column;\n })\n .forEach(({ name, type, options = {} }) => {\n switch (type) {\n case 'actions':\n break;\n case 'datetime':\n options.customBodyRender = (value) => {\n if (!value) return '';\n\n if (value === 'N/A') return '';\n\n if (Number.isInteger(value) && value < 9999999999) {\n value = value * 1000;\n }\n\n // if (!moment(value, 'DD-MM-YYYY', true).isValid()) return '';\n\n return (\n
\n {moment(value).tz(TIME_ZONE).format('YYYY/MM/DD')}
\n {moment(value).tz(TIME_ZONE).format('HH:mm')}\n
);\n };\n break;\n case 'time':\n options.customBodyRender = (value) => {\n if (!value) return '';\n\n if (value === 'N/A') return '';\n\n if (Number.isInteger(value) && value < 9999999999) {\n value = value * 1000;\n }\n\n return moment(value).tz(TIME_ZONE).format('HH:mm');\n };\n break;\n case 'expirationUnixTime':\n options.customBodyRender = (value) => {\n if (!value) return '';\n\n if (value === 'N/A') return '';\n\n if (Number.isInteger(value) && value < 9999999999) {\n value = value * 1000;\n }\n\n // if (!moment(value, 'DD-MM-YYYY', true).isValid()) return '';\n\n return (\n
\n {formatDatetimeFromNow(value)}\n
);\n };\n break;\n case 'id':\n options.customBodyRenderLite = (value) => {\n return (\n toastr.info('已複製至剪接簿')}\n >\n \n \n );\n };\n break;\n case 'checkbox':\n options.customBodyRender = (value) => {\n const isChecked = (value == 'true' || value === 'yes' || value === true || value === 1 || value) ? true : false; // eslint-disable-line eqeqeq\n return ();\n };\n break;\n case 'number':\n options.customBodyRender = (val) => (\n
\n {!isNaN(val) ? new Intl.NumberFormat().format(val) : 'N/A'}\n
\n );\n break;\n case 'currency':\n options.customBodyRender = (val) => (\n
\n {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(val).replace('.00', '')}\n
\n );\n break;\n case 'currency-cents':\n options.customBodyRender = (val) => (\n
\n {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(val/100).replace('.00', '')}\n
\n );\n break;\n case 'boolean':\n options.customBodyRender = (val) => val ? '是' : '否';\n break;\n case 'json':\n options.customBodyRender = (input) => {\n try {\n let jsonObj = input;\n while (typeof jsonObj === 'string') {\n jsonObj = JSON.parse(jsonObj);\n }\n return ;\n } catch (e) {\n global.logger.debug(e);\n return '';\n }\n };\n break;\n default:\n options.customBodyRender = options.customBodyRender || ((val) => val ? val : null);\n break;\n }\n\n if (Array.isArray(hide) && hide.includes(name)) {\n options.display = false;\n }\n\n if (cacheVisiableColumns && options.display !== 'excluded' && options.display !== 'always') {\n options.display = cacheVisiableColumns.includes(name);\n }\n\n if (options.display !== false && options.display !== 'excluded') {\n visibleColumns.push(name);\n }\n\n if (options.display === 'always') {\n options.display = 'true';\n options.viewColumns = false;\n }\n });\n\n setUpdatedColumns(newColumns);\n cache.set(cachedVisibleColumnKey, visibleColumns.join(','));\n }, [columns, data, onUpdateItem, classes.numberContainer, hide, EditButton, cachedVisibleColumnKey]);\n\n return (\n \n
\n {isLoading &&\n
\n \n
}\n \n
\n
\n );\n}\n\nTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n columns: PropTypes.array,\n options: PropTypes.shape({\n display: PropTypes.bool,\n viewColumns: PropTypes.bool,\n customBodyRender: PropTypes.func,\n customBodyRenderLite: PropTypes.func,\n rowsPerPageOptions: PropTypes.any,\n }),\n nested: PropTypes.bool,\n themeProps: PropTypes.object,\n maxHeight: PropTypes.string,\n onUpdateItem: PropTypes.func,\n onRefresh: PropTypes.func,\n onAddItem: PropTypes.func,\n onBatchAdd: PropTypes.func,\n batchTemplateFields: PropTypes.array,\n isLoading: PropTypes.bool,\n hide: PropTypes.array,\n editButton: PropTypes.func,\n customButton: PropTypes.func,\n onRowSelectionChange: PropTypes.func,\n customToolbarSelect: PropTypes.func,\n customDownloadData: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { tag as tagList } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function TagChip({ tag }) {\n const classes = useStyles();\n\n const matched = tagList[tag.category][tag.subcategory];\n // const backgroundColor = tag.color ? tag.color : (matched ? matched.color : undefined);\n const backgroundColor = (matched ? matched.color : undefined);\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nTagChip.propTypes = {\n tag: PropTypes.object,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/esm/Page/AnnotationLayer.css';\n\nimport Container from '@material-ui/core/Container';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { makeStyles } from '@material-ui/core/styles';\n\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`;\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n marginTop: -40,\n paddingTop: 40,\n width: '100%',\n },\n paper: {\n marginTop: theme.spacing(3),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n pdfDocumentContainer: {\n marginTop: 50,\n marginLeft: -20,\n },\n // pdfDocumentPage: {\n // marginTop: -150,\n // marginBottom: -150,\n // marginLeft: -20,\n // clipPath: 'inset(7% 0% 7% 0%)',\n // },\n}));\n\nlet container = {};\nexport default function Terms({ filename }) {\n const classes = useStyles();\n const [numPages, setNumPages] = useState(null);\n\n function onDocumentLoadSuccess({ numPages: nextNumPages }) {\n setNumPages(nextNumPages);\n }\n\n return (\n
\n container= el}>\n \n
\n \n {\n container && Array.from(\n new Array(numPages),\n (el, index) => (\n false}\n width={container.offsetWidth}\n // https://github.com/wojtekmaj/react-pdf/issues/695#issuecomment-768922757\n renderMode={'svg'}\n scale={1}\n />\n ),\n )\n }\n \n
\n
\n
\n );\n}\n\nTerms.propTypes = {\n filename: PropTypes.string.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { uberOrderStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function UberOrderStatusChip({ status }) {\n const classes = useStyles();\n\n const matchedOrderStatus = uberOrderStatus.find((item) => item.value === status);\n const label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nUberOrderStatusChip.propTypes = {\n status: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport UberOrderStatusChip from 'components/UberOrderStatusChip';\n\nexport default function UberOrderLogTable({\n title = '訂單更新紀錄',\n description,\n data,\n ...props\n}) {\n const options = {\n rowsPerPageOptions: [5, 10, 20, 50],\n rowsPerPage: 5,\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'courier',\n label: '送餐員',\n type: 'json',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'cancelationReasonObj',\n label: '取消原因',\n type: 'json',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'undeliverableReason',\n label: '無法送達理由',\n options: {\n filter: false,\n sort: false,\n },\n },\n\n {\n name: 'created',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n ];\n\n return (\n \n \n \n );\n}\n\nUberOrderLogTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport shortuuid from 'short-uuid';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listUberOrders,\n getUberOrdersByStatusByShouldBeSentToUber,\n getUberOrdersByProcessStatusByShouldBeSentToUber,\n getUberOrdersByOrderByCreatedAt,\n} from 'graphql/queries';\nimport Order from 'components/Order/Order';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport {\n // LAUNCH_DATE,\n TIME_ZONE,\n uberOrderStatus,\n processStatus,\n} from '@silvergatedelivery/constants';\nimport ProcessStatusChip from 'components/ProcessStatusChip';\nimport UberOrderStatusChip from 'components/UberOrderStatusChip';\nimport UberOrderLogTable from './UberOrderLogTable';\n// import ImagePreviewAvatar from 'components/ImagePreviewAvatar';\n\n// const past = moment(LAUNCH_DATE).tz(TIME_ZONE).format('YYYY-MM-DD');\nconst past = moment().add(-3, 'days').tz(TIME_ZONE).format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function UberOrderTable({\n title = 'Uber 訂單',\n description,\n orderId,\n data,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [showQueryGenerator, setShowQueryGenerator] = useState(true);\n const [showNestedOrder, setShowNestedOrder] = useState(true);\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const [id, uberDeliveryId, uuid, orderId, pickupId, processlogs] = rowData; // eslint-disable-line no-unused-vars\n\n return (\n \n \n {showNestedOrder && }\n \n );\n },\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'uberDeliveryId',\n label: 'Uber編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'uuid',\n label: '客服單號',\n options: {\n display: true,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'orderId',\n label: '訂單編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n\n {\n name: 'orderId',\n label: '取餐編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n customBodyRender(value) {\n return shortuuid().fromUUID(value).slice(-6);\n },\n },\n },\n {\n name: 'processlogs',\n label: '紀錄',\n options: {\n display: 'excluded',\n filter: false,\n sort: false,\n },\n },\n {\n name: 'processlogs',\n label: '送餐員',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender(processlogs) {\n if (processlogs && processlogs.length > 0) {\n const lastLog = JSON.parse(processlogs[processlogs.length - 1]);\n if (lastLog && lastLog.courier) {\n const name = lastLog.courier.name || '';\n const phoneNumber = lastLog.courier.phoneNumber || '';\n return `${name}${phoneNumber}`;\n }\n }\n return '';\n },\n },\n },\n {\n name: 'processStatus',\n label: '處理狀況',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'processStatusMessage',\n label: '處理資訊',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'trackingUrl',\n label: '追蹤網頁',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(trackingUrl) {\n if (!trackingUrl) {\n return;\n }\n return (\n \n );\n },\n },\n },\n {\n name: 'cancelledReason',\n label: '取消原因',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '描述',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'fee',\n label: '送餐費用',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'shouldBeSentToUberAt',\n label: '預計送單時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n // {\n // name: 'driver',\n // label: '送餐員',\n // options: {\n // filter: true,\n // sort: true,\n // customBodyRender({ id, name, phoneNumber }) {\n // if (id === 'N/A') return '';\n\n // return `${name} ${phoneNumber}`;\n // },\n // },\n // },\n // {\n // name: 'uberOrderPayload',\n // label: 'Payload',\n // options: {\n // display: false,\n // filter: false,\n // sort: false,\n // customBodyRender(data) {\n // if (!data) return '';\n\n // return ;\n // },\n // },\n // },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderId',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n if (data) {\n setShowQueryGenerator(false);\n setShowNestedOrder(false);\n return;\n }\n if (orderId) {\n setShowQueryGenerator(false);\n setShowNestedOrder(false);\n setIndexes([\n {\n name: 'getUberOrdersByOrderByCreatedAt',\n label: '按訂單查詢',\n partitionKey: 'orderId',\n sortKey: 'createdAt',\n fields: [{\n label: '訂單編號',\n key: 'orderId',\n }],\n operation: getUberOrdersByOrderByCreatedAt,\n },\n ]);\n setQueryParams({\n orderId,\n createdAt: {\n from: past,\n to: todayDate,\n },\n });\n return;\n }\n setIndexes([\n {\n name: 'getUberOrdersByProcessStatusByShouldBeSentToUber',\n label: '按處理狀況查詢',\n partitionKey: 'processStatus',\n sortKey: 'shouldBeSentToUberAt',\n fields: [{\n label: '處理狀況',\n key: 'processStatus',\n type: 'select',\n options: processStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToUberAt',\n type: 'datetime',\n }],\n operation: getUberOrdersByProcessStatusByShouldBeSentToUber,\n },\n {\n name: 'getUberOrdersByStatusByShouldBeSentToUber',\n label: '按Uber狀態查詢',\n partitionKey: 'status',\n sortKey: 'shouldBeSentToUberAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: uberOrderStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToUberAt',\n type: 'datetime',\n }],\n operation: getUberOrdersByStatusByShouldBeSentToUber,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '預計送單時間',\n key: 'shouldBeSentToUberAt',\n type: 'datetime',\n }],\n operation: listUberOrders,\n },\n ]);\n setQueryParams({\n processStatus: 'processing',\n shouldBeSentToUberAt: {\n from: past,\n to: todayDate,\n },\n });\n }, [data, orderId]);\n\n return (\n \n \n \n );\n}\n\nUberOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n orderId: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Storage } from 'aws-amplify';\n\nimport Avatar from '@material-ui/core/Avatar';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n border: '1px solid rgba(255,255,255,0.3)',\n },\n}));\n\nexport default function UserAvatar({ username = '', name = '' }) {\n const classes = useStyles();\n\n const [uri, setUri] = useState('');\n const [s3Key, setS3Key] = useState();\n\n useEffect(() => {\n (async () => {\n if (s3Key) {\n setUri(await Storage.get(s3Key));\n }\n })();\n }, [s3Key]);\n\n useEffect(() => {\n if (username) {\n setS3Key(`users/${username}/avatar.jpeg`);\n }\n }, [username]);\n\n return (\n \n );\n}\n\nUserAvatar.propTypes = {\n username: PropTypes.string,\n name: PropTypes.string,\n};\n","// export const GOOGLE_KEY = process.env.NODE_ENV === 'development' ?\n// '' : 'AIzaSyD9Vws7N_uC2Zd6znhSd83AKgLXn_kN5zU';\n\nexport const GOOGLE_KEY = 'AIzaSyD9Vws7N_uC2Zd6znhSd83AKgLXn_kN5zU';\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\n\nexport default function AutoSelect({\n id,\n options = [],\n values = [],\n descriptions = [],\n value: inValue,\n onChange,\n label,\n type,\n helperText = '',\n required = false,\n freeSolo = true,\n disabled = false,\n getOptionLabel,\n checkError = false,\n}) {\n const [inputValue, setInputValue] = useState('');\n const [value, setValue] = useState('');\n const [errorMsg, setErrorMsg] = useState();\n\n useEffect(() => {\n if (typeof inValue !== 'undefined') {\n const matchedIndex = values.findIndex((v) => v === inValue);\n if (matchedIndex !== -1) {\n setValue(options[matchedIndex]);\n setInputValue(options[matchedIndex]);\n setErrorMsg();\n return;\n } else if (freeSolo) {\n setValue('');\n if (typeof inValue === 'number') {\n setInputValue(inValue.toString());\n } else {\n setInputValue(inValue);\n }\n }\n if (matchedIndex === -1 && checkError) {\n setErrorMsg('沒有符合的資料');\n }\n } else {\n setValue('');\n setInputValue('');\n setErrorMsg();\n }\n }, [inValue, values, options]);\n\n const renderInput = (params) => {\n return (\n );\n };\n\n return (\n {\n if (newItem) {\n const matchedIndex = options.findIndex((label) => label === newItem);\n if (matchedIndex === -1 && checkError) {\n setErrorMsg('沒有符合的資料');\n }\n if (matchedIndex !== -1) {\n setErrorMsg();\n }\n onChange(values[matchedIndex]);\n } else if (freeSolo) {\n onChange(newItem === null ? undefined : newItem); // 不要return null, 因為null有機會對應到'無',會造成reset時跳出'無'\n }\n }}\n inputValue={inputValue || ''}\n onInputChange={(event, newInputValue, reason) => {\n if (reason === 'reset') return;\n\n setInputValue(newInputValue);\n\n if (newInputValue) {\n const matchedIndex = type === 'number' ?\n values.findIndex((value) => value === newInputValue):\n options.findIndex((label) => label === newInputValue);\n if (matchedIndex === -1 && checkError) {\n setErrorMsg('沒有符合的資料');\n }\n if (matchedIndex !== -1) {\n setErrorMsg();\n onChange(values[matchedIndex]);\n } else if (freeSolo) {\n onChange(newInputValue);\n }\n }\n }}\n renderInput={renderInput}\n disabled={disabled}\n renderOption={(option) => {\n const optionIndex = options.findIndex((item) => item === option);\n let description;\n if (optionIndex !== -1) {\n description = descriptions?.[optionIndex];\n }\n if (description) {\n return (\n
\n {option}\n {description}\n
\n );\n }\n return (\n \n {option}\n \n );\n }}\n />);\n}\n\n\nAutoSelect.propTypes = {\n id: PropTypes.string,\n options: PropTypes.array,\n values: PropTypes.array,\n descriptions: PropTypes.array,\n value: PropTypes.any,\n onChange: PropTypes.func,\n label: PropTypes.string,\n type: PropTypes.string,\n helperText: PropTypes.string,\n required: PropTypes.bool,\n freeSolo: PropTypes.bool,\n disabled: PropTypes.bool,\n getOptionLabel: PropTypes.func,\n checkError: PropTypes.bool,\n};\n","export const getDefaultMealItem = () => ({\n name: '',\n quantity: 1,\n price: 0,\n cost: 0,\n note: '',\n surcharges: [],\n});\n\nexport const getSampleOrder = (props = {}) => {\n const {\n elderId,\n noteForDelivery = '',\n noteForMeal = '',\n note,\n paymentMethod = 'PAID',\n deliveryGroupId,\n deliveryGroupSortOrder,\n } = props;\n return {\n elderId,\n noteForDelivery,\n noteForMeal,\n note,\n paymentMethod,\n deliveryGroupId,\n deliveryGroupSortOrder,\n mealItemName: '',\n mealItemQuantity: 1,\n mealItemPrice: 0,\n mealItemCost: 0,\n mealItemNote: '',\n mealItems: [getDefaultMealItem()],\n };\n};\n","export const getDeliveryGroupsByClientByIsActive = /* GraphQL */ `\n query GetDeliveryGroupsByClientByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryGroupsByClientByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n isActive\n name\n description\n }\n nextToken\n }\n }\n`;\n\nexport const getElderDeliveryGroupsByClientByStatus = /* GraphQL */ `\n query GetElderDeliveryGroupsByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDeliveryGroupsByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n }\n nextToken\n }\n }\n`;\n\nexport const getRestaurantMealsByRestaurantByIsActive = /* GraphQL */ `\n query GetRestaurantMealsByRestaurantByIsActive(\n $restaurantId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantMealFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantMealsByRestaurantByIsActive(\n restaurantId: $restaurantId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n isActive\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getRestaurantHolidayByRestaurantByYear = /* GraphQL */ `\n query GetRestaurantHolidayByRestaurantByYear(\n $restaurantId: ID\n $year: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantHolidayFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantHolidayByRestaurantByYear(\n restaurantId: $restaurantId\n year: $year\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n year\n closedDays\n }\n nextToken\n }\n }\n`;\n","import AutoSelectWidget from 'forms/components/AutoSelectWidget';\n\nconst uiSchema = {\n 'ui:order': [\n 'status',\n 'cancellationReason',\n 'cancellationNote',\n '*',\n ],\n 'status': {\n 'ui:width': '33.33%',\n },\n 'cancellationReason': {\n 'ui:width': '33.33%',\n },\n 'cancellationNote': {\n 'ui:width': '33.33%',\n },\n 'category': {\n 'ui:widget': AutoSelectWidget,\n },\n};\n\nexport default uiSchema;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n// import Grid from '@material-ui/core/Grid';\nimport moment from 'moment-timezone';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { getOrder } from 'graphql/queries';\nimport { adminUpdateOrder } from 'graphql/mutations';\nimport TextField from '@material-ui/core/TextField';\n// import Directions from 'components/Map/Directions';\n\nimport uiSchema from './AdminUpdateOrderForm.uiSchema';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nconst defaultFormData = {};\n\nexport default function AdminUpdateOrderForm({ formData: inFormData, ...props }) {\n const { t } = useTranslation();\n // load here for translation purpose\n const { default: schema } = require('./AdminUpdateOrderForm.schema.js');\n const formData = (inFormData || defaultFormData);\n if (!formData.deliveryStaffId) delete formData.deliveryStaffId;\n\n const [deliveryBy, setDeliveryBy] = useState(formData.deliveryBy);\n const [dirty, setDirty] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n // const [directionKey, setDirectionKey] = useState();\n // const [startAddress, setSartAddress] = useState();\n // const [endAddress, setEndAddress] = useState();\n\n const createFunc = async () => {};\n\n const updateFunc = async (data) => {\n setIsLoading(true);\n\n const status = data.deliveryStaffId && ['waitingForDeliveryStaff', 'reMatchingDeliveryStaff'].includes(data.status) ?\n 'ready' : data.status;\n\n // workaroud...\n data.mealItems.forEach((mealItem) => {\n if (!mealItem.surcharges) {\n mealItem.surcharges = [];\n }\n });\n const toUpdateData = {\n id: data.id,\n restaurantId: data.restaurantId,\n deliveryBy,\n status,\n deliveryStaffId: data.deliveryStaffId,\n deliveryStaffFee: data.deliveryStaffFee || 0,\n tier: data.tier,\n noteForDelivery: data.noteForDelivery,\n noteForMeal: data.noteForMeal,\n note: data.note,\n mealItems: data.mealItems,\n total: (data.mealItems || []).reduce((sum, item) => {\n return sum + item.price * item.quantity;\n }, 0),\n totalCost: (data.mealItems || []).reduce((sum, item) => {\n return sum + item.cost * item.quantity;\n }, 0),\n category: data.category,\n cancellationReason: data.cancellationReason,\n cancellationNote: data.cancellationNote,\n };\n global.logger.debug({ data, toUpdateData });\n\n try {\n await request(adminUpdateOrder, { input: { orders: [toUpdateData] } });\n } catch (e) {\n console.log(e);\n }\n const { data: { getOrder: order } } = await request(getOrder, { id: data.id });\n setIsLoading(false);\n return order;\n };\n\n // useEffect(() => {\n // if (directionKey) {\n // const [restaurantId, elderId] = directionKey.split('__');\n // (async () => {\n // const [\n // { data: { getRestaurant: restaurant } },\n // { data: { getElder: elder } },\n // ] = await Promise.all([\n // request(getRestaurant, { id: restaurantId }),\n // request(getElder, { id: elderId }),\n // ]);\n\n // setSartAddress(restaurant.address);\n // setEndAddress(elder.address);\n // })();\n // }\n // }, [directionKey]);\n\n return (\n \n {deliveryBy &&\n {\n const updatedDatetime = moment.tz(e.target.value, TIME_ZONE).toISOString();\n if (updatedDatetime) {\n setDeliveryBy(updatedDatetime);\n setDirty(true);\n }\n }}\n />}\n \n {/* */}\n \n \n );\n}\n\nAdminUpdateOrderForm.propTypes = {\n formData: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\nimport AddIcon from '@material-ui/icons/Add';\nimport IconButton from '@material-ui/core/IconButton';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport { Colors } from '@silvergatedelivery/constants';\nimport MealDateSelector from 'components/Date/MealDateSelector';\nimport AutoSelect from './AutoSelect';\nimport Directions from 'components/Map/Directions';\n\nimport { getDefaultMealItem } from './helpers';\nimport { asyncListAll } from 'utilities/graph';\nimport { getRestaurantHolidayByRestaurantByYear, getRestaurantMealsByRestaurantByIsActive } from './queries';\nimport moment from 'moment';\nimport { TIME_ZONE, ORDER_CATEGORY_LABEL } from '@silvergatedelivery/constants';\n\nexport default function OrderItem({\n index = 0,\n order,\n onRemove,\n onUpdate,\n elderOptions = [],\n restaurantOptions = [],\n restaurantMealOptions: inRestaurantMealOptions = {},\n deliveryStaffOptions = {},\n orderConfigurations = [],\n defaultLunchs = [],\n defaultDinners = [],\n defaultRestaurantId,\n defaultDeliveryStaffId,\n defaultMealItemNames,\n defaultCategory,\n defaultOpeningHours,\n defaultRestaurantHolidays,\n showMap = false,\n unlockDates = false,\n}) {\n const { t } = useTranslation();\n const [elderId, setElderId] = useState();\n const [noteForDelivery, setNoteForDelivery] = useState();\n const [noteForMeal, setNoteForMeal] = useState();\n const [category, setCategory] = useState(ORDER_CATEGORY_LABEL[0]);\n const [paymentMethod, setPaymentMethod] = useState('PAID');\n const [deliveryStaffFee, setDeliveryStaffFee] = useState(0);\n const [deliveryStaffId, setDeliveryStaffId] = useState();\n const [restaurantId, setRestaurantId] = useState();\n const [mealItems, setMealItems] = useState([getDefaultMealItem()]);\n const [lunchs, setLunchs] = useState([]);\n const [dinners, setDinners] = useState([]);\n const [restaurantHolidays, setRestaurantHolidays] = useState({});\n const [openingHours, setOpeningHours] = useState();\n const [restaurantMealOptions, setRestaurantMealOptions] = useState([]);\n const [isLalamoveMultiStopOrder, setIsLalamoveMultiStopOrder] = useState(false);\n\n const handleRemove = () => {\n if (onRemove) {\n onRemove();\n }\n };\n\n const handleUpdate = (obj = {}) => {\n if (onUpdate) {\n onUpdate(Object.assign(order, obj));\n }\n };\n\n const getConfigurationValues = (inConfigurationKey) => {\n try {\n const items = orderConfigurations.find(({ key }) => key === inConfigurationKey).value.split(',').map((x) => parseInt(x, 10));\n return items;\n } catch (e) {\n return [];\n }\n };\n\n useEffect(() => {\n setLunchs([...defaultLunchs]);\n handleUpdate({ lunchs: [...defaultLunchs] });\n }, [defaultLunchs]);\n\n useEffect(() => {\n setDinners([...defaultDinners]);\n handleUpdate({ dinners: [...defaultDinners] });\n }, [defaultDinners]);\n\n useEffect(() => {\n setRestaurantId(defaultRestaurantId);\n handleUpdate({ restaurantId: defaultRestaurantId });\n }, [defaultRestaurantId]);\n\n useEffect(() => {\n let lalamoveMultiStopOrder = false;\n if (defaultDeliveryStaffId) {\n const deliveryStaffIndex = deliveryStaffOptions.enum.findIndex((value) => value === defaultDeliveryStaffId);\n if (deliveryStaffIndex !== -1) {\n const deliveryStaffName = deliveryStaffOptions.enumNames[deliveryStaffIndex];\n const regex = /^\\[\\d{1,4}\\] lalamove\\(multi-stop\\)$/;\n if (regex.test(deliveryStaffName)) {\n lalamoveMultiStopOrder = true;\n }\n }\n }\n setIsLalamoveMultiStopOrder(lalamoveMultiStopOrder);\n setDeliveryStaffId(defaultDeliveryStaffId);\n handleUpdate({ deliveryStaffId: defaultDeliveryStaffId });\n }, [defaultDeliveryStaffId]);\n\n useEffect(() => {\n setCategory(defaultCategory);\n handleUpdate({ category: defaultCategory });\n }, [defaultCategory]);\n\n useEffect(() => {\n setOpeningHours(defaultOpeningHours);\n }, [defaultOpeningHours]);\n\n useEffect(() => {\n setRestaurantHolidays({ ...restaurantHolidays, ...defaultRestaurantHolidays });\n }, [defaultRestaurantHolidays]);\n\n useEffect(() => {\n setRestaurantMealOptions({ ...restaurantMealOptions, ...inRestaurantMealOptions });\n\n if (!defaultRestaurantId || !defaultMealItemNames || !defaultMealItemNames.length === 0) return;\n\n const options = inRestaurantMealOptions[defaultRestaurantId];\n if (!options) return;\n\n const mealItems = [];\n defaultMealItemNames.forEach((defaultMealItemName) => {\n const matchedMealItem = options.find(({ name }) => name === defaultMealItemName);\n const cost = (matchedMealItem ? matchedMealItem.cost : 0) || 0;\n const price = (matchedMealItem ? matchedMealItem.price : 0) || 0;\n const surcharges = (matchedMealItem ? matchedMealItem.surcharges : []) || [];\n mealItems.push({\n name: defaultMealItemName,\n quantity: 1,\n price,\n cost,\n note: '',\n surcharges,\n });\n });\n\n setMealItems(mealItems);\n handleUpdate({ mealItems });\n }, [defaultMealItemNames, defaultRestaurantId, inRestaurantMealOptions]);\n\n useEffect(() => {\n if (!order) return;\n\n setElderId(order.elderId);\n setNoteForDelivery(order.noteForDelivery || '');\n setNoteForMeal(order.noteForMeal || '');\n setCategory(order.category);\n setPaymentMethod(order.paymentMethod);\n setDeliveryStaffFee(order.deliveryStaffFee);\n setDeliveryStaffId(order.deliveryStaffId);\n setRestaurantId(order.restaurantId);\n setLunchs(order.lunchs);\n setDinners(order.dinners);\n setMealItems(order.mealItems);\n }, [order, elderId]);\n\n if (!order) return null;\n\n return (\n \n \n {index + 1}\n \n \n \n 取消\n \n \n \n \n \n \n name )}\n values={elderOptions.map(({ id }) => id)}\n descriptions={elderOptions.map(({ noteForMeal }) => noteForMeal || '')}\n value={elderId}\n required={true}\n label={`${t('送餐對象')}`}\n onChange={(elderId) =>{\n const matched = elderOptions.find(({ id }) => id === elderId);\n\n if (!matched) {\n setElderId(null);\n setNoteForDelivery('');\n setNoteForMeal('');\n handleUpdate({\n elderId: null,\n noteForDelivery: '',\n noteForMeal: '',\n });\n return;\n }\n const noteForDelivery = matched.noteForDelivery || '';\n const noteForMeal = matched.noteForMeal || '';\n\n setElderId(elderId);\n setNoteForDelivery(noteForDelivery);\n setNoteForMeal(noteForMeal);\n\n handleUpdate({\n elderId,\n noteForDelivery,\n noteForMeal,\n });\n }}\n checkError={true}\n />\n \n \n \n \n {\n setCategory(category);\n handleUpdate({\n category,\n });\n }}\n checkError={true}\n />\n \n \n \n \n {\n setPaymentMethod(paymentMethod);\n handleUpdate({\n paymentMethod,\n });\n }}\n checkError={true}\n />\n \n \n \n
\n `${x}`)}\n getOptionLabel={(x) => `${x}`}\n values={getConfigurationValues('送餐費用選單')}\n value={deliveryStaffFee}\n label={t('送餐費用')}\n InputLabelProps={{ shrink: true }}\n inputProps={{ min: 0 }}\n freeSolo={true}\n onChange={(x) => {\n const value = x ? parseFloat(x) : '';\n setDeliveryStaffFee(value);\n handleUpdate({\n deliveryStaffFee: value,\n });\n }}\n onWheel={(e) => e.currentTarget.blur()}\n />\n
\n
\n
\n \n \n \n {\n setDeliveryStaffId(deliveryStaffId);\n handleUpdate({\n deliveryStaffId,\n });\n }}\n disabled={isLalamoveMultiStopOrder}\n checkError={true}\n />\n \n \n \n {\n const noteForDelivery = e.target.value;\n\n setNoteForDelivery(noteForDelivery);\n handleUpdate({\n noteForDelivery,\n });\n }}\n />\n \n \n \n \n \n name)}\n values={restaurantOptions.map(({ id }) => id)}\n required={true}\n value={restaurantId}\n label={t('餐廳')}\n onChange={async (restaurantId) => {\n setRestaurantId(restaurantId);\n const restaurantSelected = restaurantOptions.find((restaurantOption) => restaurantOption.id === restaurantId);\n setOpeningHours(restaurantSelected ? restaurantSelected.openingHours : undefined);\n if (restaurantId && !restaurantHolidays[restaurantId]) {\n const start = moment().tz(TIME_ZONE).year();\n const end = start + 1;\n const holidays = await asyncListAll(getRestaurantHolidayByRestaurantByYear, {\n restaurantId: restaurantId,\n year: {\n between: [start, end],\n },\n });\n restaurantHolidays[restaurantId] = holidays;\n setRestaurantHolidays({ ...restaurantHolidays });\n\n if (!restaurantMealOptions[restaurantId]) {\n const restaurantMeals =\n await asyncListAll(getRestaurantMealsByRestaurantByIsActive, { restaurantId }) || [];\n if (restaurantMeals.length !== 0) {\n setRestaurantMealOptions({\n ...restaurantMealOptions,\n [restaurantId]: restaurantMeals,\n });\n }\n }\n }\n handleUpdate({ restaurantId });\n }}\n disabled={isLalamoveMultiStopOrder}\n checkError={true}\n />\n \n \n \n {\n const noteForMeal = e.target.value;\n setNoteForMeal(noteForMeal);\n handleUpdate({\n noteForMeal,\n });\n }}\n />\n \n \n {mealItems && mealItems.map((mealItem, index) => {\n return (\n \n \n name) : []} // eslint-disable-line max-len\n values={restaurantMealOptions[restaurantId] ? restaurantMealOptions[restaurantId].map(({ name }) => name) : []} // eslint-disable-line max-len\n required={true}\n freeSolo\n value={mealItem.name}\n label={`${t('餐點')}名稱`}\n onChange={(value)=>{\n const options = restaurantMealOptions[restaurantId] || [];\n const matchedMealItem = options.find(({ name }) => name === value);\n const cost = (matchedMealItem ? matchedMealItem.cost : 0) || 0;\n const price = (matchedMealItem ? matchedMealItem.price : 0) || 0;\n const surcharges = (matchedMealItem ? matchedMealItem.surcharges : []) || [];\n mealItems[index] = {\n name: value,\n quantity: mealItems[index].quantity || 1,\n price,\n cost,\n note: '',\n surcharges,\n };\n setMealItems([...mealItems]);\n handleUpdate({ mealItems });\n }}\n />\n \n \n `${x}`)}\n getOptionLabel={(x) => `${x}`}\n values={getConfigurationValues('餐點數量選單')}\n value={mealItem.quantity}\n required={true}\n label=\"數量\"\n InputLabelProps={{ shrink: true }}\n inputProps={{ min: 0 }}\n freeSolo={true}\n onChange={(x) => {\n const value = x ? parseFloat(x) : '';\n mealItems[index].quantity = value;\n setMealItems([...mealItems]);\n handleUpdate({ mealItems });\n }}\n onWheel={(e) => e.currentTarget.blur()}\n />\n \n \n `${x}`)}\n getOptionLabel={(x) => `${x}`}\n values={getConfigurationValues('餐點進價選單')}\n value={mealItem.cost}\n required={true}\n label=\"進價\"\n InputLabelProps={{ shrink: true }}\n inputProps={{ min: 0 }}\n freeSolo={true}\n onChange={(x) => {\n const value = x ? parseFloat(x) : '';\n mealItems[index].cost = value;\n setMealItems([...mealItems]);\n handleUpdate({ mealItems });\n }}\n onWheel={(e) => e.currentTarget.blur()}\n />\n \n \n `${x}`)}\n getOptionLabel={(x) => `${x}`}\n values={getConfigurationValues('餐點價格選單')}\n value={mealItem.price}\n required={true}\n label=\"單價\"\n InputLabelProps={{ shrink: true }}\n inputProps={{ min: 0 }}\n freeSolo={true}\n onChange={(x) => {\n const value = x ? parseFloat(x) : '';\n mealItems[index].price = value;\n setMealItems([...mealItems]);\n handleUpdate({ mealItems });\n }}\n onWheel={(e) => e.currentTarget.blur()}\n />\n \n \n \n {\n const value = event.target.value;\n mealItems[index].note = value;\n setMealItems([...mealItems]);\n handleUpdate({ mealItems });\n }}\n />\n \n {mealItems.length > 1 &&\n {\n mealItems.splice(index, 1);\n setMealItems([...mealItems]);\n handleUpdate({ mealItems });\n }}\n >\n \n }\n \n );\n })}\n \n {\n mealItems.push(getDefaultMealItem());\n setMealItems([...mealItems]);\n handleUpdate({ mealItems });\n }}\n >\n \n 新增餐點\n \n \n
\n \n {\n setLunchs([...lunchs]);\n handleUpdate({\n lunchs,\n });\n }}\n />\n \n \n {\n setDinners([...dinners]);\n handleUpdate({\n dinners,\n });\n }}\n disabled={isLalamoveMultiStopOrder}\n />\n \n {showMap && \n id === restaurantId)?.address}\n endAddress={elderOptions.find(({ id }) => id === elderId)?.address}\n options={{ height: 300, width: '100%' }}\n />\n }\n
);\n}\n\nOrderItem.propTypes = {\n index: PropTypes.number,\n order: PropTypes.any,\n onRemove: PropTypes.func,\n onUpdate: PropTypes.func,\n elderOptions: PropTypes.array,\n restaurantOptions: PropTypes.array,\n restaurantMealOptions: PropTypes.object,\n deliveryStaffOptions: PropTypes.object,\n orderConfigurations: PropTypes.array,\n defaultLunchs: PropTypes.array,\n defaultDinners: PropTypes.array,\n defaultRestaurantId: PropTypes.string,\n defaultDeliveryStaffId: PropTypes.string,\n defaultCategory: PropTypes.string,\n defaultOpeningHours: PropTypes.object,\n defaultRestaurantHolidays: PropTypes.object,\n showMap: PropTypes.bool,\n unlockDates: PropTypes.bool,\n defaultMealItemNames: PropTypes.array,\n};\n","/* eslint-disable react/prop-types */\nimport React, { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport CreateNewFolderOutlinedIcon from '@material-ui/icons/CreateNewFolderOutlined';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FolderOpenIcon from '@material-ui/icons/FolderOpen';\nimport SaveIcon from '@material-ui/icons/Save';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { Colors } from '@silvergatedelivery/constants';\nimport MealDateSelector from 'components/Date/MealDateSelector';\nimport { asyncListAll } from 'utilities/graph';\nimport AutoSelect from './AutoSelect';\nimport { sortBy } from 'utilities/sorting';\nimport OrderItem from './OrderItem';\nimport { getSampleOrder } from './helpers';\nimport {\n getRestaurantHolidayByRestaurantByYear,\n getRestaurantMealsByRestaurantByIsActive,\n} from './queries';\nimport moment from 'moment';\nimport { TIME_ZONE, ORDER_CATEGORY, ORDER_CATEGORY_LABEL } from '@silvergatedelivery/constants';\nimport DataJoinEditorInput from 'components/DataJoinEditor/DataJoinEditorInput';\nimport { updateFacilitySettings, createFacilitySettings, updateClient } from 'graphql/mutations';\nimport { request } from 'utilities/graph';\nimport cache from 'utilities/cache';\nimport { getClient } from 'graphql/queries';\nimport { toastr } from 'react-redux-toastr';\n\nconst useStyles = makeStyles((theme) => ({\n actionContainer: {\n width: 40,\n },\n itemSummaryContainer: {\n display: 'inline-block',\n width: 32,\n paddingTop: 12,\n fontWeight: 'bold',\n },\n itemContainer: {\n display: 'inline-block',\n flex: 1,\n },\n floatingCloseButton: {\n position: 'absolute',\n right: 10,\n top: 10,\n },\n toolbar: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n buttonGroup: {\n display: 'flex',\n gap: theme.spacing(2),\n },\n button: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n icon: {\n fontSize: 24,\n },\n label: {\n fontSize: '0.8rem',\n marginTop: theme.spacing(0.5),\n },\n settingName: {\n marginLeft: 36,\n width: '300px',\n },\n}));\n\nexport default function OrderBatchForm({\n index,\n targetClientId,\n onRemove,\n onUpdate,\n showMap,\n unlockDates,\n deliveryGroupOptions = [],\n elderDeliveryGroups = [],\n elderOptions = [],\n restaurantOptions = [],\n deliveryStaffOptions = {},\n orderConfigurations = [],\n}) {\n const classes = useStyles();\n const { t } = useTranslation();\n const [deliveryGroupId, setDeliveryGroupId] = useState();\n const [defaultRestaurantId, setDefaultRestaurantId] = useState();\n const [restaurantMealOptions, setRestaurantMealOptions] = useState({});\n const [restaurantHolidays, setRestaurantHolidays] = useState({});\n const [defaultMealItemNames, setDefaultMealItemNames] = useState([]);\n const [defaultCategory, setDefaultCategory] = useState(ORDER_CATEGORY_LABEL[0]);\n const [defaultDeliveryStaffId, setDefaultDeliveryStaffId] = useState();\n const [defaultLunchs, setDefaultLunchs] = useState([]);\n const [defaultDinners, setDefaultDinners] = useState([]);\n const [openingHours, setOpeningHours] = useState();\n const [settingName, setSettingName] = useState('');\n const [originalSettingName, setOriginalSettingName] = useState('');\n const [settingAnchorEl, setSettingAnchorEl] = useState();\n const [batchOrderSettingOptions, setBatchOrderSettingOptions] = useState([]);\n const [client, setClient] = useState();\n\n const getClientFacilitySettings = async () => {\n if (targetClientId && targetClientId !== 'N/A') {\n const { data: { getClient: data } } = await request(getClient, { id: targetClientId });\n if (data?.facilitySettings?.batchOrderSettings) {\n setBatchOrderSettingOptions(data.facilitySettings.batchOrderSettings.map(({ name, batchOrderSettingsItems }) => {\n return {\n name,\n batchOrderSettingsItems: JSON.parse(batchOrderSettingsItems),\n };\n }));\n }\n setClient(data);\n }\n };\n\n useEffect(() => {\n (async () => {\n await getClientFacilitySettings(true);\n })();\n }, []);\n\n const [orders, setOrders] = useState([]);\n\n const handleUpdate = (orders) => {\n if (onUpdate) {\n onUpdate({\n deliveryGroupId,\n defaultRestaurantId,\n defaultCategory,\n defaultDeliveryStaffId,\n defaultLunchs,\n defaultDinners,\n orders,\n });\n }\n };\n\n const handleNewSetting = () => {\n let newSetting = true;\n if (orders.length !== 0) {\n if (!window.confirm('確定捨棄目前訂單設定?')) {\n newSetting = false;\n }\n }\n if (newSetting) {\n setSettingName('');\n setOriginalSettingName('');\n\n // reset\n setDeliveryGroupId();\n setDefaultRestaurantId();\n setDefaultCategory(ORDER_CATEGORY_LABEL[0]);\n setDefaultDeliveryStaffId();\n setDefaultLunchs([]);\n setDefaultDinners([]);\n setOrders([]);\n\n handleUpdate([]);\n }\n };\n\n const handleOpenSetting = (event) => {\n setSettingAnchorEl(event.currentTarget);\n };\n\n const handleSave = async () => {\n if (!client) return;\n const newBatchOrderSettings = {\n name: settingName,\n batchOrderSettingsItems: JSON.stringify({\n deliveryGroupId,\n defaultRestaurantId,\n defaultCategory,\n defaultDeliveryStaffId,\n orders: orders.map((order) => ({ ...order, lunchs: [], dinners: [] })),\n }),\n };\n\n const { facilitySettings = {} } = client;\n if (facilitySettings.id) {\n if (facilitySettings.batchOrderSettings) {\n const settingIndex = facilitySettings.batchOrderSettings.findIndex(({ name }) => name === settingName);\n if (settingIndex === -1) {\n facilitySettings.batchOrderSettings.push(newBatchOrderSettings);\n } else {\n if (!window.confirm(`確定覆蓋${settingName}原有設定?`)) {\n return;\n }\n facilitySettings.batchOrderSettings[settingIndex] = newBatchOrderSettings;\n }\n } else {\n facilitySettings.batchOrderSettings = [newBatchOrderSettings];\n }\n await request(updateFacilitySettings, { input: facilitySettings });\n } else {\n const now = moment().toISOString();\n const userName = cache.get('app:userName');\n const newFacilitySettings = {\n batchOrderSettings: [newBatchOrderSettings],\n createdAt: now,\n createdBy: userName,\n updatedAt: now,\n updatedBy: userName,\n };\n const { data: { createFacilitySettings: { id: facilitySettingsId } } } =\n await request(createFacilitySettings, { input: newFacilitySettings });\n await request(updateClient, { input: {\n id: client.id,\n type: client.type,\n isActive: client.isActive,\n county: client.county,\n name: client.name,\n address: client.address,\n email: client.email,\n usersLimit: client.usersLimit,\n eldersLimit: client.eldersLimit,\n createdAt: client.createdAt,\n createdBy: client.createdBy,\n updatedAt: now,\n updatedBy: userName,\n facilitySettingsId: facilitySettingsId,\n } });\n }\n await getClientFacilitySettings();\n toastr.info(`設定${settingName}已儲存`);\n setOriginalSettingName(settingName);\n };\n\n const handleDelete = async () => {\n const { facilitySettings = {} } = client;\n if (facilitySettings.id) {\n if (facilitySettings.batchOrderSettings) {\n const settingIndex = facilitySettings.batchOrderSettings.findIndex(({ name }) => name === settingName);\n if (settingIndex !== -1) {\n if (window.confirm(`確定刪除設定${settingName}?`)) {\n facilitySettings.batchOrderSettings.splice(settingIndex, 1);\n await request(updateFacilitySettings, { input: facilitySettings });\n await getClientFacilitySettings();\n toastr.info(`設定${settingName}已刪除`);\n setSettingName('');\n setOriginalSettingName('');\n }\n }\n }\n }\n };\n\n const onSettingChange = (setting) => {\n let loadSetting = true;\n if (orders.length !== 0) {\n if (!window.confirm('確定捨棄目前訂單設定?')) {\n loadSetting = false;\n }\n }\n if (loadSetting) {\n const { name, batchOrderSettingsItems } = setting;\n setSettingName(name);\n setOriginalSettingName(name);\n const {\n deliveryGroupId, defaultRestaurantId, defaultCategory, defaultDeliveryStaffId, orders,\n } = batchOrderSettingsItems;\n setDeliveryGroupId(deliveryGroupId);\n setDefaultRestaurantId(defaultRestaurantId);\n setDefaultCategory(defaultCategory);\n setDefaultDeliveryStaffId(defaultDeliveryStaffId);\n setDefaultLunchs([]);\n setDefaultDinners([]);\n // 先開空白訂單,避免預設的xx設定覆蓋掉載入的order設定\n setOrders(orders.map(() => getSampleOrder()));\n setTimeout(() => {\n setOrders(orders);\n handleUpdate(orders);\n }, 1000);\n }\n };\n\n return (\n \n {\n if (onRemove) {\n onRemove();\n }\n }}\n >\n \n \n
\n \n \n {targetClientId && targetClientId !== 'N/A' &&\n \n
\n
\n \n \n \n 新設定\n
\n
\n \n \n \n 開啟設定\n
\n setSettingAnchorEl(null)}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n >\n {batchOrderSettingOptions.sort(sortBy('name')).map((item) => {\n return (\n {\n onSettingChange(item);\n setSettingAnchorEl(null);\n }}\n disabled={item.name === originalSettingName}\n >\n {item.name}\n \n );\n })}\n \n
\n \n \n \n 儲存設定\n
\n
\n name === settingName)}>\n \n \n 刪除設定\n
\n
\n setSettingName(e.target.value)}\n placeholder='請輸入送餐設定的名稱'\n />\n
}\n \n name)}\n values={deliveryGroupOptions.map(({ id }) => id)}\n required={false}\n value={deliveryGroupId}\n label={t('送餐群組')}\n onChange={(newItem) => {\n setOrders([]);\n\n setDeliveryGroupId(newItem);\n\n const orders = elderDeliveryGroups\n .filter(({ deliveryGroupId }) => deliveryGroupId === newItem)\n .sort((sortBy('sortOrder')))\n .map(({ elderId, sortOrder }) => {\n const elder = elderOptions.find(({ id }) => id === elderId);\n if (elder) {\n const { id, noteForDelivery, noteForMeal, note } = elder;\n return getSampleOrder({\n elderId: id,\n noteForDelivery,\n noteForMeal,\n note,\n deliveryGroupId: newItem,\n deliveryGroupSortOrder: sortOrder,\n });\n } else {\n // 長輩不存在 或 已停用\n return null;\n }\n })\n .filter((x) => x);\n\n setTimeout(()=>{\n setOrders([...orders]);\n handleUpdate(orders);\n }, 200);\n }}\n checkError={true}\n />\n \n\n \n (`${address.county} - ${name}`))}\n values={restaurantOptions.map(({ id }) => id)}\n required={true}\n value={defaultRestaurantId}\n label={`預設${t('餐廳')}`}\n onChange={async (newItem)=>{\n setDefaultRestaurantId(newItem);\n const restaurantSelected = restaurantOptions.find((restaurantOption) => restaurantOption.id === newItem);\n setOpeningHours(restaurantSelected ? restaurantSelected.openingHours : undefined);\n if (newItem && (!restaurantMealOptions[newItem] || !restaurantHolidays[newItem])) {\n const start = moment().tz(TIME_ZONE).year();\n const end = start + 1;\n const [mealOptions, holidays] = await Promise.all([\n await asyncListAll(getRestaurantMealsByRestaurantByIsActive, { restaurantId: newItem }),\n await asyncListAll(getRestaurantHolidayByRestaurantByYear, {\n restaurantId: newItem,\n year: {\n between: [start, end],\n },\n }),\n ]);\n restaurantMealOptions[newItem] = mealOptions;\n setRestaurantMealOptions({ ...restaurantMealOptions });\n restaurantHolidays[newItem] = holidays;\n setRestaurantHolidays({ ...restaurantHolidays });\n }\n }}\n checkError={true}\n />\n \n\n \n ({\n label: meal.name,\n description: `進價:$${meal.cost || 0}, 單價:${meal.price || 0}`,\n })) : []}\n defaultValues={[]}\n onChange={(newMealItemNames) => setDefaultMealItemNames(newMealItemNames.map(({ label }) => label))}\n onUpdateOptions={() => {}}\n showHelperText={false}\n disabled={!defaultRestaurantId}\n />\n \n\n \n description)}\n required={false}\n freeSolo\n value={defaultCategory}\n label=\"預設訂單類別\"\n onChange={(value)=>{\n setDefaultCategory(value);\n }}\n checkError={true}\n />\n \n\n \n {\n setDefaultDeliveryStaffId(newItem);\n }}\n checkError={true}\n />\n \n
\n \n {\n setDefaultLunchs(items);\n }}\n />\n \n \n {\n setDefaultDinners(items);\n }}\n />\n \n
\n\n {orders.map((order, orderIndex) => (\n \n {\n orders.splice(orderIndex, 1);\n setOrders([...orders]);\n handleUpdate(orders);\n }}\n onUpdate={(updatedOrder) => {\n order = updatedOrder;\n handleUpdate(orders);\n }}\n elderOptions={elderOptions}\n restaurantOptions={restaurantOptions}\n restaurantMealOptions={restaurantMealOptions}\n deliveryStaffOptions={deliveryStaffOptions}\n orderConfigurations={orderConfigurations}\n defaultLunchs={defaultLunchs}\n defaultDinners={defaultDinners}\n defaultRestaurantId={defaultRestaurantId}\n defaultDeliveryStaffId={defaultDeliveryStaffId}\n defaultMealItemNames={defaultMealItemNames}\n defaultCategory={defaultCategory}\n defaultOpeningHours={openingHours}\n defaultRestaurantHolidays={restaurantHolidays}\n showMap={showMap}\n unlockDates={unlockDates}\n />\n \n ))}\n\n
\n {\n orders.push(getSampleOrder());\n setOrders([...orders]);\n handleUpdate(orders);\n }}\n >\n {`新增${t('送餐對象')}`}\n \n
\n
\n
);\n}\n","import React, { useState, useEffect, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { Semaphore } from 'async-mutex';\nimport FormDialog from 'components/FormDialog';\n// import HourglassEmptyIcon from '@material-ui/icons/HourglassEmpty';\nimport CheckIcon from '@material-ui/icons/Check';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport MotorcycleIcon from '@material-ui/icons/Motorcycle';\nimport AccountTreeIcon from '@material-ui/icons/AccountTree';\nimport EmojiObjectsOutlinedIcon from '@material-ui/icons/EmojiObjectsOutlined';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport Typography from '@material-ui/core/Typography';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { utils, writeFile } from 'xlsx';\n\nimport { Colors } from '@silvergatedelivery/constants';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { adminCreateOrder, placeMultiStopOrder, quoteMultiStopOrder } from 'graphql/mutations';\nimport AutoSelect from './AutoSelect';\nimport { formatDatetime } from 'utilities/format';\n\nimport { getConfigurationByCategoryByStatus } from 'graphql/queries';\nimport { toastr } from 'react-redux-toastr';\n\nimport {\n getDeliveryGroupsByClientByIsActive,\n getElderDeliveryGroupsByClientByStatus,\n} from './queries';\n\nimport {\n getRestaurantIdSchema,\n getClientIdSchema,\n getElderIdSchema,\n getDeliveryStaffIdSchema,\n} from '../schemas';\nimport { sortBy } from 'utilities/sorting';\nimport OrderBatchForm from './OrderBatchForm';\nimport cache from 'utilities/cache';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { chunkArray } from 'utilities/array';\n\nexport default function AdminCreateBulkOrderForm({ onComplete, ...props }) {\n const { t } = useTranslation();\n const [allFormData, setAllFormData] = useState();\n const [message, setMessage] = useState();\n const [targetClientId, setTargetClientId] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n const [restaurantOptions, setRestaurantOptions] = useState();\n const [clientOptions, setClientOptions] = useState();\n const [elderOptions, setElderOptions] = useState();\n const [deliveryGroupOptions, setDeliveryGroupOptions] = useState();\n const [deliveryStaffOptions, setDeliveryStaffOptions] = useState();\n const [elderDeliveryGroups, setElderDeliveryGroups] = useState([]);\n const [orderConfigurations, setOrderConfigurations] = useState([]);\n const [onlyShowFacilityCountyRestaurant, setOnlyShowFacilityCountyRestaurant] = useState(false);\n const [onlyShowFacilityRestaurant, setOnlyShowFacilityRestaurant] = useState(false);\n const [onlyShowFacilityDeliveryStaff, setOnlyShowFacilityDeliveryStaff] = useState(false);\n const [showMap, setShowMap] = useState(false);\n const [unlockDates, setUnlockDates] = useState(false);\n\n const [openConfirmDialog, setOpenConfirmDialog] = useState(false);\n const [toCreateOrders, setToCreateOrders] = useState([]);\n const [createResults, setCreateResults] = useState([]);\n const [createErrors, setCreateErrors] = useState([]);\n const [createMultiStopOrderResults, setCreateMultiStopOrderResults] = useState([]);\n const [multiStopOrders, setMultiStopOrders] = useState({});\n const [lalamoveMultiStopDeliveryId, setLalamoveMultiStopDeliveryId] = useState();\n const [lalamoveMultiStopOrdersQuoteResult, setLalamoveMultiStopOrdersQuoteResult] = useState([]);\n\n const validate = () => {\n let formIndex = -1;\n let orderIndex = -1;\n\n formIndex = allFormData.findIndex((data) => !data.orders || data.orders.length === 0);\n\n if (formIndex !== -1) {\n setMessage(`第${formIndex + 1}組批量訂單裡沒有設定訂單`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex((order) => !order.elderId);\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`請檢查第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單是否有選取${t('送餐對象')}`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex(({ restaurantId, mealItems }) => !restaurantId ||\n !mealItems || mealItems.length === 0 ||\n mealItems.some(({ name }) => !name));\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`請檢查第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單是否有${t('餐廳')}與餐點`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex(({ paymentMethod, mealItems }) =>\n paymentMethod === 'CASH_ON_DELIVERY' &&\n (mealItems.some(({ price }) => price === 0) || mealItems.some(({ cost }) => cost === 0)));\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單是到府收款,餐點單價須大於 $0`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex((order) => order.lunchs.length === 0 && order.dinners.length === 0);\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`請檢查第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單是否已選取午晚餐`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex(({ mealItems }) => mealItems.some(({ quantity }) => isNaN(quantity) || quantity <= 0));\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`請檢查第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單是否設定餐點數量`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex(({ mealItems }) => mealItems.some(({ cost }) => isNaN(cost) || cost < 0));\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`請檢查第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單是否設定餐點進價`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex(({ mealItems }) => mealItems.some(({ price }) => isNaN(price) || price < 0));\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`請檢查第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單是否設定餐點單價`);\n return false;\n }\n\n const invalidMultiStopOrderWithDifferentRestaurant = allFormData.some((data) => {\n if (data.orders[0].deliveryStaffId === lalamoveMultiStopDeliveryId) {\n return data.orders.some(({ restaurantId }) => restaurantId !== data.orders[0].restaurantId);\n } else {\n return false;\n }\n });\n\n if (invalidMultiStopOrderWithDifferentRestaurant) {\n setMessage('請檢查多點配送訂單的餐廳是否一致');\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex(({ deliveryStaffId }) => deliveryStaffId && !deliveryStaffOptions.enum.includes(deliveryStaffId));\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單所指定的送餐大使不存在`);\n return false;\n }\n\n formIndex = allFormData.findIndex((data) => {\n orderIndex = data.orders.findIndex(({ restaurantId }) => !restaurantOptions.find((restaurantOption) => restaurantOption.id === restaurantId));\n return orderIndex !== -1;\n });\n\n if (formIndex !== -1 && orderIndex !== -1) {\n setMessage(`請檢查第${formIndex + 1}組批量訂單裡的第${orderIndex + 1}筆訂單的餐廳是否填寫正確`);\n return false;\n }\n\n const findDuplicateElders = () => {\n const result = [];\n const mappings = {};\n allFormData.forEach((data, formIndex) => {\n data.orders.forEach((order, orderIndex) => {\n const { elderId } = order;\n if (!mappings[elderId]) {\n mappings[elderId] = {};\n }\n\n const checkOrder = (datetime, mealSlot) => {\n const date = moment(datetime).tz(TIME_ZONE).format('YYYY-MM-DD');\n const key = `${date}-${mealSlot}-${formIndex}`;\n if (mappings[elderId][key]) {\n result.push({\n elderId,\n currentLocation: {\n formIndex,\n orderIndex,\n },\n firstOccurrence: mappings[elderId][key],\n });\n } else {\n if (!mappings[elderId][key]) {\n mappings[elderId][key] = {\n formIndex,\n orderIndex,\n };\n }\n }\n };\n\n order.lunchs.forEach((datetime) => {\n checkOrder(datetime, 'lunch');\n });\n order.dinners.forEach((datetime) => {\n checkOrder(datetime, 'dinner');\n });\n });\n });\n\n return result;\n };\n\n const duplicates = findDuplicateElders();\n if (duplicates.length !== 0) {\n const formIndex1 = duplicates[0].firstOccurrence.formIndex;\n const formIndex2 = duplicates[0].currentLocation.formIndex;\n const orderIndex1 = duplicates[0].firstOccurrence.orderIndex;\n const orderIndex2 = duplicates[0].currentLocation.orderIndex;\n if (formIndex1 === formIndex2) {\n setMessage(`第${formIndex1 + 1}組批量訂單裡的第${orderIndex1 + 1}筆訂單與第${orderIndex2 + 1}筆訂單有重複的餐點設定`);\n return false;\n }\n }\n\n setMessage(null);\n return true;\n };\n\n const getDateAndMealSlot = (inDatetime) => {\n const entity = moment(inDatetime).tz(TIME_ZONE);\n const date = entity.format('YYYY-MM-DD');\n const hour = parseInt(entity.format('H'));\n const mealSlot = hour <= 14 ? 'lunch' : 'dinner';\n return {\n date,\n mealSlot,\n };\n };\n\n const checkLalamoveMultiStopOrderQuotation = async () => {\n if (!lalamoveMultiStopDeliveryId) {\n return true;\n }\n const toVerifyLalamoveOrders = [];\n allFormData.forEach(({ orders }, index) => {\n if (orders[0].deliveryStaffId === lalamoveMultiStopDeliveryId) {\n toVerifyLalamoveOrders.push({\n restaurantId: orders[0].restaurantId,\n elderIds: orders.map(({ elderId }) => elderId),\n formIndex: index,\n });\n }\n });\n if (toVerifyLalamoveOrders.length === 0) {\n return true;\n }\n\n setLalamoveMultiStopOrdersQuoteResult(toVerifyLalamoveOrders);\n\n await Promise.all(toVerifyLalamoveOrders.map((lalamoveOrder) => (async () => {\n const { restaurantId, elderIds } = lalamoveOrder;\n const quoteResult = await request(quoteMultiStopOrder, { input: { restaurantId, elderIds } });\n lalamoveOrder.result = quoteResult.data.quoteMultiStopOrder.data;\n })(),\n ));\n\n if (toVerifyLalamoveOrders.some(({ result }) => result.code !== 'SUCCESS')) {\n return false;\n }\n setLalamoveMultiStopOrdersQuoteResult(toVerifyLalamoveOrders);\n return true;\n };\n\n const handleSubmit = async () => {\n global.logger.debug(JSON.stringify(allFormData, null, 2));\n\n const isValidated = validate();\n if (!isValidated) return;\n\n let results = [];\n let multiStopOrderResults = [];\n const errors = [];\n const groupedMultiStopOrders = {};\n try {\n setMessage('上傳中,請稍候');\n setIsLoading(true);\n setOpenConfirmDialog(true);\n\n if (!await checkLalamoveMultiStopOrderQuotation()) {\n throw new Error('請確認餐廳與送餐地址是否位於服務範圍內');\n }\n\n const toCreateOrders = [];\n allFormData.forEach(({ orders }, index) => {\n orders.forEach(({\n elderId,\n restaurantId,\n deliveryStaffId,\n deliveryStaffFee,\n noteForDelivery,\n noteForMeal,\n category,\n paymentMethod,\n lunchs,\n dinners,\n deliveryGroupId,\n deliveryGroupSortOrder,\n mealItems,\n }) => {\n const allDeliveryDatetimes = [...lunchs, ...dinners];\n const total = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.price * currentValue.quantity;\n }, 0);\n const totalCost = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.cost * currentValue.quantity;\n }, 0);\n // max 12 orders in one command\n const chunkDeliveryDatetimes = chunkArray(allDeliveryDatetimes, 12);\n chunkDeliveryDatetimes.forEach((deliveryDatetimes) => {\n toCreateOrders.push({\n restaurantId,\n elderId,\n deliveryDatetimes,\n noteForDelivery,\n noteForMeal,\n total,\n totalCost,\n deliveryStaffId: lalamoveMultiStopDeliveryId && deliveryStaffId === lalamoveMultiStopDeliveryId ? undefined: deliveryStaffId,\n deliveryStaffFee: deliveryStaffFee || 0,\n mealItems,\n category,\n paymentMethod,\n deliveryGroupId,\n deliveryGroupSortOrder,\n source: 'admin',\n });\n });\n if (lalamoveMultiStopDeliveryId && deliveryStaffId === lalamoveMultiStopDeliveryId) {\n allDeliveryDatetimes.forEach((dateTime) => {\n const { date, mealSlot } = getDateAndMealSlot(dateTime);\n const key = `${index}-${date}-${mealSlot}`;\n if (!groupedMultiStopOrders[key]) {\n groupedMultiStopOrders[key] = [];\n }\n groupedMultiStopOrders[key].push({\n date,\n mealSlot,\n elderId,\n deliveryBy: dateTime,\n formIndex: index,\n });\n });\n }\n });\n });\n\n setToCreateOrders(toCreateOrders);\n\n global.logger.debug('toCreateOrders', toCreateOrders);\n\n const s = new Semaphore(10);\n await Promise.all(toCreateOrders.map((order) =>\n s.runExclusive(async () => {\n try {\n const res = await request(adminCreateOrder, { input: { orders: [order] } });\n const { data: { adminCreateOrder: { data } } } = res;\n\n results = [...results, ...data];\n setCreateResults(results);\n } catch (e) {\n global.logger.debug(e);\n let message = '';\n if (e.errors && e.errors[0]) {\n switch (e.errors[0].message) {\n case 'The string supplied did not seem to be a phone number':\n message = `熊貓外送: ${t('送餐對象')}電話不完整或有誤`;\n break;\n case 'Unable to process order\\norder is outside deliverable range':\n message = `熊貓外送: ${t('送餐對象')}地址不在服務範圍內`;\n break;\n default:\n message = e.errors[0].message;\n }\n }\n errors.push({\n elderId: order.elderId,\n message,\n });\n }\n }),\n ));\n\n setMessage(null);\n\n const findOrderInGroup = (elderId, deliveryBy) => {\n // eslint-disable-next-line guard-for-in\n for (const key in groupedMultiStopOrders) {\n const orders = groupedMultiStopOrders[key];\n const foundOrder = orders.find((order) => order.elderId === elderId && order.deliveryBy === deliveryBy);\n if (foundOrder) {\n return foundOrder;\n }\n }\n return undefined;\n };\n // assign order id\n results.forEach(({ id, elderId, deliveryBy }) => {\n const orderInGroup = findOrderInGroup(elderId, deliveryBy);\n if (orderInGroup) {\n orderInGroup.id = id;\n }\n });\n setMultiStopOrders(groupedMultiStopOrders);\n\n if (Object.keys(groupedMultiStopOrders).length !== 0) {\n const s2 = new Semaphore(10);\n await Promise.all(Object.keys(groupedMultiStopOrders).map((key) =>\n s2.runExclusive(async () => {\n try {\n if (groupedMultiStopOrders[key].some(({ id }) => !id)) {\n // 如果有order create失敗就不處理多點配送,避免事後要重新調整\n multiStopOrderResults = [...multiStopOrderResults, {\n date: groupedMultiStopOrders[key][0].date,\n mealSlot: groupedMultiStopOrders[key][0].mealSlot,\n formIndex: groupedMultiStopOrders[key][0].formIndex,\n status: 'failed',\n error: '沒有成功建立多點配送中的全部訂單',\n }];\n return;\n }\n const orderIds = groupedMultiStopOrders[key].map(({ id }) => id);\n const { data: { placeMultiStopOrder: { message, errors } } } = await request(placeMultiStopOrder, { input: { orderIds } });\n\n if (message === 'success') {\n multiStopOrderResults = [...multiStopOrderResults, {\n date: groupedMultiStopOrders[key][0].date,\n mealSlot: groupedMultiStopOrders[key][0].mealSlot,\n formIndex: groupedMultiStopOrders[key][0].formIndex,\n status: 'success',\n }];\n } else {\n multiStopOrderResults = [...multiStopOrderResults, {\n date: groupedMultiStopOrders[key][0].date,\n mealSlot: groupedMultiStopOrders[key][0].mealSlot,\n formIndex: groupedMultiStopOrders[key][0].formIndex,\n status: 'failed',\n error: errors[0],\n }];\n }\n } catch (e) {\n console.log(e);\n multiStopOrderResults = [...multiStopOrderResults, {\n date: groupedMultiStopOrders[key][0].date,\n mealSlot: groupedMultiStopOrders[key][0].mealSlot,\n formIndex: groupedMultiStopOrders[key][0].formIndex,\n status: 'failed',\n error: e.errors && e.errors[0] && e.errors[0].message,\n }];\n }\n setCreateMultiStopOrderResults(multiStopOrderResults);\n }),\n ));\n }\n } catch (e) {\n global.logger.debug(e);\n setMessage(`失敗 ${e.message}`);\n toastr.error(e.message);\n } finally {\n setIsLoading(false);\n setCreateErrors(errors);\n }\n };\n\n const handleComplete = () => {\n onComplete();\n };\n\n const triggerDownload = async () => {\n const rows = [];\n toCreateOrders.forEach((order) => {\n const elder = (elderOptions.find(({ id }) => id === order.elderId) || {});\n\n order.deliveryDatetimes.map((datetime) => {\n const matched = createResults.find(({ elderId, deliveryBy }) => elderId === order.elderId && deliveryBy === datetime);\n const newRow = {};\n newRow[t('送餐對象')] = elder.name;\n newRow[`${t('送餐對象')}編號`] = elder.id;\n newRow[`訂單${t('送餐')}日期`] = formatDatetime(datetime, { weekday: false });\n rows.push({\n ...newRow,\n '訂單編號': matched ? matched.id : '',\n '錯誤訊息': (createErrors.find(({ elderId }) => elderId === order.elderId) || {}).message || '',\n '除錯資訊': JSON.stringify(order),\n });\n });\n });\n\n const worksheet = utils.json_to_sheet(rows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `訂單`);\n writeFile(workbook, `訂單創立清單結果.xlsx`);\n };\n\n useEffect(() => {\n if (!targetClientId) return;\n\n (async () => {\n setIsLoading(true);\n\n setAllFormData([]);\n\n const clientId = targetClientId !== 'N/A' ? targetClientId : null;\n const [\n elderOptions,\n deliveryGroupOptions,\n elderDeliverGroups,\n orderConfigurations,\n ] = await Promise.all([\n getElderIdSchema(null, null, clientId, true),\n asyncListAll(getDeliveryGroupsByClientByIsActive, {\n clientId: targetClientId,\n }),\n asyncListAll(getElderDeliveryGroupsByClientByStatus, {\n clientId: targetClientId,\n status: { eq: '使用中' },\n limit: 1000,\n }),\n asyncListAll(getConfigurationByCategoryByStatus, {\n category: '訂單',\n status: { eq: '使用中' },\n }),\n ]);\n\n\n setElderOptions(elderOptions.sort((sortBy('name'))));\n setDeliveryGroupOptions(deliveryGroupOptions.sort((sortBy('name'))));\n setElderDeliveryGroups(elderDeliverGroups);\n setOrderConfigurations(orderConfigurations);\n\n setIsLoading(false);\n\n // auto generate orders\n if (targetClientId !== 'N/A') {\n setAllFormData([{ targetClientId }]);\n }\n })();\n }, [targetClientId]);\n\n useEffect(() => {\n if (!targetClientId || !clientOptions) return;\n\n (async () => {\n setIsLoading(true);\n const clientId = targetClientId !== 'N/A' ? targetClientId: null;\n const restaurantOptions = await getRestaurantIdSchema(null, null, clientId, true, onlyShowFacilityRestaurant);\n\n if (targetClientId !== 'N/A' && onlyShowFacilityCountyRestaurant) {\n const { county: targetCounty } = clientOptions.find(({ id }) => id === targetClientId);\n setRestaurantOptions(restaurantOptions.filter(({ county }) => county === targetCounty));\n } else {\n setRestaurantOptions(restaurantOptions);\n }\n\n setIsLoading(false);\n })();\n }, [clientOptions, targetClientId, onlyShowFacilityRestaurant, onlyShowFacilityCountyRestaurant]);\n\n useEffect(() => {\n if (!targetClientId) return;\n (async () => {\n setIsLoading(true);\n const clientId = targetClientId !== 'N/A' ? targetClientId: null;\n const deliveryStaffOptions = await getDeliveryStaffIdSchema(null, null, clientId, true, true, false, false, onlyShowFacilityDeliveryStaff);\n setDeliveryStaffOptions(deliveryStaffOptions);\n\n const regex = /^\\[\\d{1,4}\\] lalamove\\(multi-stop\\)$/;\n const deliveryStaffIndex = deliveryStaffOptions.enumNames.findIndex((name) => regex.test(name));\n if (deliveryStaffIndex !== -1) {\n setLalamoveMultiStopDeliveryId(deliveryStaffOptions.enum[deliveryStaffIndex]);\n } else {\n setLalamoveMultiStopDeliveryId();\n }\n\n setIsLoading(false);\n })();\n }, [targetClientId, onlyShowFacilityDeliveryStaff]);\n\n useEffect(() => {\n const clientId = cache.get('app:facilityId');\n if (clientId) {\n setTargetClientId(clientId);\n setClientOptions([{\n id: clientId,\n name: cache.get('app:name'),\n county: cache.get('app:location'),\n }]);\n return;\n }\n\n (async () => {\n setIsLoading(true);\n const [\n clientOptions,\n ] = await Promise.all([\n getClientIdSchema(null, '所屬機構', true),\n ]);\n setClientOptions(clientOptions);\n\n if (process.env.NODE_ENV === 'development' && clientOptions[1]) {\n setTargetClientId(clientOptions[1].id);\n }\n\n setIsLoading(false);\n })();\n }, []);\n\n if (!clientOptions) return null;\n\n global.logger.debug('re-render all form', allFormData);\n\n return (\n \n \n \n \n name)]}\n values={['N/A', ...clientOptions.map(({ id }) => id)]}\n required={false}\n value={targetClientId}\n label=\"機構\"\n helperText={`選定機構後會自動產生${t('送餐對象')}`}\n onChange={(newItem) => {\n setTargetClientId(newItem);\n }}\n />\n \n \n \n {\n setOnlyShowFacilityCountyRestaurant(e.target.checked);\n }}\n name={'onlyShowOrgCountyRestaurant'}\n color=\"primary\"\n disabled={targetClientId === 'N/A'}\n />\n }\n label={`只顯示該機構所在縣市的${t('餐廳')}`}\n />\n {\n setOnlyShowFacilityRestaurant(e.target.checked);\n }}\n name={'onlyShowOrgRestaurant'}\n color=\"primary\"\n disabled={targetClientId === 'N/A'}\n />\n }\n label={`只顯示與該機構相關的${t('餐廳')}`}\n />\n {\n setOnlyShowFacilityDeliveryStaff(e.target.checked);\n }}\n name={'onlyShowFacilityDeliveryStaff'}\n color=\"primary\"\n disabled={targetClientId === 'N/A'}\n />\n }\n label={`只顯示該機構的${t('送餐大使')}`}\n />\n {\n setShowMap(e.target.checked);\n }}\n name={'showMap'}\n color=\"primary\"\n />\n }\n label=\"顯示地圖\"\n />\n {\n setUnlockDates(e.target.checked);\n }}\n name={'unlockDates'}\n color=\"primary\"\n />\n }\n label={`解鎖過去的${t('送餐')}日期`}\n />\n \n \n\n {targetClientId && restaurantOptions && deliveryStaffOptions && elderOptions && allFormData &&\n \n
\n \n 下次週期性排單將新增{moment().add(31, 'days').format('LL')}的訂單\n
\n {allFormData.map((formDataItem, index)=>(\n {\n allFormData.splice(index, 1);\n setAllFormData([...allFormData]);\n }}\n onUpdate={(updated) => {\n // global.logger.debug('on formdata update', updated);\n Object.assign(formDataItem, updated);\n }}\n showMap={showMap}\n unlockDates={unlockDates}\n deliveryGroupOptions={deliveryGroupOptions}\n elderDeliveryGroups={elderDeliveryGroups}\n elderOptions={elderOptions}\n restaurantOptions={restaurantOptions}\n deliveryStaffOptions={deliveryStaffOptions}\n orderConfigurations={orderConfigurations}\n />\n ))}\n \n setAllFormData([...allFormData, { targetClientId }])}\n >\n 新增批量訂單\n \n {process.env.NODE_ENV === 'development' &&\n {\n global.logger.debug(JSON.stringify(allFormData, null, 2));\n }}\n >\n 檢查\n }\n
\n {message}\n
\n \n 送出\n \n
\n
}\n {openConfirmDialog &&\n \n \n {Object.keys(lalamoveMultiStopOrdersQuoteResult).length !== 0 &&\n \n \n \n \n 檢查多點配送服務範圍\n \n \n \n {lalamoveMultiStopOrdersQuoteResult.map((multiStopOrder) => {\n const { result, formIndex } = multiStopOrder;\n const formIndexDisplay = formIndex + 1;\n return (\n \n {!result ? :\n result && result.code === 'SUCCESS' ?\n : }\n \n {`批量訂單${formIndexDisplay}`}\n \n {result && result.code !== 'SUCCESS' &&\n \n \n {result.message}\n \n }\n \n );\n })}\n \n \n }\n \n {toCreateOrders.length !== 0 &&\n \n \n \n 建立訂單\n \n }\n {\n toCreateOrders.map((order, index) => (\n \n \n \n {(elderOptions.find(({ id })=> id === order.elderId) || {}).name || ''}\n \n \n {order.deliveryDatetimes.map((datetime) => {\n const matched = createResults.find(({ elderId, deliveryBy }) => elderId === order.elderId && deliveryBy === datetime);\n return (\n \n \n {isLoading && !matched ? :\n matched ?\n : }\n \n {formatDatetime(datetime, { weekday: false })}\n \n \n \n );\n })}\n \n \n {(createErrors.find(({ elderId })=> elderId === order.elderId) || {}).message || ''}\n \n \n \n ))\n }\n \n {Object.keys(multiStopOrders).length !== 0 &&\n \n \n \n \n 多點配送\n \n \n \n {Object.keys(multiStopOrders).map((key) => {\n const { date, mealSlot, formIndex } = multiStopOrders[key][0];\n const dateDisplay = formatDatetime(date, { weekday: false, hour: false, minute: false });\n const mealSlotDisplay = mealSlot === 'lunch' ? '午餐' : '晚餐';\n const formIndexDisplay = formIndex + 1;\n const matched = createMultiStopOrderResults.find(\n (result) => result.date === date && result.mealSlot === mealSlot && result.formIndex === formIndex,\n );\n return (\n \n {isLoading ? :\n matched && matched.status === 'success' ?\n : }\n \n {`批量訂單${formIndexDisplay} ${dateDisplay} ${mealSlotDisplay}`}\n \n {!isLoading && matched && matched.status !== 'success' && matched.error &&\n \n \n {matched.error}\n \n }\n \n );\n })}\n \n \n }\n \n \n 下載結果\n \n \n 關閉視窗\n {isLoading && }\n \n \n \n \n }\n
\n );\n}\n\nAdminCreateBulkOrderForm.propTypes = {\n onComplete: PropTypes.func,\n formData: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditButton from '../components/EditButton';\n// import AdminCreateOrderForm from './AdminCreateOrderForm';\nimport AdminUpdateOrderForm from './AdminUpdateOrderForm';\n// import AdminCreateBulkOrderForm from './AdminCreateBulkOrderForm';\nimport AdminCreateBulkOrderForm from '../AdminBulkOrderForm/AdminCreateBulkOrderForm';\n\nexport default function AdminOrderEditButton({ mode = 'edit', ...props }) {\n const title = mode === 'edit' ? '修改訂單' : '訂單';\n const form = mode === 'edit' ? AdminUpdateOrderForm : AdminCreateBulkOrderForm;\n return (\n );\n}\n\nAdminOrderEditButton.propTypes = {\n mode: PropTypes.string,\n};\n","/* eslint-disable quotes, comma-dangle */\nimport i18n from 'i18next';\nimport { getTranslatedOrderStatus } from 'utilities/translate';\nimport { cancellationReasons, ORDER_CATEGORY_LABEL, ORDER_CATEGORY } from '@silvergatedelivery/constants';\n\nconst translatedOrderStatus = getTranslatedOrderStatus();\n\nconst schema = {\n \"type\": \"object\",\n \"required\": [\n \"restaurantId\"\n ],\n \"properties\": {\n \"status\": {\n \"type\": \"string\",\n \"title\": \"狀態\",\n 'enum': translatedOrderStatus.map(({ value }) => value),\n 'enumNames': translatedOrderStatus.map(({ label }) => label),\n 'default': translatedOrderStatus[0].value,\n },\n \"category\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"訂單類別\",\n \"enum\": ORDER_CATEGORY_LABEL,\n 'referenceOptions': ORDER_CATEGORY_LABEL,\n 'optionDescriptoins': ORDER_CATEGORY.map(({ description }) => description),\n \"default\": \"送餐\"\n },\n \"tier\": {\n \"type\": \"number\",\n \"title\": `${i18n.t('送餐')}層級`\n },\n \"restaurantId\": {\n \"type\": \"string\",\n \"title\": i18n.t('餐廳')\n },\n \"deliveryStaffId\": {\n \"type\": [\"string\", \"null\"],\n \"title\": i18n.t('送餐大使')\n },\n \"deliveryStaffFee\": {\n \"type\": \"number\",\n \"title\": `${i18n.t('送餐費用')} (保留 $0 的話,系統會根據距離自動計算)`,\n \"default\": 0\n },\n \"mealItems\": {\n \"type\": \"array\"\n },\n \"noteForMeal\": {\n \"type\": [\"string\", \"null\"],\n \"title\": `${i18n.t('餐點')}備註`\n },\n \"noteForDelivery\": {\n \"type\": [\"string\", \"null\"],\n \"title\": `${i18n.t('送餐')}備註`\n },\n \"note\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"其他備註\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"status\": {\n \"const\": \"cancelled\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"cancellationReason\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"訂單取消原因\",\n 'enum': cancellationReasons.map(({ value }) => value),\n 'enumNames': cancellationReasons.map(({ label }) => label),\n 'default': null,\n },\n \"cancellationNote\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"訂單取消備註\",\n },\n },\n \"required\": [\n \"cancellationReason\",\n ]\n }\n }\n ]\n};\n\nexport default schema;\n","/* eslint-disable quotes, comma-dangle */\nimport i18n from \"i18next\";\nimport { ORDER_CATEGORY_LABEL } from '@silvergatedelivery/constants';\n\nconst schema = {\n \"type\": \"object\",\n \"required\": [\n \"status\", \"category\", \"deliveryStaffId\", \"restaurantId\", \"mealItems\", \"deliveryBy\", \"repeatOn\", \"startOn\",\n ],\n \"properties\": {\n \"clientId\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"機構\"\n },\n \"status\": {\n \"type\": \"string\",\n \"title\": \"狀態\",\n \"enum\": [\"使用中\", \"已停用\"],\n \"default\": \"使用中\",\n },\n \"category\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"訂單類別\",\n \"enum\": ORDER_CATEGORY_LABEL,\n \"default\": \"送餐\"\n },\n \"deliveryGroupId\": {\n \"type\": \"string\",\n \"title\": \"送餐群組\",\n },\n \"elderId\": {\n \"type\": \"string\",\n \"title\": \"送餐對象\",\n },\n \"deliveryStaffId\": {\n \"type\": \"string\",\n \"title\": i18n.t(\"送餐大使\")\n },\n \"restaurantId\": {\n \"type\": \"string\",\n \"title\": i18n.t(\"餐廳\")\n },\n \"mealItems\": {\n \"type\": \"array\"\n },\n \"repeatOn\": {\n \"type\": \"array\",\n \"title\": \"送餐週期\",\n \"minItems\": 0,\n \"items\": {\n \"type\": \"integer\",\n \"enum\": [1, 2, 3, 4, 5, 6, 0],\n \"enumNames\": [\"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\", \"星期日\"],\n },\n \"uniqueItems\": true,\n 'description': '需搭配送餐對象的午晚餐送餐週期設定使用',\n },\n \"deliveryBy\": {\n \"type\": \"string\",\n \"title\": \"送餐時間\",\n \"format\": \"time\"\n },\n \"startOn\": {\n \"type\": \"string\",\n \"title\": \"開始日期\",\n \"format\": \"date\"\n },\n \"endOn\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"結束日期\",\n \"format\": \"date\",\n \"description\": \"可不輸入\",\n },\n }\n};\n\nexport default schema;\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\n\nexport default function SubmitButton({ ...props }) {\n return (\n \n 送出\n \n );\n}\n","import AutoSelectWidget from 'forms/components/AutoSelectWidget';\n\nexport const getTagsUiSchema = () => {\n return {\n 'items': {\n 'category': {\n 'ui:width': '40%',\n },\n 'name': {\n 'ui:width': '60%',\n },\n },\n };\n};\n\nexport const getMealItemsUiSchema = () => {\n return {\n 'items': {\n 'name': {\n 'ui:width': '30%',\n 'ui:options': {\n 'allowCustomInput': true,\n },\n 'ui:widget': AutoSelectWidget,\n },\n 'quantity': {\n 'ui:width': '12%',\n },\n 'cost': {\n 'ui:width': '12%',\n },\n 'price': {\n 'ui:width': '12%',\n },\n 'note': {\n 'ui:width': '34%',\n 'ui:emptyValue': '',\n },\n 'ui:title': '',\n },\n 'ui:options': {\n 'orderable': false,\n },\n };\n};\n\nexport const getEmergencyContactUiSchema = () => {\n return {\n 'name': {\n 'ui:width': '50%',\n },\n 'relationship': {\n 'ui:width': '50%',\n },\n 'phoneNumber': {\n 'ui:width': '50%',\n },\n 'phoneNumber2': {\n 'ui:width': '50%',\n 'ui:emptyValue': '',\n },\n };\n};\n\nexport const getAddressUiSchema = () => {\n return {\n 'zipCode': {\n 'ui:width': '100%',\n },\n 'county': {\n 'ui:width': '50%',\n },\n 'district': {\n 'ui:width': '50%',\n },\n 'street': {\n 'ui:width': '100%',\n },\n 'note': {\n 'ui:width': '100%',\n },\n 'lat': {\n 'ui:width': '50%',\n },\n 'lng': {\n 'ui:width': '50%',\n },\n 'place': {\n 'ui:widget': 'place',\n 'ui:width': '100%',\n },\n 'ui:order': [\n 'county', 'district', 'street', 'note', 'lat', 'lng',\n ],\n };\n};\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport Button from '@material-ui/core/Button';\nimport AddIcon from '@material-ui/icons/Add';\n\nconst AddButton = (props) => (\n \n);\n\nexport default AddButton;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport Button from '@material-ui/core/Button';\nimport Add from '@material-ui/icons/Add';\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\nimport Close from '@material-ui/icons/Close';\n// import { IconButtonProps as MuiIconButtonProps } from '@material-ui/core/IconButton';\n\nconst mappings = {\n 'close': Close,\n 'plus': Add,\n 'arrow-up': ArrowUpward,\n 'arrow-down': ArrowDownward,\n};\n\nconst IconButton = (props) => {\n const { icon, iconProps, ...otherProps } = props;\n const IconComp = mappings[icon];\n return (\n \n );\n};\n\nexport default IconButton;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { isMultiSelect } from '@rjsf/utils';\nimport { getDefaultRegistry } from '@rjsf/core';\n\nimport Box from '@material-ui/core/Box';\nimport Grid from '@material-ui/core/Grid';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Typography from '@material-ui/core/Typography';\nimport AddButton from './AddButton';\nimport IconButton from './IconButton';\n\n\nconst ArrayFieldTemplate = (props) => {\n const { schema, registry = getDefaultRegistry() } = props;\n\n // TODO: update types so we don't have to cast registry as any\n if (isMultiSelect(schema, registry.rootSchema)) {\n return ;\n } else {\n return ;\n }\n};\n\nconst ArrayFieldTitle = ({\n TitleField,\n idSchema,\n title,\n required,\n}) => {\n if (!title) {\n return null;\n }\n\n const id = `${idSchema.$id}__title`;\n return (\n \n {title}\n \n );\n // return ;\n};\n\nconst ArrayFieldDescription = ({\n DescriptionField,\n idSchema,\n description,\n}) => {\n if (!description) {\n return null;\n }\n\n const id = `${idSchema.$id}__description`;\n if (DescriptionField) {\n return ;\n } else {\n return (\n {description}\n );\n }\n};\n\n// Used in the two templates\nconst DefaultArrayItem = (props) => {\n const btnStyle = {\n flex: 1,\n // paddingLeft: 6,\n // paddingRight: 6,\n // fontWeight: 'bold',\n minWidth: 0,\n };\n return (\n \n \n {props.children}\n \n\n {props.hasToolbar && (\n \n {(props.hasMoveUp || props.hasMoveDown) && (\n \n )}\n\n {(props.hasMoveUp || props.hasMoveDown) && (\n \n )}\n\n {props.hasRemove && (\n \n )}\n \n )}\n \n );\n};\n\nconst DefaultFixedArrayFieldTemplate = (props) => {\n return (\n
\n \n\n {(props.uiSchema['ui:description'] || props.schema.description) && (\n \n {props.uiSchema['ui:description'] || props.schema.description}\n
\n )}\n\n \n {props.items && props.items.map(DefaultArrayItem)}\n
\n\n {props.canAdd && (\n \n )}\n \n );\n};\n\nconst DefaultNormalArrayFieldTemplate = (props) => {\n // global.logger.debug('DefaultNormalArrayFieldTemplate', props);\n return (\n \n \n \n\n {(props.uiSchema['ui:description'] || props.schema.description) && (\n \n )}\n\n \n {props.items && props.items.map((p) => DefaultArrayItem(p))} {/* eslint-disable-line new-cap */}\n\n {props.canAdd && (\n \n \n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default ArrayFieldTemplate;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles } from '@material-ui/styles';\n\nimport { canExpand, getTemplate } from '@rjsf/utils';\n\nimport AddButton from './AddButton';\n\nconst useStyles = makeStyles({\n root: {\n marginTop: 10,\n },\n});\n\nconst ObjectFieldTemplate = ({\n description,\n title,\n properties,\n required,\n disabled,\n readonly,\n uiSchema,\n idSchema,\n schema,\n formData,\n onAddClick,\n registry,\n}) => {\n const classes = useStyles();\n const TitleField = getTemplate('TitleFieldTemplate', registry);\n const DescriptionField = getTemplate('DescriptionFieldTemplate', registry);\n return (\n \n {(uiSchema['ui:title'] || title) && (\n \n )}\n {description && (\n \n )}\n \n {properties.map((element, index) => {\n const width = uiSchema[element.name] && uiSchema[element.name]['ui:width'] ?\n uiSchema[element.name]['ui:width'] : '100%';\n return (\n \n {element.content}\n \n );\n })}\n {canExpand(schema, uiSchema, formData) && (\n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default ObjectFieldTemplate;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport { ADDITIONAL_PROPERTY_FLAG } from '@rjsf/utils';\n\nimport Grid from '@material-ui/core/Grid';\nimport FormControl from '@material-ui/core/FormControl';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\n\nimport IconButton from './IconButton';\n\nconst WrapIfAdditional = ({\n children,\n disabled,\n id,\n label,\n onDropPropertyClick,\n onKeyChange,\n readonly,\n required,\n schema,\n uiSchema = [],\n}) => {\n const keyLabel = `${label} Key`; // i18n ?\n const additional = schema.hasOwnProperty(ADDITIONAL_PROPERTY_FLAG); // eslint-disable-line no-prototype-builtins\n const btnStyle = {\n flex: 1,\n paddingLeft: 6,\n paddingRight: 6,\n fontWeight: 'bold',\n };\n const width = uiSchema['ui:width'] || '100%';\n\n if (!additional) {\n return <>{children};\n }\n\n const handleBlur = ({ target }) =>\n onKeyChange(target.value);\n\n return (\n \n \n \n {keyLabel}\n \n \n \n \n {children}\n \n \n \n \n \n );\n};\n\nexport default WrapIfAdditional;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport Typography from '@material-ui/core/Typography';\n\nimport WrapIfAdditional from './WrapIfAdditional';\n\nconst FieldTemplate = ({\n id,\n children,\n classNames,\n disabled,\n displayLabel,\n label,\n onDropPropertyClick,\n onKeyChange,\n readonly,\n required,\n rawErrors = [],\n rawHelp,\n rawDescription,\n schema,\n uiSchema,\n}) => {\n return (\n \n \n {children}\n {displayLabel && rawDescription ? (\n \n {rawDescription}\n \n ) : null}\n {rawErrors.length > 0 && (\n \n {rawErrors.map((error, i) => {\n return (\n \n {error}\n \n );\n })}\n \n )}\n {rawHelp && {rawHelp}}\n \n \n );\n};\n\nexport default FieldTemplate;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\n// import MenuItem from '@material-ui/core/MenuItem';\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nimport { asNumber, guessType } from '@rjsf/utils';\n\nconst nums = new Set(['number', 'integer']);\n\nconst processValue = (schema, value) => {\n // 'enum' is a reserved word, so only 'type' and 'items' can be destructured\n const { type, items } = schema;\n if (value === '') {\n return undefined;\n } else if (type === 'array' && items && nums.has(items.type)) {\n return value.map(asNumber);\n } else if (type === 'boolean') {\n return value === 'true';\n } else if (type === 'number') {\n return asNumber(value);\n }\n\n // If type is undefined, but an enum is present, try and infer the type from\n // the enum values\n if (schema.enum) {\n if (schema.enum.every((x) => guessType(x) === 'number')) {\n return asNumber(value);\n } else if (schema.enum.every((x) => guessType(x) === 'boolean')) {\n return value === 'true';\n }\n }\n\n return value;\n};\n\nconst SelectWidget = ({\n schema,\n id,\n options,\n label,\n required,\n disabled,\n readonly,\n value: inValue,\n multiple,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n rawErrors = [],\n}) => {\n const [value, setValue] = React.useState('');\n const [inputValue, setInputValue] = React.useState('');\n const [errorMsg, setErrorMsg] = React.useState();\n const {\n enumOptions,\n // enumDisabled,\n } = options;\n\n const emptyValue = multiple ? [] : '';\n\n // const _onChange = ({ target: { value } }) => onChange(processValue(schema, value));\n const _onBlur = ({ target: { value } }) => onBlur(id, processValue(schema, value));\n const _onFocus = ({ target: { value } }) => onFocus(id, processValue(schema, value));\n\n React.useEffect(() => {\n if (typeof inValue !== 'undefined') {\n const matched = enumOptions.find((option) => option.value === inValue);\n if (matched) {\n setValue(matched.label);\n setInputValue(matched.label);\n }\n } else {\n setValue(emptyValue);\n setInputValue(emptyValue);\n }\n }, [inValue, emptyValue, enumOptions]);\n\n const renderInput = (params) => {\n // global.logger.debug(params);\n return ( 0 || (errorMsg ? true : false)}\n required={required}\n InputLabelProps={{\n shrink: true,\n }}\n helperText={errorMsg || params.helperText}\n />);\n };\n\n return (\n label.replace(/[\\r\\n]+/g, ''))}\n required={required}\n // getOptionLabel={(option) => option.label}\n // style={{ width: 300 }}\n freeSolo\n value={value}\n onChange={(event, newItem) => {\n if (newItem) {\n const matched = enumOptions.find(({ label }) => label.replace(/[\\r\\n]+/g, '') === newItem);\n if (matched) {\n onChange(matched.value);\n setErrorMsg();\n } else {\n setErrorMsg('沒有符合的資料');\n }\n }\n }}\n inputValue={inputValue}\n onInputChange={(event, newInputValue) => {\n setInputValue(newInputValue);\n if (newInputValue) {\n const matched = enumOptions.find(({ label }) => label.replace(/[\\r\\n]+/g, '') === newInputValue);\n if (matched) {\n onChange(matched.value);\n setErrorMsg();\n } else {\n setErrorMsg('沒有符合的資料');\n }\n }\n }}\n onBlur={_onBlur}\n onFocus={_onFocus}\n renderInput={renderInput}\n />\n );\n\n // return (\n // 0}\n // onChange={_onChange}\n // onBlur={_onBlur}\n // onFocus={_onFocus}\n // InputLabelProps={{\n // shrink: true,\n // }}\n // SelectProps={{\n // multiple: typeof multiple === 'undefined' ? false : multiple,\n // }}>\n // {(enumOptions).map(({ value, label }, i) => {\n // const disabled =\n // enumDisabled && (enumDisabled).indexOf(value) != -1;\n // return (\n // \n // {label}\n // \n // );\n // })}\n // \n // );\n};\n\nexport default SelectWidget;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\n\nconst TimeWidget = (props) => {\n const { id, required, value: inValue, onChange, onBlur, onFocus, label } = props;\n const [value, setValue] = useState(inValue);\n\n const formatValue = (value) => {\n if (value && value.split(':').length === 2) {\n return value + ':00';\n }\n return value;\n };\n\n const handleChange = (event) => {\n const newValue = event.target.value;\n setValue(newValue);\n onChange(formatValue(newValue));\n };\n\n return (\n onBlur(id, formatValue(event.target.value))}\n onFocus={(event) => onFocus(id, formatValue(event.target.value))}\n InputLabelProps={{\n shrink: true,\n }}\n inputProps={{\n step: 60,\n }}\n fullWidth\n />\n );\n};\n\nTimeWidget.propTypes = {\n id: PropTypes.string.isRequired,\n required: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n label: PropTypes.string,\n};\n\nexport default TimeWidget;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport PropTypes from 'prop-types';\nimport Form from '@rjsf/material-ui';\nimport { customizeValidator } from '@rjsf/validator-ajv8';\nimport moment from 'moment-timezone';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { debounce } from 'debounce';\nimport { countiesDistricts } from '@silvergatedelivery/constants';\nimport { getRestaurantMealsByRestaurantByIsActive } from './AdminBulkOrderForm/queries';\nimport { asyncListAll } from 'utilities/graph';\nimport localizer from 'ajv-i18n';\n\nconst validator = customizeValidator({}, localizer['zh-TW']);\n\nimport SubmitButton from 'forms/SubmitButton';\nimport {\n getOrganizationIdSchema,\n getElderIdSchema,\n getDeliveryGroupIdSchema,\n getRestaurantIdSchemaByClientId,\n getRestaurantOwnerIdSchema,\n getDeliveryStaffIdSchemaByClientId,\n getClientIdSchema,\n getAddressSchema,\n getEmergencyContactSchema,\n getCountySchema,\n getMealItemsSchema,\n getSponsorProgramIdSchema,\n} from 'forms/schemas';\nimport {\n getTagsUiSchema,\n getMealItemsUiSchema,\n getEmergencyContactUiSchema,\n getAddressUiSchema,\n} from 'forms/uiSchema';\nimport Place from 'components/Map/Place';\nimport ArrayTemplate from './components/ArrayTemplate';\nimport ObjectFieldTemplate from './components/ObjectFieldTemplate';\nimport FieldTemplate from './components/FieldTemplate';\nimport SelectWidget from './components/SelectWidget';\nimport TimeWidget from './components/TimeWidget';\nimport cache from 'utilities/cache';\nimport { request } from 'utilities/graph';\nimport {\n queryAddress,\n} from 'graphql/mutations';\nimport { formatAddress } from 'utilities/format';\n\n// https://react-jsonschema-form.readthedocs.io/en/latest/api-reference/form-props/\n// formData\n// onSubmit\n\nconst widgets = {\n SelectWidget,\n TimeWidget,\n};\n\nconst INPUT_DELAY = 1000;\n\nfunction findKeyPaths(obj, targetKey) {\n const keyPaths = [];\n\n function findKeyPathsRecursive(currentObj, currentPath) {\n // eslint-disable-next-line guard-for-in\n for (const key in currentObj) {\n if (Array.isArray(currentObj[key])) {\n currentObj[key].forEach((item, index) => {\n findKeyPathsRecursive(item, currentPath + '.' + key + '[' + index + ']');\n });\n } else if (typeof currentObj[key] === 'object' && currentObj[key] !== null) {\n findKeyPathsRecursive(currentObj[key], currentPath + '.' + key);\n }\n if (key === targetKey) {\n keyPaths.push((currentPath + '.' + key).replace(/^\\./, ''));\n }\n }\n }\n\n findKeyPathsRecursive(obj, '');\n\n return keyPaths;\n}\n\nfunction getValueByPath(obj, path) {\n return path.split('.').reduce((current, key) => {\n if (key.includes('[')) {\n const [arrayKey, index] = key.split('[');\n const arrayIndex = parseInt(index.replace(']', ''));\n return current[arrayKey][arrayIndex];\n }\n return current[key];\n }, obj);\n}\n\nconst DataForm = forwardRef(function DataForm({\n schema: inSchema,\n uiSchema: inUiSchema,\n createFunc,\n updateFunc,\n onComplete,\n formData: inFormData,\n children,\n onChange,\n hideSubmitButton = false,\n dirty: inDirty = false,\n extMappings: inExtMappings = [],\n extUiMappings: inExtUiMappings = [],\n targetZipcodes,\n addressLiteVersion = false,\n disabled = false,\n ...props\n}, ref) {\n const [schema, setSchema] = useState();\n const [uiSchema, setUiSchema] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [formData, setFormData] = useState({});\n const [currentAddress, setCurrentAddress] = useState({});\n const [dirty, setDirty] = useState(inDirty);\n const [errorMessage, setErrorMessage] = useState();\n const [showPlace, setShowPlace] = useState(false);\n const [mealOptionsList, setMealOptionsList] = useState({});\n\n const handleSubmit = async ({ formData }) => {\n global.logger.debug('handleSubmit', formData);\n try {\n setIsLoading(true);\n\n // run address query to fill lat/lng\n if (currentAddress && formData.address && (\n currentAddress.county !== formData.address.county ||\n currentAddress.district !== formData.address.district ||\n currentAddress.street !== formData.address.street ||\n !formData.address.lat || !formData.address.lng\n )) {\n global.logger.debug('Fetching address lat/lng');\n const params = {\n input: {\n address: formatAddress(formData.address, { includeZipCode: false, ignoreNote: true }),\n },\n };\n\n try {\n const {\n data: {\n queryAddress: {\n success,\n data: {\n lat,\n lng,\n },\n },\n },\n } = await request(queryAddress, params);\n if (!success) {\n if (addressLiteVersion) {\n setIsLoading(false);\n setErrorMessage('無法定位地址,請重新確認輸入的地址');\n return;\n }\n if (formData.address.lat && formData.address.lng) {\n if (!window.confirm('無法定位地址,要使用所填入的經緯度請按確認,或按取消重新確認輸入的地址?')) {\n setIsLoading(false);\n setErrorMessage('無法定位地址,請重新確認輸入的地址');\n return;\n }\n } else {\n setIsLoading(false);\n setErrorMessage('無法定位地址,請重新確認輸入的地址,或自行填入經緯度');\n return;\n }\n } else {\n if (!addressLiteVersion && formData.address.lat && formData.address.lng) {\n if (formData.address.lat !== lat || formData.address.lng !== lng) {\n if (window.confirm('定位結果與輸入的經緯度不同,按確定使用定位結果,或按取消使用原輸入的經緯度')) {\n formData.address.lat = lat;\n formData.address.lng = lng;\n }\n }\n } else {\n formData.address.lat = lat;\n formData.address.lng = lng;\n }\n }\n } catch (e) {\n if (formData.address.lat && formData.address.lng) {\n if (!window.confirm('定位系統忙碌或出錯,要使用所填入的經緯度請按確認,或按取消稍後再試?')) {\n setIsLoading(false);\n setErrorMessage('定位系統忙碌或出錯,請稍後再試');\n return;\n }\n } else {\n setIsLoading(false);\n setErrorMessage('定位系統忙碌或出錯,請稍後再試,或自行填入經緯度');\n return;\n }\n }\n }\n\n setFormData(formData); // persist the data;\n\n const now = moment().toISOString();\n const username = cache.get('app:username');\n\n let data;\n let returnData;\n if (formData.id) {\n data = Object.assign(formData, {\n updatedAt: now,\n updatedBy: username,\n });\n returnData = await updateFunc(data);\n } else {\n data = Object.assign(formData, {\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n });\n returnData = await createFunc(data);\n }\n\n setIsLoading(false);\n onComplete && onComplete(returnData || data);\n } catch (e) {\n global.logger.debug(e);\n setIsLoading(false);\n }\n };\n\n const getMealOptions = async (restaurantId) => {\n if (!restaurantId) {\n return;\n }\n let mealOptions = mealOptionsList[restaurantId];\n if (!mealOptions) {\n mealOptions = await asyncListAll(\n getRestaurantMealsByRestaurantByIsActive, { restaurantId });\n mealOptionsList[restaurantId] = mealOptions;\n setMealOptionsList(mealOptionsList);\n }\n return mealOptions;\n };\n\n const updateSchema = async () => {\n setIsLoading(true);\n let mealOptions = [];\n if (inFormData && inFormData.restaurantId) {\n mealOptions = await getMealOptions(inFormData.restaurantId);\n }\n const clientId = cache.get('app:facilityId');\n // Update schema\n const extMappings = [\n { key: 'organizationId', func: getOrganizationIdSchema },\n { key: 'elderId', func: getElderIdSchema },\n { key: 'deliveryGroupId', func: getDeliveryGroupIdSchema },\n { key: 'restaurantId', func: getRestaurantIdSchemaByClientId(clientId) },\n { key: 'restaurantOwnerId', func: getRestaurantOwnerIdSchema },\n { key: 'deliveryStaffId', func: getDeliveryStaffIdSchemaByClientId(clientId) },\n { key: 'clientId', func: getClientIdSchema },\n { key: 'address', func: getAddressSchema(targetZipcodes, addressLiteVersion) },\n { key: 'emergencyContact', func: getEmergencyContactSchema },\n { key: 'county', func: getCountySchema },\n { key: 'mealItems', func: getMealItemsSchema(mealOptions) },\n { key: 'sponsorProgramId', func: getSponsorProgramIdSchema },\n ];\n const schema = inSchema;\n const propertiesPathes = findKeyPaths(schema, 'properties');\n const allPromises = [];\n propertiesPathes.forEach(async (path) => {\n const properties = getValueByPath(schema, path);\n const promises = Object.keys(properties).map(async (key) => {\n const matched = inExtMappings.find((item) => item.key === key) ||\n extMappings.find((item) => item.key === key);\n if (matched) {\n const currentValue = (inFormData || {})[key];\n const extSchema = await matched.func(currentValue, properties[key].title);\n if (extSchema) {\n properties[key] = Object.assign(properties[key], extSchema);\n }\n if (key === 'address') {\n setShowPlace(true);\n }\n }\n });\n allPromises.push(...promises);\n });\n\n await Promise.all(allPromises);\n\n setSchema(schema);\n\n // UI Schema\n const uiSchema = inUiSchema;\n const extUiMappings = [\n { key: 'tags', func: getTagsUiSchema },\n { key: 'mealItems', func: getMealItemsUiSchema },\n { key: 'emergencyContact', func: getEmergencyContactUiSchema },\n { key: 'address', func: getAddressUiSchema },\n ];\n\n Object.keys(schema.properties).forEach((key) => {\n uiSchema[key] = uiSchema[key] || {};\n\n const matched = inExtUiMappings.find((item) => item.key === key) ||\n extUiMappings.find((item) => item.key === key);\n\n if (matched) {\n const extSchema = matched.func();\n uiSchema[key] = Object.assign(uiSchema[key], extSchema);\n }\n\n if (schema.properties[key].type === 'string' ||\n (Array.isArray(schema.properties[key].type) && schema.properties[key].type.includes('string'))\n ) {\n uiSchema[key] = Object.assign(uiSchema[key], {\n 'ui:emptyValue': '',\n });\n }\n });\n\n setUiSchema(uiSchema);\n setIsLoading(false);\n };\n\n useImperativeHandle(ref, () => ({\n updateSchema,\n }));\n\n useEffect(() => {\n if (schema || isLoading) return;\n\n (async () => {\n await updateSchema();\n })();\n }, [inSchema, schema, inUiSchema, inFormData, inExtMappings, inExtUiMappings, isLoading]);\n\n useEffect(() => {\n setFormData(inFormData);\n\n if (inFormData && inFormData.address) {\n setCurrentAddress(inFormData.address);\n }\n }, [inFormData]);\n\n useEffect(() => {\n setDirty(inDirty);\n }, [inDirty]);\n\n const updateMealItems = async (newFormData) => {\n if (!newFormData.restaurantId || !schema.properties.mealItems) {\n return;\n }\n const mealOptions = await getMealOptions(newFormData.restaurantId);\n if (newFormData.restaurantId && newFormData.restaurantId !== formData.restaurantId) {\n if (mealOptions.length) {\n if (newFormData.mealItems) {\n const newMealItems = [];\n const { name, price = 0, cost = 0, surcharges = [] } = mealOptions[0];\n newFormData.mealItems.forEach((mealItem) => {\n newMealItems.push({\n ...mealItem,\n name,\n price,\n cost,\n surcharges: surcharges || [],\n });\n });\n newFormData.mealItems = newMealItems;\n }\n }\n schema.properties.mealItems = getMealItemsSchema(mealOptions)();\n setSchema(schema);\n } else {\n const mealOptions = mealOptionsList[newFormData.restaurantId];\n newFormData.mealItems.forEach((mealItem, index) => {\n if (mealItem.name && (!formData.mealItems[index] || mealItem.name !== formData.mealItems[index].name)) {\n if (mealOptions.length) {\n const option = mealOptions.find(({ name }) => name === mealItem.name);\n if (option) {\n mealItem.price = option.price;\n mealItem.cost = option.cost;\n mealItem.surcharges = option.surcharges || [];\n }\n }\n }\n });\n }\n };\n\n if (!schema) return null;\n\n return (\n {\n global.logger.debug('formData update', formData);\n if (formData.address && formData.address.county && formData.address.district) {\n const { zipCode } = countiesDistricts.find(\n (item) => item.county === formData.address.county && item.districts.includes(formData.address.district),\n ) || {};\n if (zipCode) {\n formData.address.zipCode = zipCode;\n }\n }\n await updateMealItems(formData);\n setFormData(formData);\n setDirty(true);\n onChange && onChange(formData);\n }, INPUT_DELAY)}\n templates={{ ArrayFieldTemplate: ArrayTemplate, ObjectFieldTemplate, FieldTemplate }}\n widgets={widgets}\n {...props}\n >\n {showPlace && formData && formData.address && (\n
\n {!addressLiteVersion && \n 按下顯示詳細地圖,在google地圖上按下滑鼠右鍵可以取得經緯度\n }\n \n
\n )}\n\n {children}\n\n {!hideSubmitButton &&\n \n \n }\n\n {errorMessage &&
{errorMessage}
}\n \n );\n});\n\nDataForm.propTypes = {\n schema: PropTypes.object,\n uiSchema: PropTypes.object,\n createFunc: PropTypes.func,\n updateFunc: PropTypes.func,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n onChange: PropTypes.func,\n children: PropTypes.any,\n hideSubmitButton: PropTypes.bool,\n dirty: PropTypes.bool,\n extMappings: PropTypes.array,\n extUiMappings: PropTypes.array,\n targetZipcodes: PropTypes.array,\n addressLiteVersion: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nexport default DataForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport EditButton from '../components/EditButton';\nimport DeliverStaffForm from './DeliverStaffForm';\n\nexport default function DeliverStaffEditButton({ ...props }) {\n if (props.mode === 'add') {\n return null;\n }\n\n return (\n );\n}\n\nDeliverStaffEditButton.propTypes = {\n mode: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { resetFormCache } from 'forms/formCache';\nimport { request } from 'utilities/graph';\nimport { createDeliveryStaff, updateDeliveryStaff } from 'graphql/mutations';\nimport schema from './schema';\nimport uiSchema from './uiSchema';\nimport { deliveryStaffStatus } from '@silvergatedelivery/constants';\n\nimport {\n getClientIdSchema,\n} from 'forms/schemas';\nimport { useCache } from 'CacheProvider';\n\nObject.assign(schema.properties.isActive, {\n type: 'number',\n enum: deliveryStaffStatus.map(({ value }) => value),\n enumNames: deliveryStaffStatus.map(({ label }) => label),\n default: 1,\n});\n\nexport default function DeliverStaffForm({ ...props }) {\n const { appGroup } = useCache();\n\n const createFunc = async (data) => {\n data.county = data.county || data.address.county;\n\n await request(createDeliveryStaff, { input: data });\n resetFormCache('allDeliveryStaffs');\n };\n\n const updateFunc = async (data) => {\n data.county = data.county || data.address.county;\n\n await request(updateDeliveryStaff, { input: data });\n resetFormCache('allDeliveryStaffs');\n };\n\n return (\n {\n const adminMode = appGroup === 'Admins';\n return getClientIdSchema(clientId, '所屬機構', false, adminMode, false);\n },\n }]}\n {...props}\n />\n );\n}\n\nDeliverStaffForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","const schema = {\n 'title': '基本資料',\n 'type': 'object',\n 'required': [\n 'isActive', 'category', 'type', 'question',\n ],\n 'properties': {\n 'isActive': {\n 'type': 'number',\n 'title': '狀態',\n 'enum': [0, 1],\n 'enumNames': ['已停用', '使用中'],\n 'default': 1,\n },\n 'category': {\n 'type': 'string',\n 'title': '題目類別',\n 'enum': ['時間感', '方向感', '生活認知', '記憶'],\n 'enumNames': ['時間感', '方向感', '生活認知', '記憶'],\n },\n 'type': {\n 'type': 'string',\n 'title': '答題類型',\n 'enum': ['是非題', '開放式問題', '互動題'],\n 'enumNames': ['是非題', '開放式問題', '互動題'],\n },\n 'question': {\n 'type': 'string',\n 'title': '題目',\n },\n },\n};\n\nexport default schema;\n","import CheckboxesWithSelectAll from 'forms/components/CheckboxesWithSelectAll';\nimport AutoSelectWidget from 'forms/components/AutoSelectWidget';\n\nconst uiSchema = {\n 'ui:order': [\n 'status',\n 'deactivationReason',\n 'deactivationNote',\n '*',\n ],\n 'status': {\n 'ui:width': '33.33%',\n },\n 'deactivationReason': {\n 'ui:width': '33.33%',\n },\n 'deactivationNote': {\n 'ui:width': '33.33%',\n },\n 'clientId': { 'ui:width': '70%' },\n 'relationshipToClient': { 'ui:width': '30%' },\n 'name': { 'ui:width': '33.33%' },\n 'nickname': { 'ui:width': '33.33%' },\n 'username': { 'ui:width': '33.33%' },\n 'phoneNumber': { 'ui:width': '33.33%' },\n 'phoneNumber2': { 'ui:width': '33.33%' },\n 'phoneNumber3': { 'ui:width': '33.33%' },\n 'identificationCardId': { 'ui:width': '33.33%' },\n 'birthday': { 'ui:width': '23.33%' },\n 'gender': {\n 'ui:width': '43.33%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'isDisadvantaged': {\n 'ui:width': '33.33%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'isIndigenous': {\n 'ui:width': '33.33%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'isLivingAlone': {\n 'ui:width': '33.33%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'isAllowedToEnterHome': {\n 'ui:width': '33.33%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'onTimeDelivery': {\n 'ui:width': '33.33%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'dementiaQuestionnaire': {\n 'ui:width': '33.33%',\n 'ui:widget': 'radio',\n 'ui:options': {\n 'inline': true,\n },\n },\n 'disabilityLevel': {\n 'ui:width': '50%',\n },\n 'cmsLevel': {\n 'ui:width': '50%',\n },\n 'serviceCode': {\n 'ui:width': '50%',\n 'ui:options': {\n 'allowCustomInput': true,\n },\n 'ui:widget': AutoSelectWidget,\n },\n 'linkGroupName': { 'ui:width': '50%' },\n 'otherSocialServices': {\n 'ui:widget': 'textarea',\n },\n 'noteForDelivery': {\n 'ui:widget': 'textarea',\n },\n 'lunchRepeatOn': {\n 'ui:widget': CheckboxesWithSelectAll,\n 'ui:options': {\n 'inline': true,\n },\n },\n 'dinnerRepeatOn': {\n 'ui:widget': CheckboxesWithSelectAll,\n 'ui:options': {\n 'inline': true,\n },\n },\n 'noteForMeal': {\n 'ui:widget': 'textarea',\n },\n 'noteForHealth': {\n 'ui:widget': 'textarea',\n },\n 'note': {\n 'ui:widget': 'textarea',\n },\n 'disadvantagedTypesHistory': {\n 'items': {\n 'disadvantagedTypes': { 'ui:width': '50%' },\n 'approvedDate': { 'ui:width': '50%' },\n 'ui:title': '',\n },\n 'ui:options': {\n 'orderable': false,\n },\n },\n 'caseNumber': { 'ui:width': '33.33%' },\n 'govQualifiedCount': { 'ui:width': '33.33%' },\n 'supervisorId': { 'ui:width': '33.33%' },\n 'fixedDeliveryStaffFee': { 'ui:width': '33.33%', 'ui:emptyValue': null },\n 'paymentBankIndex': { 'ui:width': '33.33%' },\n 'paymentMethod': { 'ui:width': '33.33%' },\n 'defaultDeliveryStaffId': { 'ui:width': '33.33%' },\n};\n\nexport default uiSchema;\n","import { Semaphore } from 'async-mutex';\nimport {\n updateDeliveryStaffOrder,\n updateElderDeliveryGroup,\n updateILinkOrder,\n updateIssue,\n updateOrder,\n updatePandagoOrder,\n updateUberOrder,\n updateLalamoveOrder,\n} from 'graphql/mutations';\nimport {\n getDeliveryStaffOrdersByElderByDate,\n getElderDeliveryGroupByElder,\n getILinkOrdersByElderIdByCreatedAt,\n getIssuesByElderByCreatedAt,\n getOrdersByElderByCreatedAt,\n getPandagoOrdersByElderIdByCreatedAt,\n getUberOrdersByElderIdByCreatedAt,\n getLalamoveOrdersByElderIdByCreatedAt,\n} from './queries';\nimport { asyncListAll, request } from 'utilities/graph';\n\nimport cache from 'utilities/cache';\n\nconst methodList = [\n {\n getFunc: getDeliveryStaffOrdersByElderByDate,\n updateFunc: updateDeliveryStaffOrder,\n },\n {\n getFunc: getElderDeliveryGroupByElder,\n updateFunc: updateElderDeliveryGroup,\n },\n {\n getFunc: getILinkOrdersByElderIdByCreatedAt,\n updateFunc: updateILinkOrder,\n },\n {\n getFunc: getIssuesByElderByCreatedAt,\n updateFunc: updateIssue,\n },\n {\n getFunc: getOrdersByElderByCreatedAt,\n updateFunc: updateOrder,\n },\n {\n getFunc: getPandagoOrdersByElderIdByCreatedAt,\n updateFunc: updatePandagoOrder,\n },\n {\n getFunc: getUberOrdersByElderIdByCreatedAt,\n updateFunc: updateUberOrder,\n },\n {\n getFunc: getLalamoveOrdersByElderIdByCreatedAt,\n updateFunc: updateLalamoveOrder,\n },\n];\n\nexport const changeClientId = async (elderId, clientId) => {\n const username = cache.get('app:username');\n const now = new Date().toISOString();\n\n const updatePromises = methodList.map(async ({ getFunc, updateFunc }) => {\n const results = await asyncListAll(getFunc, { elderId });\n const toUpdateRecords = [];\n\n results.forEach((item) => {\n if (item.clientId !== clientId) {\n item.clientId = clientId;\n item.updatedAt = now;\n item.updatedBy = username;\n toUpdateRecords.push(item);\n }\n });\n const s = new Semaphore(10);\n return Promise.all(toUpdateRecords.map((item) =>\n s.runExclusive(async () => {\n try {\n await request(updateFunc, { input: item });\n } catch (e) {\n console.log(e);\n }\n }),\n ));\n });\n await Promise.all(updatePromises);\n};\n","export const getOrdersByElderByCreatedAt = /* GraphQL */ `\n query GetOrdersByElderByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByElderByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n orderGroupId\n }\n nextToken\n }\n }\n`;\nexport const getElderDeliveryGroupByElder = /* GraphQL */ `\n query GetElderDeliveryGroupByElder(\n $elderId: ID\n $deliveryGroupId: ModelIDKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDeliveryGroupByElder(\n elderId: $elderId\n deliveryGroupId: $deliveryGroupId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetILinkOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByElderByCreatedAt = /* GraphQL */ `\n query GetIssuesByElderByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByElderByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetPandagoOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetUberOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetLalamoveOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByElderByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByElderByDate(\n $elderId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByElderByDate(\n elderId: $elderId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n isPublished\n publishedUrl\n blogId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useDropzone } from 'react-dropzone';\nimport { Storage } from 'aws-amplify';\nimport IconButton from '@material-ui/core/IconButton';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n imgContainer: {\n position: 'relative',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[300],\n },\n}));\n\nexport default function ElderGallery({\n elderId,\n s3Keys = [],\n type = 'personal',\n onUpdateS3Keys = () => {},\n onUploadStart = () => {},\n onUploadEnd = () => {},\n}) {\n const classes = useStyles();\n\n const [isLoading, setIsLoading] = useState(false);\n const [files, setFiles] = useState([]);\n\n const {\n getRootProps,\n getInputProps,\n } = useDropzone({\n async onDrop(newFiles) {\n setIsLoading(true);\n onUploadStart();\n global.logger.debug('onDrop', newFiles);\n\n if (newFiles.length === 0) {\n setIsLoading(false);\n onUploadEnd();\n return;\n }\n\n try {\n await Promise.all(newFiles.map(async (file) => {\n const s3Key = `elders/${elderId}/${type}/${file.name}`;\n await Storage.put(s3Key, file, {\n contentType: file.type,\n });\n\n s3Keys.push(s3Key);\n files.push({\n s3Key,\n url: URL.createObjectURL(file),\n });\n }));\n\n setFiles([...files]);\n onUpdateS3Keys(s3Keys);\n } catch (error) {\n console.error('Upload failed:', error);\n } finally {\n setIsLoading(false);\n onUploadEnd();\n }\n },\n accept: 'image/*',\n });\n\n const onRemoveFile = async (s3Key) => {\n setIsLoading(true);\n onUploadStart();\n try {\n await Storage.remove(s3Key);\n const fileIndex = files.findIndex((file) => file.s3Key === s3Key);\n files.splice(fileIndex, 1);\n\n const s3KeyIndex = s3Keys.findIndex((key) => key === s3Key);\n s3Keys.splice(s3KeyIndex, 1);\n\n setFiles([...files]);\n onUpdateS3Keys(s3Keys);\n } catch (error) {\n console.error('Remove failed:', error);\n } finally {\n setIsLoading(false);\n onUploadEnd();\n }\n };\n\n useEffect(() => {\n (async () => {\n if (s3Keys.length === 0) return;\n\n const files = await Promise.all(s3Keys.map(async (s3Key) => {\n return {\n s3Key,\n url: await Storage.get(s3Key),\n };\n }));\n setFiles(files);\n })();\n }, [s3Keys]);\n\n return (\n \n \n
\n
\n \n {isLoading && }\n {!isLoading &&

點此或拖曳上傳圖片

}\n
\n
\n
\n {files.map(({ s3Key, url }, index) => (\n \n onRemoveFile(s3Key)}\n disabled={isLoading}\n >\n \n \n \"image\"\n \n ))}\n
\n );\n}\n\nElderGallery.propTypes = {\n elderId: PropTypes.string.isRequired,\n s3Keys: PropTypes.array,\n onUpdateS3Keys: PropTypes.func,\n type: PropTypes.string,\n onUploadStart: PropTypes.func,\n onUploadEnd: PropTypes.func,\n};\n","import React, { useState, useEffect, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport Grid from '@material-ui/core/Grid';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport moment from 'moment';\nimport { tag as allTags } from '@silvergatedelivery/constants';\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport {\n getElder,\n getOrdersByElderByDate,\n} from 'graphql/queries';\nimport {\n createElder,\n createTag,\n createElderTag,\n deleteElderTag,\n updateElder,\n adminUpdateOrder,\n} from 'graphql/mutations';\nimport DataJoinEditorInput from 'components/DataJoinEditor/DataJoinEditorInput';\nimport i18n from 'i18next';\nimport uiSchema from './uiSchema';\nimport {\n getClientIdSchema,\n getDeliveryStaffIdSchema,\n getCustomizeDisadvantagedSettingsSchema,\n} from 'forms/schemas';\nimport cache from 'utilities/cache';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { changeClientId } from './changeClientId';\nimport { Semaphore } from 'async-mutex';\nimport LinearProgressWithLabel from 'components/LinearProgressWithLabel';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { toastr } from 'react-redux-toastr';\nimport { useCache } from 'CacheProvider';\nimport { sortBy } from 'utilities/sorting';\nimport { v1 as uuidv1 } from 'uuid';\nimport ElderGallery from './ElderGallery';\n\nexport default function ElderForm({ ...props }) {\n // load here for translation purpose\n const { default: defaultSchema } = useMemo(() => require('./schema.js'), []);\n const [tags, setTags] = useState({ items: [] });\n const [newTagMappings, setNewTagMappings] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n const [isUploading, setIsUploading] = useState(false);\n const [openCancelOrderDialog, setOpenCancelOrderDialog] = useState(false);\n const [openChangeClientIdDialog, setOpenChangeClientIdDialog] = useState(false);\n const [progress, setProgress] = useState(0);\n const { appGroup, selectedUserGroupParams } = useCache();\n const [clientIdInForm, setClientIdInForm] = useState(props.formData?.clientId);\n const [personalPhotoS3Keys, setPersonalPhotoS3Keys] = useState([]);\n const [homePhotoS3Keys, setHomePhotoS3Keys] = useState([]);\n const [elderId, setElderId] = useState();\n const dataFormRef = useRef();\n\n const schema = JSON.parse(JSON.stringify(defaultSchema));\n let receiptInfo = {};\n if (props.formData && props.formData.id) {\n if (appGroup === 'Admins') {\n schema.properties.clientId.description = `更換所屬機構系統會同時移動訂單與${i18n.t('送餐關懷')}(費時)。如找不到資料請重新整理頁面。`;\n } else if (appGroup === 'OrgAdmins') {\n schema.properties.clientId.description = '更換所屬機構會複製送餐對象資料到新的機構';\n }\n receiptInfo = props.formData.client?.facilitySettings?.receiptInfo || {};\n } else if (appGroup === 'FacilityAdmins') {\n const { clientData } = selectedUserGroupParams;\n receiptInfo = clientData.facilitySettings?.receiptInfo || {};\n }\n if (receiptInfo.bankName) {\n schema.properties.paymentBankIndex.enumNames[0] = `1 - ${receiptInfo.bankName}`;\n }\n if (receiptInfo.bankName2) {\n schema.properties.paymentBankIndex.enumNames[1] = `2 - ${receiptInfo.bankName2}`;\n }\n if (receiptInfo.bankName3) {\n schema.properties.paymentBankIndex.enumNames[2] = `3 - ${receiptInfo.bankName3}`;\n }\n\n const onChangeTags = (key, tags) => {\n newTagMappings[key] = tags;\n setNewTagMappings({ ...newTagMappings });\n };\n\n const handleTags = async (elderId) => {\n const now = moment().toISOString();\n const username = cache.get('app:username');\n\n const toRemoveJoinData = [];\n tags.items.forEach(({ id, tagId, tag }) => {\n const { subcategory } = tag;\n const matched = newTagMappings[subcategory].find(({ id }) => id === tagId);\n if (!matched) {\n toRemoveJoinData.push({ id });\n }\n });\n\n await Promise.all([\n ...Object.keys(newTagMappings).map((subcategory) => {\n return Promise.all(newTagMappings[subcategory].map(async (item) => {\n let tag = item;\n\n if (!tag.id) {\n const tagData = {\n category: '送餐對象',\n subcategory,\n label: tag.label,\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n const { data: { createTag: createdTag } } = await request(createTag, { input: tagData });\n tag = createdTag;\n }\n\n const matched = tags.items.find(({ tagId }) => tagId === tag.id);\n if (!matched) {\n const joinData = {\n tagId: tag.id,\n elderId,\n createdBy: username,\n updatedBy: username,\n };\n\n await request(createElderTag, { input: joinData });\n }\n }));\n }),\n ...toRemoveJoinData.map((item) => {\n return request(deleteElderTag, { input: item });\n }),\n ]);\n };\n\n const getElderUpdated = async (elderId) => {\n const { data: { getElder: data } } = await request(getElder, { id: elderId });\n return data;\n };\n\n const createFunc = async (data) => {\n setIsLoading(true);\n data.county = data.address.county;\n\n // serviceCode 是 secondary index, 不能填 null\n if (data.serviceCode === null) {\n delete data.serviceCode;\n }\n\n if (data.disadvantagedTypesHistory && data.disadvantagedTypesHistory.length > 1) {\n data.disadvantagedTypesHistory.sort(sortBy('approvedDate'));\n }\n data.id = elderId;\n data.personalPhotoS3Keys = personalPhotoS3Keys;\n data.homePhotoS3Keys = homePhotoS3Keys;\n await request(createElder, { input: data });\n\n await handleTags(elderId);\n\n const elder = await getElderUpdated(elderId);\n\n setIsLoading(false);\n\n return elder;\n };\n\n const cancellAllInCompleteOrders = async (elder) => {\n const lastWeek = moment().tz(TIME_ZONE).add(-7, 'days').format('YYYY-MM-DD');\n const queryParams = {\n elderId: elder.id,\n date: {\n gt: lastWeek,\n },\n filter: {\n and: [\n {\n status: {\n ne: 'completed',\n },\n },\n {\n status: {\n ne: 'delivered',\n },\n },\n {\n status: {\n ne: 'cancelled',\n },\n },\n ],\n },\n };\n\n const { data: { getOrdersByElderByDate: { items: incompleteOrders } } } = await request(getOrdersByElderByDate, queryParams);\n\n if (incompleteOrders.length !== 0) {\n let orderProcessed = 0;\n const toUpdateData = [];\n\n if (window.confirm(`${elder.name} 尙有${incompleteOrders.length}筆訂單, 取消訂單?`)) {\n setOpenCancelOrderDialog(true);\n const s = new Semaphore(10);\n const orderGrouped = {};\n incompleteOrders.forEach((order) => {\n const groupId = order.orderGroupId || order.id;\n orderGrouped[groupId] = orderGrouped[groupId] || [];\n orderGrouped[groupId].push(order);\n });\n\n await Promise.all(Object.keys(orderGrouped).map((groupId) =>\n s.runExclusive(async () => {\n const data = orderGrouped[groupId].map((order) => (\n {\n id: order.id,\n restaurantId: order.restaurantId,\n deliveryBy: order.deliveryBy,\n status: 'cancelled',\n tier: order.tier,\n cancellationReason: 'serviceStop',\n }\n ));\n try {\n await request(adminUpdateOrder, { input: { orders: data } });\n toUpdateData.push(...data);\n } catch (e) {\n console.log(e);\n if (e.errors && e.errors[0] && e.errors[0].message) {\n toastr.error(e.errors[0].message);\n }\n }\n orderProcessed += 1;\n setProgress(orderProcessed * 100 / incompleteOrders.length);\n }),\n ));\n setOpenCancelOrderDialog(false);\n }\n }\n };\n\n const updateFunc = async (data) => {\n setIsLoading(true);\n\n const {\n id,\n clientId,\n client: { id: oldClientId },\n } = data;\n let elderId = id;\n const isClientChange = clientId !== oldClientId;\n\n data.county = data.address.county;\n let copyElder = false;\n\n if (appGroup === 'OrgAdmins' && isClientChange) {\n if (!window.confirm('確認複製送餐對象到新的機構嗎?')) {\n setIsLoading(false);\n throw new Error('abort');\n }\n copyElder = true;\n }\n delete data.client;\n delete data.tags;\n\n if (appGroup === 'Admins' && isClientChange) {\n if (!window.confirm('要移動送餐對象到新的機構請按確認,或按取消複製送餐對象到新機構?')) {\n if (!window.confirm('確認複製送餐對象到新的機構嗎?')) {\n setIsLoading(false);\n throw new Error('abort');\n }\n copyElder = true;\n }\n }\n\n if (data.disadvantagedTypesHistory && data.disadvantagedTypesHistory.length > 1) {\n data.disadvantagedTypesHistory.sort(sortBy('approvedDate'));\n }\n data.personalPhotoS3Keys = personalPhotoS3Keys;\n data.homePhotoS3Keys = homePhotoS3Keys;\n if (copyElder) {\n const now = moment().toISOString();\n const username = cache.get('app:username');\n // 複製client到新機構\n delete data.deliveryGroupId;\n delete data.sortOrder;\n delete data.id;\n data.createdAt = now;\n data.createdBy = username;\n data.updatedAt = now;\n data.updatedBy = username;\n\n const cleanedData = Object.fromEntries(\n Object.entries(data).filter(([key, value]) => value !== null),\n );\n\n const { data: { createElder: { id: newElderId } } } = await request(createElder, { input: cleanedData });\n elderId = newElderId;\n await handleTags(elderId);\n } else {\n const promises = [\n request(updateElder, { input: data }),\n handleTags(elderId),\n ];\n\n await Promise.all(promises);\n\n if (props.formData.status !== '已停用' && data.status === '已停用') {\n await cancellAllInCompleteOrders(data);\n }\n\n if (isClientChange) {\n setOpenChangeClientIdDialog(true);\n await changeClientId(elderId, clientId);\n setOpenChangeClientIdDialog(false);\n }\n }\n\n const elderUpdated = await getElderUpdated(elderId);\n setIsLoading(false);\n\n return elderUpdated;\n };\n\n useEffect(() => {\n setElderId(props.formData?.id || uuidv1());\n\n if (props.formData && props.formData.id && props.formData.tags) {\n setTags(props.formData.tags);\n setNewTagMappings(props.formData.tags.items.reduce((obj, { tag }) => {\n obj[tag.subcategory] = obj[tag.subcategory] || [];\n obj[tag.subcategory].push(tag);\n return obj;\n }, {}));\n }\n if (props.formData && props.formData.id && props.formData.personalPhotoS3Keys) {\n setPersonalPhotoS3Keys(props.formData.personalPhotoS3Keys);\n }\n if (props.formData && props.formData.id && props.formData.homePhotoS3Keys) {\n setHomePhotoS3Keys(props.formData.homePhotoS3Keys);\n }\n }, [props.formData]);\n\n // workaround:\n // lunchRepeatOn和dinnderRepeatOn backend有可能回null, rjsf會把null放進xxxRepeatOn的array中\n // 造成validation不會過, 無法修改elder\n if (props.formData && !props.formData.lunchRepeatOn) {\n props.formData.lunchRepeatOn = [];\n }\n if (props.formData && !props.formData.dinnerRepeatOn) {\n props.formData.dinnerRepeatOn = [];\n }\n\n const handleFormChange = (updatedFormData) => {\n setClientIdInForm(updatedFormData.clientId);\n };\n useEffect(() => {\n if (clientIdInForm && dataFormRef.current && dataFormRef.current.updateSchema) {\n dataFormRef.current.updateSchema();\n }\n }, [clientIdInForm]);\n\n const onUpdateS3Keys = (type, s3Keys) => {\n if (type === 'personal') {\n setPersonalPhotoS3Keys(s3Keys);\n } else if (type === 'home') {\n setHomePhotoS3Keys(s3Keys);\n }\n };\n if (!elderId) {\n return null;\n }\n\n return (\n <>\n {\n if (appGroup === 'OrgAdmins') {\n const { organizationData } = selectedUserGroupParams;\n const records = [];\n if (organizationData?.clients?.items) {\n organizationData.clients.items.forEach(({ client: { id, name }, elderSetting }) => {\n if (elderSetting) {\n records.push({\n id,\n name,\n });\n }\n });\n if (records.length !== 0) {\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ name }) => name),\n };\n }\n }\n return undefined;\n } else {\n const adminMode = appGroup === 'Admins';\n return getClientIdSchema(clientId, '子女(客戶)或機構', false, adminMode, appGroup);\n }\n },\n }, {\n key: 'defaultDeliveryStaffId',\n func: (defaultDeliveryStaffId) => {\n const clientId = cache.get('app:facilityId');\n return getDeliveryStaffIdSchema(defaultDeliveryStaffId, null, clientId, false, false, false, false, false);\n },\n },\n {\n key: 'disadvantagedTypes',\n func: () => {\n let clientId;\n if (appGroup === 'Admins') {\n clientId = clientIdInForm;\n } else {\n clientId = cache.get('app:facilityId');\n }\n\n return getCustomizeDisadvantagedSettingsSchema(clientId, false);\n },\n\n },\n\n ]}\n ref={dataFormRef}\n {...props}\n disabled={isUploading}\n >\n \n 標籤\n \n \n \n {\n Object.keys(allTags['送餐對象']).map((key)=>(\n \n tag.subcategory === key) : []}\n defaultValues={tags ? tags.items.filter(({ tag }) => tag.subcategory === key).map(({ tag }) => tag.label) : []}\n onChange={(newTags) => onChangeTags(key, newTags)}\n onUpdateOptions={() => {}}\n disabled={isLoading}\n showHelperText={false}\n />\n \n ))\n }\n \n \n 個人照片\n \n \n \n onUpdateS3Keys('personal', s3Keys)}\n type=\"personal\"\n onUploadStart={() => setIsUploading(true)}\n onUploadEnd={() => setIsUploading(false)}\n />\n \n \n 家景照片\n \n \n \n onUpdateS3Keys('home', s3Keys)}\n type=\"home\"\n onUploadStart={() => setIsUploading(true)}\n onUploadEnd={() => setIsUploading(false)}\n />\n \n \n \n \n 取消訂單中\n \n \n \n \n \n \n \n 更換所屬機構中,請勿關閉此視窗\n \n \n \n \n \n \n );\n}\n\nElderForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport EditButton from '../components/EditButton';\nimport ElderForm from './ElderForm';\nimport { useCache } from 'CacheProvider';\n\nexport default function ElderEditButton(props) {\n const { mode, item } = props;\n const { appGroup, selectedUserGroupParams } = useCache();\n\n if (appGroup === 'OrgAdmins') {\n const { organizationData } = selectedUserGroupParams;\n if (organizationData?.clients?.items) {\n if (mode === 'add') {\n if (!organizationData.clients.items.some(({ elderSetting }) => elderSetting)) {\n return null;\n }\n } else if (item) { // edit mode\n const { elderSetting } = organizationData.clients.items.find(({ clientId }) => clientId === item.clientId) || {};\n if (!elderSetting) {\n return null;\n }\n }\n } else {\n return null;\n }\n }\n\n return (\n );\n}\n\nElderEditButton.propTypes = {\n mode: PropTypes.string,\n item: PropTypes.object,\n};\n","import i18n from 'i18next';\nimport { elderPaymentMethod, elderDeactivationReason } from '@silvergatedelivery/constants';\n\nconst schema = {\n 'title': '基本資料',\n 'type': 'object',\n 'required': [\n 'status', 'clientId', 'name', 'address', 'isDisadvantaged', 'isAllowedToEnterHome',\n ],\n 'properties': {\n 'status': {\n 'type': 'string',\n 'title': '狀態',\n 'enum': ['使用中', '已停用'],\n 'default': '使用中',\n },\n 'clientId': {\n 'type': 'string',\n 'title': '子女(客戶)或機構',\n },\n 'relationshipToClient': {\n 'type': ['string', 'null'],\n 'title': '與客戶關係',\n },\n 'name': {\n 'type': 'string',\n 'title': '姓名',\n },\n 'nickname': {\n 'type': ['string', 'null'],\n 'title': '暱稱',\n },\n 'username': {\n 'type': 'string',\n 'title': '帳號',\n 'default': 'N/A',\n },\n 'phoneNumber': {\n 'type': ['string', 'null'],\n 'title': '電話號碼',\n },\n 'phoneNumber2': {\n 'type': ['string', 'null'],\n 'title': '電話號碼2',\n },\n 'phoneNumber3': {\n 'type': ['string', 'null'],\n 'title': '電話號碼3',\n },\n 'identificationCardId': {\n 'type': ['string', 'null'],\n 'title': '身分證字號',\n },\n 'birthday': {\n 'type': ['string', 'null'],\n 'title': '生日',\n 'format': 'date',\n },\n 'gender': {\n 'type': ['string', 'null'],\n 'title': '性別',\n 'enum': ['male', 'female', 'other', null],\n 'enumNames': ['男', '女', '其他', '不回答'],\n },\n 'isDisadvantaged': {\n 'type': 'number',\n 'title': '弱勢長輩(非自費戶)',\n 'enum': [1, 0],\n 'enumNames': ['是', '否'],\n 'default': 0,\n },\n 'isIndigenous': {\n 'type': ['number', 'null'],\n 'title': '原住民',\n 'enum': [1, 0],\n 'enumNames': ['是', '否'],\n 'default': 0,\n },\n 'isLivingAlone': {\n 'type': ['number', 'null'],\n 'title': '獨居',\n 'enum': [1, 0, null],\n 'enumNames': ['是', '否', '不詳'],\n 'default': null,\n },\n 'isAllowedToEnterHome': {\n 'type': 'number',\n 'title': '是否同意進入長輩家中',\n 'enum': [1, 0],\n 'enumNames': ['是', '否'],\n 'default': 0,\n },\n 'onTimeDelivery': {\n 'type': ['number', 'null'],\n 'title': '餐點需準時送達',\n 'enum': [1, null], // 會變成寫入1或移除key, 有點tricky, 但是比較容易向前相容\n 'enumNames': ['是', '否'],\n 'default': null,\n 'description': '若餐點需準時送達,大使端app時間會顯示訂單送餐時間, 否則會顯示訂單送餐時間前後半小時的時間區間',\n },\n 'dementiaQuestionnaire': {\n 'type': ['boolean', 'null'],\n 'title': '參加失智防治推廣問卷調查',\n 'enum': [null, false], // 預設沒有key是有加入活動\n 'enumNames': ['是', '否'],\n 'default': null,\n 'description': '機構須先申請加入參加失智防治推廣問卷調查',\n },\n 'disabilityLevel': {\n 'type': ['string', 'null'],\n 'title': '身障等級',\n 'enum': [null, '輕度', '中度', '重度', '極重度'],\n 'enumNames': ['無', '輕度', '中度', '重度', '極重度'],\n 'default': null,\n },\n 'cmsLevel': {\n 'type': ['string', 'null'],\n 'title': '失能等級',\n 'enum': [null, '1級', '1a級', '1b級', '2級', '3級', '4級', '5級', '6級', '7級', '8級'],\n 'enumNames': ['無', '1級', '1a級', '1b級', '2級', '3級', '4級', '5級', '6級', '7級', '8級'],\n 'default': null,\n },\n 'serviceCode': {\n 'type': ['string', 'null'],\n 'title': '服務代碼',\n 'referenceOptions': ['OT01', '脆家'],\n },\n 'linkGroupName': {\n 'type': ['string', 'null'],\n 'title': '家庭代碼(連結同戶其他送餐對象)',\n },\n 'caseNumber': {\n 'type': ['string', 'null'],\n 'title': '案號',\n },\n 'govQualifiedCount': {\n 'type': ['number', 'null'],\n 'title': '政府核定量',\n },\n 'supervisorId': {\n 'type': ['string', 'null'],\n 'title': '督導ID',\n },\n 'fixedDeliveryStaffFee': {\n 'type': ['number', 'null'],\n 'title': '固定送餐費用',\n },\n 'paymentBankIndex': {\n 'type': ['number', 'null'],\n 'title': '匯款金融機構編號',\n 'enum': [1, 2, 3],\n 'enumNames': ['1', '2', '3'],\n 'description': '收據內顯示的匯款金融機構的編號',\n 'default': 1,\n },\n 'paymentMethod': {\n 'type': ['string', 'null'],\n 'title': '收費方式',\n 'enum': elderPaymentMethod.map(({ value }) => value),\n 'enumNames': elderPaymentMethod.map(({ label }) => label),\n 'default': null,\n },\n 'defaultDeliveryStaffId': {\n 'type': ['string', 'null'],\n 'title': '預設送餐大使',\n },\n 'disadvantagedTypesHistory': {\n 'type': ['array', 'null'],\n 'title': '弱勢身份別',\n 'items': {\n 'required': [\n 'disadvantagedTypes',\n 'approvedDate',\n ],\n 'type': 'object',\n 'properties': {\n 'disadvantagedTypes': {\n 'type': 'string',\n 'title': '身份別',\n },\n 'approvedDate': {\n 'type': 'string',\n 'title': '生效日期',\n 'format': 'date',\n },\n },\n },\n 'default': [],\n },\n 'otherSocialServices': {\n 'type': ['string', 'null'],\n 'title': '其它社會資源協助',\n },\n 'lunchRepeatOn': {\n 'type': ['array', 'null'],\n 'title': '午餐送餐週期',\n 'minItems': 0,\n 'items': {\n 'type': 'integer',\n 'enum': [1, 2, 3, 4, 5, 6, 0],\n 'enumNames': ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'],\n },\n 'uniqueItems': true,\n 'default': [],\n 'description': '搭配週期性訂單的送餐週期設定使用',\n },\n 'dinnerRepeatOn': {\n 'type': ['array', 'null'],\n 'title': '晚餐送餐週期',\n 'minItems': 0,\n 'items': {\n 'type': 'integer',\n 'enum': [1, 2, 3, 4, 5, 6, 0],\n 'enumNames': ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'],\n },\n 'uniqueItems': true,\n 'default': [],\n 'description': '搭配週期性訂單的送餐週期設定使用',\n },\n 'noteForDelivery': {\n 'type': ['string', 'null'],\n 'title': `${i18n.t('送餐')}備註`,\n },\n 'noteForMeal': {\n 'type': ['string', 'null'],\n 'title': `${i18n.t('餐點')}備註`,\n },\n 'noteForHealth': {\n 'type': ['string', 'null'],\n 'title': '健康備註',\n },\n 'note': {\n 'type': ['string', 'null'],\n 'title': '其他備註',\n },\n 'emergencyContact': {\n 'title': '緊急聯絡人',\n 'type': 'object',\n },\n 'address': {\n 'title': '地址',\n 'type': 'object',\n },\n },\n 'allOf': [\n {\n 'if': {\n 'properties': {\n 'status': {\n 'const': '已停用',\n },\n },\n },\n 'then': {\n 'properties': {\n 'deactivationReason': {\n 'type': ['string', 'null'],\n 'title': '停用原因',\n 'enum': elderDeactivationReason.map(({ value }) => value),\n 'enumNames': elderDeactivationReason.map(({ label }) => label),\n 'default': null,\n },\n 'deactivationNote': {\n 'type': ['string', 'null'],\n 'title': '停用備註',\n },\n },\n 'required': [\n 'deactivationReason',\n ],\n },\n },\n ],\n};\n\nexport default schema;\n","const schema = {\n 'type': 'object',\n 'required': [\n 'name',\n ],\n 'properties': {\n 'name': {\n 'type': 'string',\n 'title': '名稱',\n },\n },\n};\n\nexport default schema;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Button from '@material-ui/core/Button';\nimport Paper from '@material-ui/core/Paper';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport IconButton from '@material-ui/core/IconButton';\nimport DoubleArrowIcon from '@material-ui/icons/DoubleArrow';\nimport CheckCircle from '@material-ui/icons/CheckCircle';\nimport RadioButtonUnchecked from '@material-ui/icons/RadioButtonUnchecked';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport { countiesDistricts, counties } from '@silvergatedelivery/constants';\nimport { getRestaurantIdSchema } from './schemas';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: 'auto',\n },\n paper: {\n width: '100%',\n height: 230,\n overflow: 'auto',\n },\n button: {\n margin: theme.spacing(0.5, 0),\n },\n rotateIcon: {\n transform: 'rotate(180deg)',\n },\n}));\n\nfunction not(arrayA, arrayB) {\n return arrayA.filter((a) => !arrayB.some((b) => a.id === b.id));\n}\n\nfunction intersection(arrayA, arrayB) {\n return arrayA.filter((a) => arrayB.some((b) => a.id === b.id));\n}\n\nconst getDistrictsInCounty = (inCounty) => countiesDistricts.filter(({ county }) => county === inCounty)\n .reduce((all, { districts }) => {\n const items = districts.map((district) => district);\n return [...all, ...items];\n }, []);\n\nexport default function RestaurantSelection({ restaurants: inRestaurants = [], onChange, description = '' }) {\n const classes = useStyles();\n const [checked, setChecked] = useState([]);\n const [left, setLeft] = useState([]);\n const [right, setRight] = useState([]);\n const [activeCounty, setActiveCounty] = useState('臺北市');\n const [districts, setDistricts] = useState(getDistrictsInCounty('臺北市'));\n const [activeDistrict, setActiveDistrict] = useState(getDistrictsInCounty('臺北市')[0]);\n const [allRestaurants, setAllRestaurants] = useState([]);\n const [publicRestaurantIds, setPublicRestaurantIds] = useState([]);\n\n const leftChecked = intersection(checked, left);\n const rightChecked = intersection(checked, right);\n\n useEffect(() => {\n (async () => {\n const allRestaurants = (await getRestaurantIdSchema(null, null, null, true)).map(({ id, label, address }) => (\n { id, label, address }));\n const restaurantsSelected = inRestaurants.map(({ id: inId }) => {\n const restaurant = allRestaurants.find(({ id }) => id === inId);\n return { ...restaurant };\n });\n const publicRestaurantIds = inRestaurants.filter(({ isPublic }) => isPublic).map(({ id }) => id);\n let activeCounty = '臺北市';\n let activeDistrict = getDistrictsInCounty(activeCounty)[0];\n if (restaurantsSelected.length !== 0) {\n setRight(restaurantsSelected);\n activeCounty = restaurantsSelected[0].address.county;\n activeDistrict = restaurantsSelected[0].address.district;\n } else {\n setRight([]);\n }\n setPublicRestaurantIds(publicRestaurantIds);\n setAllRestaurants(allRestaurants);\n setActiveCounty(activeCounty);\n setActiveDistrict(activeDistrict);\n setDistricts(getDistrictsInCounty(activeCounty));\n const districtRestaurants = allRestaurants.filter(({ address }) => address.county === activeCounty && address.district === activeDistrict);\n setLeft(not(districtRestaurants, restaurantsSelected));\n })();\n }, []);\n\n const onUpdateLocation = (county, district) => {\n const districtRestaurants = allRestaurants.filter(({ address }) => address.county === county && address.district === district);\n setLeft(not(districtRestaurants, right));\n };\n\n const handleToggleRestaurant = (value) => () => {\n const currentIndex = checked.indexOf(value);\n const newChecked = [...checked];\n\n if (currentIndex === -1) {\n newChecked.push(value);\n } else {\n newChecked.splice(currentIndex, 1);\n }\n\n setChecked(newChecked);\n };\n\n const getOutRestaurants = (newRight, newPublicRestaurantIds=publicRestaurantIds) => newRight.map(({ id }) => ({\n id,\n isPublic: newPublicRestaurantIds.includes(id),\n }));\n\n const handleToggleIsPublic = (event, { id }) => {\n event.stopPropagation();\n const currentIndex = publicRestaurantIds.indexOf(id);\n const newPublicRestaurantIds = [...publicRestaurantIds];\n\n if (currentIndex === -1) {\n newPublicRestaurantIds.push(id);\n } else {\n newPublicRestaurantIds.splice(currentIndex, 1);\n }\n setPublicRestaurantIds(newPublicRestaurantIds);\n onChange(getOutRestaurants(right, newPublicRestaurantIds));\n };\n\n const handleAllRight = () => {\n const newRight = right.concat(left);\n setRight(newRight);\n setLeft([]);\n setChecked([]);\n onChange(getOutRestaurants(newRight));\n };\n\n const handleCheckedRight = () => {\n const newRight = right.concat(leftChecked);\n setRight(newRight);\n setLeft(not(left, leftChecked));\n setChecked([]);\n onChange(getOutRestaurants(newRight));\n };\n\n const handleCheckedLeft = () => {\n const newLeft = left.concat(rightChecked.filter(\n ({ address: { county, district } }) => county === activeCounty && district === activeDistrict));\n setLeft(newLeft);\n const newRight = not(right, rightChecked);\n setRight(newRight);\n setChecked([]);\n onChange(getOutRestaurants(newRight));\n };\n\n const handleAllLeft = () => {\n const newLeft = left.concat(right.filter(\n ({ address: { county, district } }) => county === activeCounty && district === activeDistrict));\n setLeft(newLeft);\n setRight([]);\n setChecked([]);\n onChange([]);\n };\n\n const customList = (items, showPublic = false) => {\n return (\n \n \n {items.sort((a, b) => a.label > b.label)\n .map((value) => {\n const display = value.label;\n const labelId = `transfer-list-item-${display}-label`;\n const isPublic = publicRestaurantIds.some((id) => id === value.id);\n\n return (\n \n \n \n \n \n \n \n \n {showPublic &&\n \n handleToggleIsPublic(event, value)}>\n {isPublic ? : }\n \n handleToggleIsPublic(event, value)}/>\n }\n \n \n );\n })}\n \n \n \n );\n };\n\n return (\n \n \n \n {\n if (newItem) {\n setActiveCounty(newItem);\n const districtsInCounty = getDistrictsInCounty(newItem);\n setDistricts(districtsInCounty);\n setActiveDistrict(districtsInCounty[0]);\n onUpdateLocation(newItem, districtsInCounty[0]);\n }\n }}\n renderInput={(params) => }\n />\n \n \n {\n if (newItem) {\n setActiveDistrict(newItem);\n onUpdateLocation(activeCounty, newItem);\n }\n }}\n renderInput={(params) => }\n />\n \n \n {description !== '' &&\n \n \n {description}\n \n }\n {customList(left)}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {customList(right, true)}\n \n );\n}\n\nRestaurantSelection.propTypes = {\n restaurants: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n description: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Button from '@material-ui/core/Button';\nimport Paper from '@material-ui/core/Paper';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport DoubleArrowIcon from '@material-ui/icons/DoubleArrow';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport Typography from '@material-ui/core/Typography';\nimport { counties } from '@silvergatedelivery/constants';\nimport { getDeliveryStaffIdSchema } from './schemas';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: 'auto',\n },\n paper: {\n width: '100%',\n height: 230,\n overflow: 'auto',\n },\n button: {\n margin: theme.spacing(0.5, 0),\n },\n rotateIcon: {\n transform: 'rotate(180deg)',\n },\n}));\n\nfunction not(arrayA, arrayB) {\n return arrayA.filter((a) => !arrayB.some((b) => a.id === b.id));\n}\n\nfunction intersection(arrayA, arrayB) {\n return arrayA.filter((a) => arrayB.some((b) => a.id === b.id));\n}\n\nexport default function DeliveryStaffSelection({ deliveryStaffs: inDeliveryStaffs = [], onChange, description = '' }) {\n const classes = useStyles();\n const [checked, setChecked] = useState([]);\n const [left, setLeft] = useState([]);\n const [right, setRight] = useState([]);\n const [activeCounty, setActiveCounty] = useState('臺北市');\n const [allDeliveryStaffs, setAllDeliveryStaffs] = useState([]);\n\n const leftChecked = intersection(checked, left);\n const rightChecked = intersection(checked, right);\n\n useEffect(() => {\n (async () => {\n const allDeliveryStaffs = (await getDeliveryStaffIdSchema(null, null, null, false, false, true))\n .map(({ id, name, county }) => ({ id, name, county }));\n const deliveryStaffsSelected = inDeliveryStaffs.map((id) => {\n const deliveryStaff = allDeliveryStaffs.find((deliveryStaff) => deliveryStaff.id === id);\n return { ...deliveryStaff };\n });\n let activeCounty = '臺北市';\n if (deliveryStaffsSelected.length !== 0) {\n setRight(deliveryStaffsSelected);\n activeCounty = deliveryStaffsSelected[0].county;\n } else {\n setRight([]);\n }\n setAllDeliveryStaffs(allDeliveryStaffs);\n setActiveCounty(activeCounty);\n const countyDeliveryStaffs = allDeliveryStaffs.filter(({ county }) => county === activeCounty);\n setLeft(not(countyDeliveryStaffs, deliveryStaffsSelected));\n })();\n }, []);\n\n const onUpdateLocation = (county) => {\n const countyDeliveryStaffs = allDeliveryStaffs.filter((deliveryStaff) => deliveryStaff.county === county);\n setLeft(not(countyDeliveryStaffs, right));\n };\n\n const handleToggleDeliveryStaff = (value) => () => {\n const currentIndex = checked.indexOf(value);\n const newChecked = [...checked];\n\n if (currentIndex === -1) {\n newChecked.push(value);\n } else {\n newChecked.splice(currentIndex, 1);\n }\n\n setChecked(newChecked);\n };\n\n const getOutDeliveryStaffs = (newRight) => newRight.map(({ id }) => id);\n\n const handleAllRight = () => {\n const newRight = right.concat(left);\n setRight(newRight);\n setLeft([]);\n setChecked([]);\n onChange(getOutDeliveryStaffs(newRight));\n };\n\n const handleCheckedRight = () => {\n const newRight = right.concat(leftChecked);\n setRight(newRight);\n setLeft(not(left, leftChecked));\n setChecked([]);\n onChange(getOutDeliveryStaffs(newRight));\n };\n\n const handleCheckedLeft = () => {\n const newLeft = left.concat(rightChecked.filter(({ county }) => county === activeCounty));\n setLeft(newLeft);\n const newRight = not(right, rightChecked);\n setRight(newRight);\n setChecked([]);\n onChange(getOutDeliveryStaffs(newRight));\n };\n\n const handleAllLeft = () => {\n const newLeft = left.concat(right.filter(({ county }) => county === activeCounty));\n setLeft(newLeft);\n setRight([]);\n setChecked([]);\n onChange([]);\n };\n\n const customList = (items) => {\n return (\n \n \n {items.sort((a, b) => a.label > b.label)\n .map((value) => {\n const display = value.name;\n const labelId = `transfer-list-item-${display}-label`;\n\n return (\n \n \n \n \n \n \n );\n })}\n \n \n \n );\n };\n\n return (\n \n \n \n {\n if (newItem) {\n setActiveCounty(newItem);\n onUpdateLocation(newItem);\n }\n }}\n renderInput={(params) => }\n />\n \n \n {description !== '' &&\n \n \n {description}\n \n }\n {customList(left)}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {customList(right, true)}\n \n );\n}\n\nDeliveryStaffSelection.propTypes = {\n deliveryStaffs: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n description: PropTypes.string,\n};\n","import React, { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { resetFormCache } from 'forms/formCache';\nimport { request } from 'utilities/graph';\nimport { getClientsByShortId } from 'graphql/queries';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport Grid from '@material-ui/core/Grid';\nimport RestaurantSelection from '../RestaurantSelection';\nimport DeliveryStaffSelection from '../DeliveryStaffSelection';\nimport { createClient, updateClient, createFacilitySettings } from 'graphql/mutations';\nimport moment from 'moment';\nimport cache from 'utilities/cache';\nimport uiSchema from './uiSchema';\n\nexport default function FacilityClientForm({ formData: inFormData, ...props }) {\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n const [orderableRestaurants, setOrderableRestaurants] = useState([]);\n const [assignableDeliveryStaffs, setAssignableDeliveryStaffs] = useState([]);\n\n useEffect(() => {\n if (inFormData?.orderableRestaurants) {\n setOrderableRestaurants(inFormData.orderableRestaurants);\n }\n if (inFormData?.assignableDeliveryStaffs) {\n setAssignableDeliveryStaffs(inFormData.assignableDeliveryStaffs);\n }\n }, [inFormData]);\n\n const getClientShortId = async () => {\n let shortId;\n while (!shortId) {\n const tempShortId = (Math.floor(Math.random() * 900000) + 100000).toString();\n const { data: { getClientsByShortId: { items } } } = await request(getClientsByShortId, { shortId: tempShortId });\n if (items.length === 0) {\n shortId = tempShortId;\n }\n }\n return shortId;\n };\n\n const createFunc = async (data) => {\n data.county = data.county || data.address.county;\n data.shortId = await getClientShortId();\n data.orderableRestaurants = orderableRestaurants;\n data.assignableDeliveryStaffs = assignableDeliveryStaffs;\n const now = moment().toISOString();\n const username = cache.get('app:username');\n const { data: { createFacilitySettings: facilitySettings } } = await request(createFacilitySettings, { input: {\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n } });\n data.facilitySettingsId = facilitySettings.id;\n // backward compatibility\n data.useDedicatedDeliveryStaffs = data.featureConfiguration?.useDedicatedDeliveryStaffs || false;\n await request(createClient, { input: data });\n resetFormCache('allFacilities');\n resetFormCache('allClients');\n };\n\n const updateFunc = async (data) => {\n if (!data.shortId) {\n data.shortId = await getClientShortId();\n }\n data.county = data.county || data.address.county;\n data.orderableRestaurants = orderableRestaurants;\n data.assignableDeliveryStaffs = assignableDeliveryStaffs;\n if (!data.featureConfiguration) {\n data.featureConfiguration = {\n skipRegisterSteps: [],\n skipDocumentsUpload: false,\n hideSToken: false,\n supportNumber: '',\n useDedicatedDeliveryStaffs: false,\n dementiaQuestionnaire: false,\n reportTypes: [],\n };\n }\n // backward compatibility\n data.useDedicatedDeliveryStaffs = data.featureConfiguration?.useDedicatedDeliveryStaffs || false;\n\n const newData = JSON.parse(JSON.stringify(data));\n delete newData.facilitySettings;\n\n await request(updateClient, { input: newData });\n resetFormCache('allFacilities');\n resetFormCache('allClients');\n };\n\n return (\n \n \n 合作餐廳\n \n \n \n \n \n \n 合作送餐大使\n \n \n \n \n \n \n );\n}\n\nFacilityClientForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport EditButton from '../components/EditButton';\nimport FacilityClientForm from './FacilityClientForm';\nimport FacilitySettingsForm from '../FacilitySettingsForm/FacilitySettingsForm';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport { useCache } from 'CacheProvider';\n\nexport default function FacilityClientEditButton({ ...props }) {\n const { mode } = props;\n const { appGroup } = useCache();\n const adminMode = appGroup === 'Admins';\n\n if (mode === 'add') {\n return ;\n }\n\n return (\n
\n {adminMode &&\n }\n \n
\n );\n}\n\n\nFacilityClientEditButton.propTypes = {\n mode: PropTypes.string,\n};\n","import i18n from 'i18next';\nimport { reportTypes, supportedPartners } from '@silvergatedelivery/constants';\n\nconst schema = {\n 'title': '基本資料',\n 'type': 'object',\n 'required': [\n 'isActive', 'type', 'usersLimit', 'eldersLimit',\n 'name', 'phoneNumber', 'email', 'county', 'translation',\n ],\n 'definitions': {\n 'registerSteps': {\n 'enumNames': [\n '輸入地址',\n '輸入相關經驗和自我介紹',\n '輸入緊急聯絡人',\n '輸入銀行帳號',\n ],\n 'enum': ['Address', 'Introduction', 'EmergencyContact', 'BankAccount'],\n },\n 'reportTypes': {\n 'enumNames': reportTypes.map(({ label }) => label),\n 'enum': reportTypes.map(({ value }) => value),\n },\n 'supportedPartners': {\n 'enumNames': supportedPartners.map(({ label }) => label),\n 'enum': supportedPartners.map(({ value }) => value),\n },\n },\n 'properties': {\n 'isActive': {\n 'type': 'number',\n 'title': '狀態',\n 'enum': [0, 1, 2],\n 'enumNames': ['待審核', '使用中', '已停用'],\n 'default': 1,\n },\n 'type': {\n 'type': 'string',\n 'title': '類別',\n 'enum': ['facility'],\n 'enumNames': ['機構'],\n 'default': 'facility',\n },\n 'county': {\n 'type': 'string',\n 'title': '所在縣市',\n },\n 'translation': {\n 'type': ['string', 'null'],\n 'title': '介面用詞',\n 'enum': ['silvergate', 'medical'],\n 'enumNames': ['長照送餐', '到府醫療'],\n 'default': 'silvergate',\n },\n 'usersLimit': {\n 'type': 'number',\n 'title': '可登入帳號上限',\n 'default': 1,\n },\n 'eldersLimit': {\n 'type': 'number',\n 'title': `可擁有${i18n.t('送餐對象')}上限`,\n 'default': 1,\n },\n 'name': {\n 'type': 'string',\n 'title': '姓名/名稱',\n },\n 'username': {\n 'type': ['string', 'null'],\n 'title': '登入帳號',\n },\n 'contact': {\n 'type': ['string', 'null'],\n 'title': '聯絡人姓名',\n },\n 'email': {\n 'type': 'string',\n 'title': 'Email',\n 'format': 'email',\n },\n 'phoneNumber': {\n 'type': 'string',\n 'title': '電話號碼',\n },\n 'phoneNumber2': {\n 'type': ['string', 'null'],\n 'title': '電話號碼2',\n },\n 'phoneNumber3': {\n 'type': ['string', 'null'],\n 'title': '電話號碼3',\n },\n 'basicFee': {\n 'type': ['number', 'null'],\n 'title': `基本里程${i18n.t('送餐費用')}`,\n 'default': 50,\n },\n 'basicDistanceInKM': {\n 'type': ['number', 'null'],\n 'title': '基本里程公里數',\n 'default': 5,\n },\n 'extraFeeInKM': {\n 'type': ['number', 'null'],\n 'title': `額外里程每公里${i18n.t('送餐費用')}`,\n 'default': 5,\n },\n 'extraFee': {\n 'type': ['number', 'null'],\n 'title': '運費加成',\n 'default': 0,\n },\n 'platformFee': {\n 'type': ['number', 'null'],\n 'title': '平台費',\n 'default': 0,\n },\n 'featureConfiguration': {\n 'required': [],\n 'type': ['object', 'null'],\n 'title': '',\n 'properties': {\n 'skipDocumentsUpload': {\n 'type': 'boolean',\n 'title': `${i18n.t('送餐大使')}註冊時不需要上傳相關文件`,\n 'default': false,\n },\n 'hideSToken': {\n 'type': 'boolean',\n 'title': `${i18n.t('送餐大使')}APP不顯示S Token資訊`,\n 'default': false,\n },\n 'useDedicatedDeliveryStaffs': {\n 'type': 'boolean',\n 'title': `限制該機構所屬的${i18n.t('送餐大使')}只能點選同機構的訂單`,\n 'description': `該機構的訂單也將只能由所屬之${i18n.t('送餐大使')}所承接`,\n 'default': false,\n },\n 'dementiaQuestionnaire': {\n 'type': 'boolean',\n 'title': '參加失智防治推廣問卷調查',\n 'default': false,\n },\n 'skipRegisterSteps': {\n 'type': 'array',\n 'uniqueItems': true,\n 'title': `${i18n.t('送餐大使')}註冊時省略過下列註冊步驟`,\n 'items': { '$ref': '#/definitions/registerSteps' },\n 'default': [],\n },\n 'supportNumber': {\n 'type': ['string', 'null'],\n 'title': `客服電話號碼`,\n 'default': '',\n },\n 'reportTypes': {\n 'type': 'array',\n 'uniqueItems': true,\n 'title': '報表種類',\n 'items': { '$ref': '#/definitions/reportTypes' },\n 'default': [],\n },\n 'supportedPartners': {\n 'type': 'array',\n 'uniqueItems': true,\n 'title': '第三方送餐',\n 'items': { '$ref': '#/definitions/supportedPartners' },\n 'default': [],\n },\n 'customizeDisadvantagedSettings': {\n 'type': ['array', 'null'],\n 'title': '弱勢身份別',\n 'items': {\n 'type': 'string',\n 'default': '',\n },\n 'default': [],\n },\n },\n },\n 'address': {\n 'title': '地址',\n 'type': 'object',\n },\n },\n};\n\nexport default schema;\n","import React, { useMemo, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { updateFacilitySettings, createFacilitySettings, updateClient } from 'graphql/mutations';\nimport ImageGalleryUploader from 'components/ImageGalleryUploader';\nimport { useCache } from 'CacheProvider';\nimport moment from 'moment-timezone';\nimport cache from 'utilities/cache';\nimport uiSchema from './uiSchema';\nimport { getCustomizeDisadvantagedSettingsSchema } from 'forms/schemas';\n\nexport default function FacilitySettingsForm({ formData: inFormData, ...props }) {\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n const [currentImageLogoS3Keys, setCurrentImageLogoS3Keys] = useState([]);\n const [currentImageCompanyStampS3Keys, setCurrentImageCompanyStampS3Keys] = useState([]);\n const [currentImageChairmanStampS3Keys, setCurrentImageChairmanStampS3Keys] = useState([]);\n const [currentImageAccountantStampS3Keys, setCurrentImageAccountantStampS3Keys] = useState([]);\n const [currentImageHandlerStampS3Keys, setCurrentImageHandlerStampS3Keys] = useState([]);\n const [newImageLogoS3Keys, setNewImageLogoS3Keys] = useState([]);\n const [newImageCompanyStampS3Keys, setNewImageCompanyStampS3Keys] = useState([]);\n const [newImageChairmanStampS3Keys, setNewImageChairmanStampS3Keys] = useState([]);\n const [newImageAccountantStampS3Keys, setNewImageAccountantStampS3Keys] = useState([]);\n const [newImageHandlerStampS3Keys, setNewImageHandlerStampS3Keys] = useState([]);\n const { appGroup, setLogoS3Keys, selectedUserGroupParams, setSelectedUserGroupParams } = useCache();\n const [formData, setFormData] = useState();\n const facilityMode = appGroup === 'FacilityAdmins';\n\n useEffect(() => {\n if (inFormData?.facilitySettings?.logoS3Keys && inFormData.facilitySettings.logoS3Keys[0]) {\n setCurrentImageLogoS3Keys(inFormData.facilitySettings.logoS3Keys);\n setNewImageLogoS3Keys(inFormData.facilitySettings.logoS3Keys);\n }\n if (inFormData?.facilitySettings?.companyStampS3Keys && inFormData.facilitySettings.companyStampS3Keys[0]) {\n setCurrentImageCompanyStampS3Keys(inFormData.facilitySettings.companyStampS3Keys);\n setNewImageCompanyStampS3Keys(inFormData.facilitySettings.companyStampS3Keys);\n }\n if (inFormData?.facilitySettings?.chairmanStampS3Keys && inFormData.facilitySettings.chairmanStampS3Keys[0]) {\n setCurrentImageChairmanStampS3Keys(inFormData.facilitySettings.chairmanStampS3Keys);\n setNewImageChairmanStampS3Keys(inFormData.facilitySettings.chairmanStampS3Keys);\n }\n if (inFormData?.facilitySettings?.accountantStampS3Keys && inFormData.facilitySettings.accountantStampS3Keys[0]) {\n setCurrentImageAccountantStampS3Keys(inFormData.facilitySettings.accountantStampS3Keys);\n setNewImageAccountantStampS3Keys(inFormData.facilitySettings.accountantStampS3Keys);\n }\n if (inFormData?.facilitySettings?.handlerStampS3Keys && inFormData.facilitySettings.handlerStampS3Keys[0]) {\n setCurrentImageHandlerStampS3Keys(inFormData.facilitySettings.handlerStampS3Keys);\n setNewImageHandlerStampS3Keys(inFormData.facilitySettings.handlerStampS3Keys);\n }\n if (inFormData) {\n if (inFormData.facilitySettings) {\n setFormData(inFormData);\n } else {\n setFormData({\n ...inFormData,\n facilitySettings: { // 避免rjsf跳出格式檢查錯誤\n lunchStartTime: null,\n lunchEndTime: null,\n dinnerStartTime: null,\n dinnerEndTime: null,\n deliverySetting: null,\n receiptInfo: null,\n },\n });\n }\n }\n }, [inFormData]);\n\n const updateFunc = async (data) => {\n data.facilitySettings.logoS3Keys = newImageLogoS3Keys;\n data.facilitySettings.companyStampS3Keys = newImageCompanyStampS3Keys;\n data.facilitySettings.chairmanStampS3Keys = newImageChairmanStampS3Keys;\n data.facilitySettings.accountantStampS3Keys = newImageAccountantStampS3Keys;\n data.facilitySettings.handlerStampS3Keys = newImageHandlerStampS3Keys;\n if (facilityMode) {\n setLogoS3Keys([...newImageLogoS3Keys]);\n }\n if (data.facilitySettings.id) {\n await request(updateFacilitySettings, { input: data.facilitySettings });\n } else {\n const now = moment().toISOString();\n const userName = cache.get('app:userName');\n Object.assign(data.facilitySettings, {\n createdAt: now,\n createdBy: userName,\n updatedAt: now,\n updatedBy: userName,\n });\n const { data: { createFacilitySettings: { id: facilitySettingsId } } } =\n await request(createFacilitySettings, { input: data.facilitySettings });\n data.facilitySettings.id = facilitySettingsId;\n await request(updateClient, { input: {\n id: data.id,\n type: data.type,\n isActive: data.isActive,\n county: data.county,\n name: data.name,\n address: data.address,\n email: data.email,\n usersLimit: data.usersLimit,\n eldersLimit: data.eldersLimit,\n createdAt: data.createdAt,\n createdBy: data.createdBy,\n updatedAt: now,\n updatedBy: userName,\n facilitySettingsId: facilitySettingsId,\n } });\n }\n if (facilityMode) {\n selectedUserGroupParams.clientData.facilitySettings = data.facilitySettings;\n setSelectedUserGroupParams(selectedUserGroupParams);\n }\n };\n\n if (!formData) {\n return <>;\n }\n\n return (\n {}}\n updateFunc={updateFunc}\n formData={formData}\n dirty={true}\n extMappings={[{\n key: 'disadvantagedType',\n func: () => {\n let clientId;\n if (appGroup === 'Admins') {\n clientId = inFormData.id;\n } else {\n clientId = cache.get('app:facilityId');\n }\n return getCustomizeDisadvantagedSettingsSchema(clientId, false);\n },\n }]}\n {...props}\n >\n \n 商標圖示\n \n \n 顯示在左側功能清單上方\n \n \n \n \n 收據公司章\n \n \n 顯示在收據,建議尺寸 150 x 150\n \n \n \n \n 收據主管章\n \n \n 顯示在收據,建議尺寸 50 x 50\n \n \n \n \n 收據會計章\n \n \n 顯示在收據,建議尺寸 50 x 50\n \n \n \n \n 收據經手人章\n \n \n 顯示在收據,建議尺寸 50 x 50\n \n \n \n \n );\n}\n\nFacilitySettingsForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","const schema = {\n 'type': 'object',\n 'required': [],\n 'properties': {\n 'facilitySettings': {\n 'required': [],\n 'type': ['object'],\n 'title': '機構設定',\n 'properties': {\n 'dba': {\n 'type': ['string', 'null'],\n 'title': '別名/登記名稱',\n },\n 'govQualifiedPrice': {\n 'type': ['number', 'null'],\n 'title': '政府核定單價',\n },\n 'lunchStartTime': {\n 'type': ['string', 'null'],\n 'title': '午餐服務開始時間',\n 'format': 'time',\n 'default': '10:00',\n 'description': '套用於衛福部支審系統報表',\n },\n 'lunchEndTime': {\n 'type': ['string', 'null'],\n 'title': '午餐服務結束時間',\n 'format': 'time',\n 'default': '12:00',\n 'description': '套用於衛福部支審系統報表',\n },\n 'dinnerStartTime': {\n 'type': ['string', 'null'],\n 'title': '晚餐服務開始時間',\n 'format': 'time',\n 'default': '16:00',\n 'description': '套用於衛福部支審系統報表',\n },\n 'dinnerEndTime': {\n 'type': ['string', 'null'],\n 'title': '晚餐服務結束時間',\n 'format': 'time',\n 'default': '18:00',\n 'description': '套用於衛福部支審系統報表',\n },\n 'deliverySetting': {\n 'required': [],\n 'type': ['object', 'null'],\n 'title': '送餐設定',\n 'properties': {\n 'canStartDeliveryBefore': {\n 'type': ['number', 'null'],\n 'title': '提早送餐',\n 'default': 2.5,\n 'description': '送餐大使可以提早幾個小時開始送餐',\n },\n 'canStartDeliveryAfter': {\n 'type': ['number', 'null'],\n 'title': '延後送餐',\n 'default': 2.5,\n 'description': '送餐大使可以延後幾個小時開始送餐',\n },\n 'canCompleteOrderAfter': {\n 'type': ['number', 'null'],\n 'title': '完成日誌',\n 'default': 24,\n 'description': '送餐大使送達餐點後幾個小時內可以完成日誌',\n },\n 'canModifyDiaryAfter': {\n 'type': ['number', 'null'],\n 'title': '修改日誌',\n 'default': 9,\n 'description': '送餐大使完成日誌後幾個小時內可以修改日誌',\n },\n },\n },\n 'receiptInfo': {\n 'required': [],\n 'type': ['object', 'null'],\n 'title': '收據資訊',\n 'properties': {\n 'receiptType': {\n 'type': ['string', 'null'],\n 'title': `收據格式`,\n 'enum': ['duplicate', 'triplicate'],\n 'enumNames': ['一式二聯', '一式三聯'],\n 'default': 'triplicate',\n },\n 'taxIdNumber': {\n 'type': ['string', 'null'],\n 'title': `統一編號`,\n 'default': '',\n },\n 'faxNumber': {\n 'type': ['string', 'null'],\n 'title': `傳真`,\n 'default': '',\n },\n 'bankName': {\n 'type': ['string', 'null'],\n 'title': `銀行名稱1`,\n 'default': '',\n },\n 'accountNumber': {\n 'type': ['string', 'null'],\n 'title': `匯款帳號1`,\n 'default': '',\n },\n 'accountName': {\n 'type': ['string', 'null'],\n 'title': `帳戶名1`,\n 'default': '',\n },\n 'bankName2': {\n 'type': ['string', 'null'],\n 'title': `銀行名稱2`,\n 'default': '',\n },\n 'accountNumber2': {\n 'type': ['string', 'null'],\n 'title': `匯款帳號2`,\n 'default': '',\n },\n 'accountName2': {\n 'type': ['string', 'null'],\n 'title': `帳戶名2`,\n 'default': '',\n },\n 'bankName3': {\n 'type': ['string', 'null'],\n 'title': `銀行名稱3`,\n 'default': '',\n },\n 'accountNumber3': {\n 'type': ['string', 'null'],\n 'title': `匯款帳號3`,\n 'default': '',\n },\n 'accountName3': {\n 'type': ['string', 'null'],\n 'title': `帳戶名3`,\n 'default': '',\n },\n 'chairmanName': {\n 'type': ['string', 'null'],\n 'title': `主管姓名`,\n 'default': '',\n 'description': '若有收據主管章,則不顯示主管姓名',\n },\n 'accountantName': {\n 'type': ['string', 'null'],\n 'title': `會計姓名`,\n 'default': '',\n 'description': '若有收據會計章,則不顯示會計姓名',\n },\n 'handlerName': {\n 'type': ['string', 'null'],\n 'title': `經手人姓名`,\n 'default': '',\n 'description': '若有收據經手人章,則不顯示經手人姓名',\n },\n 'managerTitle': {\n 'type': ['string', 'null'],\n 'title': `主管職稱`,\n 'default': '',\n 'description': '收據上用印主管職稱',\n },\n 'reverseCopyType': {\n 'type': ['boolean', 'null'],\n 'title': '第一聯為個案收執聯',\n 'default': false,\n },\n 'oneCopyOneSheet': {\n 'type': ['boolean', 'null'],\n 'title': '列印時一聯印一張',\n 'default': false,\n },\n 'note': {\n 'type': ['string', 'null'],\n 'title': `備註`,\n 'default': '',\n },\n },\n },\n 'receiptSettings': {\n 'required': [],\n 'type': ['object', 'null'],\n 'title': '收據費用設定(弱勢長輩)',\n 'properties': {\n 'originalPrice': {\n 'type': ['number', 'null'],\n 'title': '原價',\n },\n 'copaymentSettings': {\n 'type': ['array', 'null'],\n 'title': '部分負擔設定',\n 'description': '',\n 'items': {\n 'required': [\n 'disadvantagedType',\n 'disadvantagedLabel',\n 'copayment',\n ],\n 'type': 'object',\n 'properties': {\n 'disadvantagedType': {\n 'type': 'string',\n 'title': '福利身份別設定',\n 'description': '需同送餐對象的弱勢身份別設定,例如:低收',\n },\n 'disadvantagedLabel': {\n 'type': 'string',\n 'title': '福利身份別描述',\n 'description': '顯示於收據的福利身份別欄位,例如:低收(全額補助100%)',\n },\n 'copayment': {\n 'type': 'number',\n 'title': '部分負擔',\n 'default': 0,\n },\n },\n },\n 'default': [],\n },\n },\n },\n },\n },\n },\n};\n\nexport default schema;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { resetFormCache } from 'forms/formCache';\nimport { request } from 'utilities/graph';\nimport { getClientsByShortId } from 'graphql/queries';\nimport { createClient, updateClient } from 'graphql/mutations';\nimport uiSchema from './uiSchema';\n\nexport default function IndividualClientForm({ ...props }) {\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n const createFunc = async (data) => {\n data.county = data.county || data.address.county;\n let shortId;\n while (!shortId) {\n const tempShortId = (Math.floor(Math.random() * 900000) + 100000).toString();\n const { data: { getClientsByShortId: { items } } } = await request(getClientsByShortId, { shortId: tempShortId });\n if (items.length === 0) {\n shortId = tempShortId;\n }\n }\n data.shortId = shortId;\n // backward compatibility\n data.useDedicatedDeliveryStaffs = data.featureConfiguration?.useDedicatedDeliveryStaffs || false;\n await request(createClient, { input: data });\n resetFormCache('allClients');\n };\n\n const updateFunc = async (data) => {\n data.county = data.county || data.address.county;\n if (!data.featureConfiguration) {\n data.featureConfiguration = {\n skipRegisterSteps: [],\n skipDocumentsUpload: false,\n hideSToken: false,\n supportNumber: '',\n useDedicatedDeliveryStaffs: false,\n dementiaQuestionnaire: false,\n reportTypes: [],\n };\n }\n // backward compatibility\n data.useDedicatedDeliveryStaffs = data.featureConfiguration?.useDedicatedDeliveryStaffs || false;\n\n const newData = JSON.parse(JSON.stringify(data));\n delete newData.facilitySettings;\n\n await request(updateClient, { input: newData });\n resetFormCache('allClients');\n };\n\n return (\n \n );\n}\n\nIndividualClientForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport IndividualClientForm from './IndividualClientForm';\n\nexport default function IndividualClientEditButton({ ...props }) {\n return (\n );\n}\n","import i18n from 'i18next';\n\nconst schema = {\n 'title': '基本資料',\n 'type': 'object',\n 'required': [\n 'isActive', 'type', 'usersLimit', 'eldersLimit',\n 'name', 'phoneNumber', 'email', 'county', 'translation',\n ],\n 'properties': {\n 'isActive': {\n 'type': 'number',\n 'title': '狀態',\n 'enum': [0, 1, 2],\n 'enumNames': ['待審核', '使用中', '已停用'],\n 'default': 1,\n },\n 'type': {\n 'type': 'string',\n 'title': '類別',\n 'enum': ['individual'],\n 'enumNames': ['個人'],\n 'default': 'individual',\n },\n 'county': {\n 'type': 'string',\n 'title': '所在縣市',\n },\n 'name': {\n 'type': 'string',\n 'title': '姓名/名稱',\n },\n 'username': {\n 'type': ['string', 'null'],\n 'title': '登入帳號',\n },\n 'translation': {\n 'type': ['string', 'null'],\n 'title': '介面用詞',\n 'enum': ['silvergate', 'medical'],\n 'enumNames': ['長照送餐', '到府醫療'],\n 'default': 'silvergate',\n },\n 'phoneNumber': {\n 'type': 'string',\n 'title': '電話號碼',\n },\n 'phoneNumber2': {\n 'type': ['string', 'null'],\n 'title': '電話號碼2',\n },\n 'phoneNumber3': {\n 'type': ['string', 'null'],\n 'title': '電話號碼3',\n },\n 'email': {\n 'type': 'string',\n 'title': 'Email',\n 'format': 'email',\n },\n 'gender': {\n 'type': ['string', 'null'],\n 'title': '性別',\n 'enum': ['male', 'female', 'other', null],\n 'enumNames': ['男', '女', '其他', '不回答'],\n },\n 'usersLimit': {\n 'type': 'number',\n 'title': '可登入帳號上限',\n 'default': 1,\n },\n 'eldersLimit': {\n 'type': 'number',\n 'title': `可擁有${i18n.t('送餐對象')}上限`,\n 'default': 1,\n },\n 'birthday': {\n 'type': ['string', 'null'],\n 'title': '生日',\n 'format': 'date',\n },\n 'ageGroup': {\n 'type': ['string', 'null'],\n 'title': '年齡範圍',\n 'enum': ['19-24', '25-30', '31-40', '41-50', '51-60', '61-64', '65+', null],\n 'enumNames': ['19-24', '25-30', '31-40', '41-50', '51-60', '61-64', '65+', '不回答'],\n },\n 'jobOccupation': {\n 'type': ['string', 'null'],\n 'title': '職稱',\n },\n 'howDoYouKnowUs': {\n 'type': ['string', 'null'],\n 'title': '如何得知銀色大門?',\n },\n 'address': {\n 'title': '地址',\n 'type': 'object',\n },\n },\n};\n\nexport default schema;\n","const schema = {\n 'title': '基本資料',\n 'type': 'object',\n 'required': [\n 'name',\n ],\n 'properties': {\n 'name': {\n 'type': 'string',\n 'title': '名稱',\n },\n 'description': {\n 'type': ['string', 'null'],\n 'title': '描述',\n },\n 'clients': {\n 'type': 'array',\n 'title': '機構與權限',\n 'items': {\n 'type': 'object',\n 'required': [\n 'clientId',\n ],\n 'properties': {\n 'clientId': {\n 'type': 'string',\n 'title': '機構',\n },\n 'visitorMode': {\n 'type': 'boolean',\n 'title': '訪客模式',\n 'default': true,\n },\n 'clientMode': {\n 'type': 'boolean',\n 'title': '可切換至機構模式',\n 'default': false,\n },\n 'elderSetting': {\n 'type': 'boolean',\n 'title': '組織模式下可編輯送餐對象',\n 'default': false,\n },\n },\n },\n },\n },\n};\n\nexport default schema;\n","const openingHoursUiSchema = {\n 'items': {\n 'startTime': {\n 'ui:width': '50%',\n },\n 'endTime': {\n 'ui:width': '50%',\n },\n 'ui:title': '',\n },\n 'ui:options': {\n 'orderable': false,\n },\n};\n\nconst uiSchema = {\n 'isActive': {\n 'ui:width': '40%',\n },\n 'isPublic': {\n 'ui:width': '30%',\n },\n 'freeDelivery': {\n 'ui:width': '30%',\n },\n 'restaurantOwnerId': {\n 'ui:width': '33%',\n },\n 'clientId': {\n 'ui:width': '33%',\n },\n 'category': {\n 'ui:width': '33%',\n },\n 'name': {\n 'ui:width': '50%',\n },\n 'phoneNumber': {\n 'ui:width': '50%',\n },\n 'description': {\n 'ui:width': '100%',\n },\n 'openingHours': {\n 'monday': openingHoursUiSchema,\n 'tuesday': openingHoursUiSchema,\n 'wednesday': openingHoursUiSchema,\n 'thursday': openingHoursUiSchema,\n 'friday': openingHoursUiSchema,\n 'saturday': openingHoursUiSchema,\n 'sunday': openingHoursUiSchema,\n },\n};\n\nexport default uiSchema;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Button from '@material-ui/core/Button';\nimport Paper from '@material-ui/core/Paper';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport DoubleArrowIcon from '@material-ui/icons/DoubleArrow';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport Typography from '@material-ui/core/Typography';\nimport { countiesDistricts, counties } from '@silvergatedelivery/constants';\nimport { compareObjects } from 'utilities/sorting';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n margin: 'auto',\n },\n paper: {\n width: 230,\n height: 230,\n overflow: 'auto',\n },\n button: {\n margin: theme.spacing(0.5, 0),\n },\n rotateIcon: {\n transform: 'rotate(180deg)',\n },\n}));\n\nfunction not(arrayA, arrayB) {\n return arrayA.filter((a) => !arrayB.some((b) => compareObjects(a, b)));\n}\n\nfunction intersection(arrayA, arrayB) {\n return arrayA.filter((a) => arrayB.some((b) => compareObjects(a, b)));\n}\n\nconst getDistrictsInCounty = (inCounty) => countiesDistricts.filter(({ county }) => county === inCounty)\n .reduce((all, { zipCode, county, districts }) => {\n const items = districts.map((district) => ({ zipCode, county, district }));\n return [...all, ...items];\n }, []);\n\nexport default function AreaSelection({ areas = [], onChange, description = '' }) {\n const classes = useStyles();\n const [checked, setChecked] = useState([]);\n const [left, setLeft] = useState(not(getDistrictsInCounty(areas[0] ? areas[0].county : '臺北市'), areas));\n const [right, setRight] = useState(areas);\n const [activeCounty, setActiveCounty] = useState(areas[0] ? areas[0].county : '臺北市');\n\n const leftChecked = intersection(checked, left);\n const rightChecked = intersection(checked, right);\n\n useEffect(()=> {\n setLeft(not(getDistrictsInCounty(activeCounty), areas));\n }, [activeCounty]);\n\n const handleToggle = (value) => () => {\n const currentIndex = checked.indexOf(value);\n const newChecked = [...checked];\n\n if (currentIndex === -1) {\n newChecked.push(value);\n } else {\n newChecked.splice(currentIndex, 1);\n }\n\n setChecked(newChecked);\n };\n\n const handleAllRight = () => {\n const newRight = right.concat(left);\n setRight(newRight);\n setLeft([]);\n setChecked([]);\n onChange(newRight);\n };\n\n const handleCheckedRight = () => {\n const newRight = right.concat(leftChecked);\n setRight(newRight);\n setLeft(not(left, leftChecked));\n setChecked([]);\n onChange(newRight);\n };\n\n const handleCheckedLeft = () => {\n const newLeft = left.concat(rightChecked.filter(({ county }) => county === activeCounty));\n setLeft(newLeft);\n const newRight = not(right, rightChecked);\n setRight(newRight);\n setChecked([]);\n onChange(newRight);\n };\n\n const handleAllLeft = () => {\n const newLeft = left.concat(right.filter(({ county }) => county === activeCounty));\n setLeft(newLeft);\n setRight([]);\n setChecked([]);\n onChange([]);\n };\n\n const customList = (items) => (\n \n \n {items.sort((a, b) => parseInt(a.zipCode, 10) - parseInt(b.zipCode, 10))\n .map((value) => {\n const display = `${value.zipCode} ${value.county}${value.district}`;\n const labelId = `transfer-list-item-${display}-label`;\n\n return (\n \n \n \n \n \n \n );\n })}\n \n \n \n );\n\n return (\n \n \n \n {\n if (newItem) {\n setActiveCounty(newItem);\n }\n }}\n renderInput={(params) => }\n />\n \n \n {description !== '' &&\n \n \n {description}\n \n }\n {customList(left)}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {customList(right)}\n \n );\n}\n\nAreaSelection.propTypes = {\n areas: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n description: PropTypes.string,\n};\n","import React, { useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport Grid from '@material-ui/core/Grid';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport moment from 'moment';\nimport { v1 as uuidv1 } from 'uuid';\nimport { tag as allTags } from '@silvergatedelivery/constants';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport {\n getRestaurant,\n getRestaurantOwner,\n getRestaurantHolidayByRestaurantByYear,\n} from 'graphql/queries';\nimport {\n createRestaurant,\n updateRestaurant,\n createTag,\n createRestaurantTag,\n deleteRestaurantTag,\n createRestaurantHoliday,\n updateRestaurantHoliday,\n} from 'graphql/mutations';\nimport uiSchema from './uiSchema';\nimport DataJoinEditorInput from 'components/DataJoinEditor/DataJoinEditorInput';\nimport ImageGalleryUploader from 'components/ImageGalleryUploader';\nimport cache from 'utilities/cache';\nimport { asyncListAll } from 'utilities/graph';\nimport { TIME_ZONE, MONTHS, WEEKDAYS_LONG, WEEKDAYS_SHORT } from '@silvergatedelivery/constants';\nimport AreaSelection from '../AreaSelection';\nimport { getClientIdSchema } from 'forms/schemas';\nimport { resetFormCache } from 'forms/formCache';\nimport { useCache } from 'CacheProvider';\n\nfunction arraysContainSameElements(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n\n const sortedArray1 = array1.slice().sort();\n const sortedArray2 = array2.slice().sort();\n\n for (let i = 0; i < sortedArray1.length; i++) {\n if (sortedArray1[i] !== sortedArray2[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport default function RestaurantForm({ formData: inFormData, ...props }) {\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n const [restaurantId, setRestaurantId] = useState();\n const [tags, setTags] = useState({ items: [] });\n const [newTagMappings, setNewTagMappings] = useState({});\n const [currentImageS3Keys, setCurrentImageS3Keys] = useState([]);\n const [newImageS3Keys, setNewImageS3Keys] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [selectedDays, setSelectedDays] = useState([]);\n const [serviceAreas, setServiceAreas] = useState([]);\n const [restaurantHolidays, setRestaurantHolidays] = useState([]);\n const { appGroup } = useCache();\n\n useEffect(() => {\n if (restaurantId) {\n (async () => {\n const start = moment().tz(TIME_ZONE).year();\n const end = start + 2;\n const holidays = await asyncListAll(getRestaurantHolidayByRestaurantByYear, {\n restaurantId,\n year: {\n between: [start, end],\n },\n });\n const newSelectedDays = [];\n holidays.forEach(({ year, closedDays }) => {\n closedDays.forEach((closedDay) => {\n const dayItem = moment(closedDay);\n newSelectedDays.push(dayItem.toDate());\n });\n });\n setRestaurantHolidays(holidays);\n setSelectedDays(newSelectedDays);\n })();\n }\n }, [restaurantId]);\n\n const onChangeTags = (key, tags) => {\n newTagMappings[key] = tags;\n setNewTagMappings({ ...newTagMappings });\n };\n\n const handleTags = async (restaurantId) => {\n const now = moment().toISOString();\n const username = cache.get('app:username');\n\n const toRemoveJoinData = [];\n tags.items.forEach(({ id, tagId, tag }) => {\n const { subcategory } = tag;\n const matched = newTagMappings[subcategory].find(({ id }) => id === tagId);\n if (!matched) {\n toRemoveJoinData.push({ id });\n }\n });\n\n await Promise.all([\n ...Object.keys(newTagMappings).map((subcategory) => {\n return Promise.all(newTagMappings[subcategory].map(async (item) => {\n let tag = item;\n\n if (!tag.id) {\n const tagData = {\n category: '餐廳',\n subcategory,\n label: tag.label,\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n const { data: { createTag: createdTag } } = await request(createTag, { input: tagData });\n tag = createdTag;\n }\n\n const matched = tags.items.find(({ tagId }) => tagId === tag.id);\n if (!matched) {\n const joinData = {\n tagId: tag.id,\n restaurantId,\n createdBy: username,\n updatedBy: username,\n };\n\n await request(createRestaurantTag, { input: joinData });\n }\n }));\n }),\n ...toRemoveJoinData.map((item) => {\n return request(deleteRestaurantTag, { input: item });\n }),\n ]);\n };\n\n const handleHolidays = async (restaurantId) => {\n const now = moment().toISOString();\n const username = cache.get('app:username');\n\n const newRestaurantHolidays = [];\n selectedDays.forEach((day) => {\n const dayItem = moment(day);\n const year = dayItem.year();\n const date = dayItem.format('YYYY-MM-DD');\n let item = newRestaurantHolidays.find((holiday) => holiday.year === year);\n if (!item) {\n const length = newRestaurantHolidays.push({\n year,\n closedDays: [],\n });\n item = newRestaurantHolidays[length - 1];\n }\n item.closedDays.push(date);\n });\n\n const toCreateHolidays = [];\n const toUpdateHolidays = [];\n newRestaurantHolidays.forEach(async (holiday) => {\n const existingHoliday = restaurantHolidays.find(\n (restaurantHoliday) => restaurantHoliday.year === holiday.year);\n if (existingHoliday) {\n if (!arraysContainSameElements(existingHoliday.closedDays, holiday.closedDays)) {\n const input = Object.assign({}, existingHoliday, {\n updatedAt: now,\n updatedBy: username,\n ...holiday,\n });\n toUpdateHolidays.push(await request(updateRestaurantHoliday, { input }));\n }\n } else {\n const input = {\n id: uuidv1(),\n restaurantId,\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n expirationUnixTime: Math.round(Date.now() / 1000) + 365 * 86400,\n ...holiday,\n };\n toCreateHolidays.push(await request(createRestaurantHoliday, { input }));\n }\n });\n await Promise.all([...toCreateHolidays, ...toUpdateHolidays]);\n };\n\n const getRestaurantOwnerUsername = async (inRestaurantOwnerId) => {\n if (!inRestaurantOwnerId) return 'N/A';\n\n const { data: { getRestaurantOwner: data } } = await request(getRestaurantOwner, { id: inRestaurantOwnerId });\n\n return data ? data.username : 'N/A';\n };\n\n const onComplete = async (restaurantId) => {\n if (props.onComplete) {\n const { data: { getRestaurant: data } } = await request(getRestaurant, { id: restaurantId });\n\n props.onComplete(data);\n }\n };\n\n const createFunc = async (data) => {\n setIsLoading(true);\n\n data.id = restaurantId;\n data.county = data.address.county;\n data.imageS3Keys = newImageS3Keys;\n data.owner = await getRestaurantOwnerUsername(data.restaurantOwnerId);\n data.serviceAreas = serviceAreas;\n\n const clientId = cache.get('app:facilityId');\n if (clientId) {\n data.clientId = clientId;\n }\n\n if (!data.restaurantOwnerId) {\n delete data.restaurantOwnerId;\n }\n\n delete data.tags;\n\n await request(createRestaurant, { input: data });\n\n await handleTags(restaurantId);\n\n await handleHolidays(restaurantId);\n\n await onComplete(restaurantId);\n\n setIsLoading(false);\n resetFormCache('allRestaurants');\n };\n\n const updateFunc = async (data) => {\n setIsLoading(true);\n\n data.county = data.address.county;\n data.imageS3Keys = newImageS3Keys;\n data.owner = await getRestaurantOwnerUsername(data.restaurantOwnerId);\n data.serviceAreas = serviceAreas;\n\n delete data.tags;\n\n await request(updateRestaurant, { input: data });\n\n await handleTags(restaurantId);\n\n await handleHolidays(restaurantId);\n\n await onComplete(restaurantId);\n\n setIsLoading(false);\n resetFormCache('allRestaurants');\n };\n\n useEffect(() => {\n console.log(inFormData);\n if (inFormData && inFormData.id && inFormData.tags) {\n setTags(inFormData.tags);\n setNewTagMappings(inFormData.tags.items.reduce((obj, { tag }) => {\n obj[tag.subcategory] = obj[tag.subcategory] || [];\n obj[tag.subcategory].push(tag);\n return obj;\n }, {}));\n setCurrentImageS3Keys(inFormData.imageS3Keys || []);\n setNewImageS3Keys(inFormData.imageS3Keys || []);\n setRestaurantId(inFormData.id);\n setServiceAreas(inFormData.serviceAreas || []);\n } else {\n setRestaurantId(uuidv1());\n }\n }, [inFormData]);\n\n const handleDayClick = (day, { selected }) => {\n if (selected) {\n const selectedIndex = selectedDays.findIndex((selectedDay) => DateUtils.isSameDay(selectedDay, day));\n selectedDays.splice(selectedIndex, 1);\n } else {\n selectedDays.push(day);\n }\n setSelectedDays([...selectedDays]);\n };\n\n const serviceAreaChanged = (newAreas = []) => {\n setServiceAreas(newAreas);\n };\n\n return (\n
\n {\n const adminMode = appGroup === 'Admins';\n return getClientIdSchema(clientId, '所屬機構', false, adminMode, false);\n },\n }]}\n {...props}\n >\n \n 公休日\n \n \n \n 在上述設定營業時間中如有休假,請設定公休日\n \n \n \n \n \n 服務範圍\n \n \n \n \n \n\n \n 標籤\n \n \n \n {\n Object.keys(allTags['餐廳']).map((key)=>(\n \n tag.subcategory === key) : []}\n defaultValues={tags ? tags.items.filter(({ tag }) => tag.subcategory === key).map(({ tag }) => tag.label) : []}\n onChange={(newTags) => onChangeTags(key, newTags)}\n onUpdateOptions={() => {}}\n disabled={isLoading}\n showHelperText={false}\n />\n \n ))\n }\n \n \n \n \n \n
\n );\n}\n\nRestaurantForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport i18n from 'i18next';\nimport EditButton from '../components/EditButton';\nimport RestaurantForm from './RestaurantForm';\n\nexport default function RestaurantEditButton({ ...props }) {\n return (\n );\n}\n","import i18n from 'i18next';\nimport { ORDER_CATEGORY_LABEL } from '@silvergatedelivery/constants';\n\nconst getOpeningHoursArraySchema = (title = '') => ({\n 'type': 'array',\n 'title': title,\n 'maxItems': 2,\n 'items': {\n 'type': 'object',\n 'properties': {\n 'startTime': {\n 'title': '開始供餐時間',\n 'type': 'string',\n 'format': 'time',\n 'default': '10:00:00',\n },\n 'endTime': {\n 'title': '結束供餐時間',\n 'type': 'string',\n 'format': 'time',\n 'default': '19:00:00',\n },\n },\n },\n});\n\nconst schema = {\n 'type': 'object',\n 'required': [\n 'isActive', 'name', 'phoneNumber', 'address',\n ],\n 'properties': {\n 'isActive': {\n 'type': 'number',\n 'title': '狀態',\n 'enum': [1, 0],\n 'enumNames': ['使用中', '已停用'],\n 'default': 1,\n },\n 'isPublic': {\n 'type': 'boolean',\n 'title': '公開可供客戶自由訂購',\n 'default': false,\n },\n 'freeDelivery': {\n 'type': ['boolean', 'null'],\n 'title': '免運費',\n 'default': false,\n },\n 'name': {\n 'type': 'string',\n 'title': '名稱',\n },\n 'phoneNumber': {\n 'type': 'string',\n 'title': '電話號碼',\n },\n 'restaurantOwnerId': {\n 'type': ['string', 'null'],\n 'title': `${i18n.t('餐廳')}負責人`,\n },\n 'clientId': {\n 'type': ['string', 'null'],\n 'title': '所屬機構',\n },\n 'category': {\n 'type': ['string', 'null'],\n 'title': '類別',\n 'enum': ORDER_CATEGORY_LABEL,\n 'default': '送餐',\n },\n 'description': {\n 'type': ['string', 'null'],\n 'title': '描述',\n },\n 'openingHours': {\n 'type': ['object', 'null'],\n 'title': '營業時間',\n 'properties': {\n 'monday': getOpeningHoursArraySchema('星期一營業時間'),\n 'tuesday': getOpeningHoursArraySchema('星期二營業時間'),\n 'wednesday': getOpeningHoursArraySchema('星期三營業時間'),\n 'thursday': getOpeningHoursArraySchema('星期四營業時間'),\n 'friday': getOpeningHoursArraySchema('星期五營業時間'),\n 'saturday': getOpeningHoursArraySchema('星期六營業時間'),\n 'sunday': getOpeningHoursArraySchema('星期日營業時間'),\n },\n },\n 'address': {\n 'title': '地址',\n 'type': 'object',\n },\n },\n};\n\nexport default schema;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { createRestaurantOwner, updateRestaurantOwner } from 'graphql/mutations';\nimport schema from './schema';\nimport uiSchema from './uiSchema';\n\nexport default function RestaurantOwnerForm({ ...props }) {\n const createFunc = async (data) => {\n data.county = data.address.county;\n\n await request(createRestaurantOwner, { input: data });\n };\n\n const updateFunc = async (data) => {\n data.county = data.address.county;\n\n await request(updateRestaurantOwner, { input: data });\n };\n\n return (\n \n );\n}\n\nRestaurantOwnerForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport i18n from 'i18next';\nimport EditButton from '../components/EditButton';\nimport RestaurantOwnerForm from './RestaurantOwnerForm';\n\nexport default function RestaurantOwnerEditButton({ ...props }) {\n return (\n );\n}\n","const schema = {\n 'title': '',\n 'type': 'object',\n 'required': [],\n 'properties': {\n 'surcharges': {\n 'type': ['array', 'null'],\n 'title': '額外成本',\n 'description': '除了餐點以外的額外成本,例如:耗材紙盒,自費戶收據會分別列出額外成本',\n 'items': {\n 'required': [\n 'name',\n 'price',\n ],\n 'type': 'object',\n 'properties': {\n 'name': {\n 'type': 'string',\n 'title': '名稱',\n },\n 'price': {\n 'type': 'number',\n 'title': '售價',\n 'default': 0,\n },\n },\n },\n 'default': [],\n },\n },\n};\n\nexport default schema;\n","/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react';\n\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nconst AutoSelectWidget = (props) => {\n const {\n schema,\n id,\n options,\n label,\n required,\n disabled,\n readonly,\n value: inValue,\n autofocus,\n onChange,\n rawErrors = [],\n } = props;\n const [value, setValue] = useState('');\n const [inputValue, setInputValue] = useState('');\n const [errorMsg, setErrorMsg] = useState();\n const { allowCustomInput = false } = options;\n const { referenceOptions, optionDescriptoins = [] } = schema;\n\n useEffect(() => {\n if (typeof inValue !== 'undefined') {\n if (referenceOptions.includes(inValue)) {\n setValue(inValue);\n setInputValue(inValue);\n } else if (allowCustomInput) {\n setValue('');\n setInputValue(inValue);\n }\n }\n }, [inValue, referenceOptions]);\n\n const renderInput = (params) => {\n return ( 0 || (errorMsg ? true : false)}\n required={required}\n InputLabelProps={{\n shrink: true,\n }}\n helperText={errorMsg || params.helperText}\n />);\n };\n\n return (\n {\n if (newItem) {\n if (referenceOptions.includes(newItem)) {\n onChange(newItem);\n setErrorMsg();\n } else {\n if (allowCustomInput) {\n onChange(newItem);\n } else {\n setErrorMsg('沒有符合的資料');\n }\n }\n } else if (allowCustomInput) {\n onChange(newItem);\n }\n }}\n inputValue={inputValue || ''}\n onInputChange={(event, newInputValue, reason) => {\n if (reason === 'reset') return;\n\n setInputValue(newInputValue);\n if (newInputValue) {\n if (referenceOptions.includes(newInputValue)) {\n onChange(newInputValue);\n setErrorMsg();\n } else {\n if (allowCustomInput) {\n onChange(newInputValue);\n } else {\n setErrorMsg('沒有符合的資料');\n }\n }\n }\n }}\n // onBlur={_onBlur}\n // onFocus={_onFocus}\n renderInput={renderInput}\n renderOption={(option) => {\n const optionIndex = referenceOptions.findIndex((item) => item === option);\n let description;\n if (optionIndex !== -1) {\n description = optionDescriptoins?.[optionIndex];\n }\n if (description) {\n return (\n
\n {option}\n {description}\n
\n );\n }\n return (\n \n {option}\n \n );\n }}\n />\n );\n};\n\nexport default AutoSelectWidget;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Box from '@material-ui/core/Box';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\nconst CheckboxesWithSelectAll = (props) => {\n const { options, value = [], onChange, label } = props;\n const allOptions = options.enumOptions.map((option) => option.value);\n\n const handleSelectAll = () => {\n if (value.length === allOptions.length) {\n onChange([]);\n } else {\n onChange(allOptions);\n }\n };\n\n const handleChange = (optionValue) => {\n const newValue = value.includes(optionValue) ?\n value.filter((v) => v !== optionValue) :\n [...value, optionValue];\n onChange(newValue);\n };\n\n return (\n
\n \n \n {label}\n \n }\n label={\n \n 全選\n \n }\n style={{ marginLeft: 10 }}\n />\n \n {options.enumOptions.map((option) => (\n handleChange(option.value)}\n />}\n label={\n \n {option.label}\n \n }\n />\n ))}\n
\n );\n};\n\nCheckboxesWithSelectAll.propTypes = {\n options: PropTypes.object,\n label: PropTypes.string,\n value: PropTypes.array,\n onChange: PropTypes.func,\n};\n\nexport default CheckboxesWithSelectAll;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport Button from '@material-ui/core/Button';\nimport EditIcon from '@material-ui/icons/Edit';\nimport AddIcon from '@material-ui/icons/Add';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport FormDialog from 'components/FormDialog';\n\nexport default function EditButton({\n title,\n mode = 'edit',\n type = 'icon',\n size = 'small',\n variant = 'text',\n item,\n onUpdate,\n fullScreen = false,\n open: inOpen = false,\n color = 'inherit',\n exitConfirm = false,\n tooltip,\n ...props // form\n}) {\n const [open, setOpen] = useState(inOpen);\n const [editItem, setEditItem] = useState();\n\n const tooltipLabel = tooltip || (mode === 'edit' ? '修改資料' : '新增資料');\n\n return (\n \n {type === 'icon' &&\n \n {\n if (!open) {\n setOpen(true);\n setEditItem(item);\n }\n }}\n >\n {props.icon ? :\n (mode ==='edit' ? : )}\n \n }\n {type !== 'icon' &&\n {\n if (!open) {\n setOpen(true);\n setEditItem(item);\n }\n }}\n >\n {mode ==='edit' ? : }\n 新增{title}\n }\n {open &&\n {\n setOpen(false);\n setEditItem();\n }}\n exitConfirm={exitConfirm}\n >\n {\n setOpen(false);\n setEditItem();\n onUpdate && onUpdate(data);\n }}\n />\n }\n \n );\n}\n\nEditButton.propTypes = {\n title: PropTypes.string,\n mode: PropTypes.string,\n type: PropTypes.string,\n size: PropTypes.number,\n variant: PropTypes.string,\n item: PropTypes.object,\n onUpdate: PropTypes.func,\n fullScreen: PropTypes.bool,\n open: PropTypes.bool,\n color: PropTypes.string,\n exitConfirm: PropTypes.bool,\n icon: PropTypes.object,\n tooltip: PropTypes.string,\n};\n","export const formCache = {};\n\nexport const resetFormCache = (key) => {\n if (!key) {\n Object.keys(formCache).forEach((key) => delete formCache[key]);\n } else if (formCache[key]) {\n delete formCache[key];\n }\n};\n","import i18n from 'i18next';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\nimport cache from 'utilities/cache';\nimport {\n counties,\n countiesDistricts,\n} from '@silvergatedelivery/constants';\nimport { formCache } from './formCache';\nimport { getClient } from 'graphql/queries';\n\nconst filterByLocation = (item) => {\n const target = cache.get('app:location');\n if (!target) return true;\n if (item.county) {\n return item.county === target;\n } else\n if (item.address) {\n return item.address.county === target;\n } else {\n return true;\n }\n};\n\nexport const getElderIdSchema = async (inElderId, inTitle, inClientId, shouldReturnOriginalRecords = false, includeNoteForMeal = false) => {\n if (inElderId) {\n const { data: { getElder: elder } } = await request( /* GraphQL */ `\n query GetElder($id: ID!) {\n getElder(id: $id) {\n id\n county\n name\n deliveryGroupId\n sortOrder\n noteForDelivery\n noteForMeal\n note\n phoneNumber\n email\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n }\n }\n `, { id: inElderId });\n let elderName = elder.name;\n if (includeNoteForMeal && elder.noteForMeal) {\n elderName = `${elder.name} (${elder.noteForMeal})`;\n }\n return {\n enum: [elder.id],\n enumNames: [elderName],\n default: inElderId,\n };\n }\n\n let records = [];\n\n const clientId = cache.get('app:facilityId') || inClientId;\n const target = cache.get('app:location');\n\n if (clientId) {\n records = await asyncListAll( /* GraphQL */ `\n query GetEldersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n county\n name\n status\n deliveryGroupId\n sortOrder\n noteForDelivery\n noteForMeal\n note\n phoneNumber\n email\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n }\n nextToken\n }\n }\n `, { clientId, status: { eq: '使用中' } });\n } else\n if (target) {\n records = await asyncListAll( /* GraphQL */ `\n query GetEldersByCountyByCreatedAt(\n $county: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByCountyByCreatedAt(\n county: $county\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n county\n name\n deliveryGroupId\n sortOrder\n noteForDelivery\n noteForMeal\n note\n phoneNumber\n email\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n }\n nextToken\n }\n }\n `, { county: target, filter: { status: { eq: '使用中' } } });\n } else {\n records = await asyncListAll( /* GraphQL */ `\n query ListElders(\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listElders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n county\n name\n deliveryGroupId\n sortOrder\n noteForDelivery\n noteForMeal\n note\n phoneNumber\n email\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n }\n nextToken\n }\n }\n `, { filter: { status: { eq: '使用中' } } });\n }\n\n records = records.sort(sortBy('name'));\n // .filter(filterByLocation);\n\n if (shouldReturnOriginalRecords) {\n return records;\n }\n\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ name, noteForMeal }) => {\n let elderName = name;\n if (includeNoteForMeal && noteForMeal) {\n elderName = `${name} (${noteForMeal})`;\n }\n return elderName;\n }),\n };\n};\n\nexport const getDeliveryGroupIdSchema = async (inDeliveryGroupId, inTitle, inClientId, shouldReturnOriginalRecords = false) => {\n if (inDeliveryGroupId) {\n const { data: { getDeliveryGroup: deliveryGroup } } = await request( /* GraphQL */ `\n query GetDeliveryGroup($id: ID!) {\n getDeliveryGroup(id: $id) {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n `, { id: inDeliveryGroupId });\n return {\n enum: [inDeliveryGroupId],\n enumNames: [deliveryGroup ? deliveryGroup.name : '已刪除'],\n default: inDeliveryGroupId,\n };\n }\n\n let records = [];\n\n const clientId = cache.get('app:facilityId') || inClientId;\n // const target = cache.get('app:location');\n\n if (clientId) {\n records = await asyncListAll( /* GraphQL */ `\n query GetDeliveryGroupsByClientByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryGroupsByClientByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n `, { clientId, isActive: { eq: 1 } });\n }\n\n records = records.sort(sortBy('name'));\n\n if (shouldReturnOriginalRecords) {\n return records;\n }\n\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ name }) => name),\n };\n};\n\nexport const getClientIdSchema = async (inClientId, inTitle, shouldReturnOriginalRecords = false, includeAll = false, nonNull = true) => {\n const clientId = cache.get('app:facilityId') || inClientId;\n\n if (!includeAll && clientId) {\n const { data: { getClient: client } } = await request( /* GraphQL */ `\n query GetClient($id: ID!) {\n getClient(id: $id) {\n id\n name\n county\n }\n }\n `, { id: clientId });\n return {\n enum: [clientId],\n enumNames: [(client?.name || clientId)],\n default: clientId,\n };\n }\n\n let records;\n let cacheKey = '';\n\n if (inTitle === '所屬機構' || inTitle === '機構') {\n cacheKey = 'allFacilities';\n\n records = formCache[cacheKey] || (await asyncListAll( /* GraphQL */ `\n query GetClientsByTypeByCounty(\n $type: ClientType\n $county: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientsByTypeByCounty(\n type: $type\n county: $county\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n name\n county\n }\n nextToken\n }\n }\n `, { type: 'facility', filter: { isActive: { eq: 1 } } }));\n } else {\n cacheKey = 'allClients';\n\n records = formCache[cacheKey] || (await asyncListAll( /* GraphQL */ `\n query ListClients(\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listClients(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n county\n }\n nextToken\n }\n }\n `, { filter: { isActive: { eq: 1 } } }));\n }\n\n formCache[cacheKey] = records;\n\n records = records\n .sort(sortBy('name'))\n .filter(filterByLocation);\n\n if (shouldReturnOriginalRecords) {\n if (!nonNull) {\n return [{\n id: null,\n name: '無',\n },\n ...records];\n }\n return records;\n }\n if (records.length !== 0) {\n if (nonNull) {\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ name }) => name),\n };\n }\n return {\n enum: [null, ...records.map(({ id }) => id)],\n enumNames: ['無', ...records.map(({ name }) => name)],\n };\n }\n return undefined;\n};\n\nexport const getCustomizeDisadvantagedSettingsSchema = async (inClientId, includeAll = false) => {\n const clientId = inClientId;\n\n if (!includeAll && clientId) {\n const { data: { getClient: client } } = await request( /* GraphQL */ `\n query GetClient($id: ID!) {\n getClient(id: $id) {\n featureConfiguration {\n customizeDisadvantagedSettings\n }\n }\n }\n `, { id: clientId });\n\n const customizeSettings = client?.featureConfiguration?.customizeDisadvantagedSettings || ['一般', '中低收', '低收', '中低2.5倍', '中低1.5倍'];\n\n return {\n enum: customizeSettings,\n enumNames: customizeSettings,\n default: '',\n };\n }\n};\n\nexport const getOrganizationIdSchema = async (inOrganizationId) => {\n const cacheKey = 'allOrganizations';\n let records = formCache[cacheKey] || (await asyncListAll( /* GraphQL */ `\n query ListOrganizations(\n $filter: ModelOrganizationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOrganizations(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n }\n nextToken\n }\n }\n `));\n\n formCache[cacheKey] = records;\n\n records = records\n .sort(sortBy('name'))\n .filter(filterByLocation);\n\n if (records.length !== 0) {\n return {\n enum: ['N/A', ...records.map(({ id }) => id)],\n enumNames: ['無', ...records.map(({ name }) => name)],\n };\n }\n\n return undefined;\n};\n\n// used for DataForm\nexport const getRestaurantIdSchemaByClientId = (clientId) =>\n async (\n inRestaurantId, inTitle,\n ) =>\n await getRestaurantIdSchema(inRestaurantId, inTitle, clientId);\n\nexport const getRestaurantIdSchema = async (inRestaurantId, inTitle, inClientId, shouldReturnOriginalRecords = false, onlyShowFacilityRestaurant = false) => {\n let records = [];\n let restaurantIds = [];\n if (inClientId && !onlyShowFacilityRestaurant) {\n const { data: { getClient: data } } = await request(getClient, { id: inClientId });\n if (data?.orderableRestaurants) {\n restaurantIds = data.orderableRestaurants.map(({ id }) => id);\n }\n }\n if (inRestaurantId && !restaurantIds.includes(inRestaurantId)) {\n restaurantIds.push(inRestaurantId);\n }\n\n const restaurantItem = `\n id\n owner\n isActive\n county\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }`;\n if (inClientId) {\n records = (await asyncListAll( /* GraphQL */ `\n query GetRestaurantsByClientByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByClientByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n ${restaurantItem}\n }\n nextToken\n }\n }\n `, { clientId: inClientId, isActive: { eq: 1 } })).flat();\n if (restaurantIds.length) {\n const toGetRestaurantIds = restaurantIds.filter((id) => !records.some((record) => record.id === id));\n const recordsByRestaurantIds = (await Promise.all(toGetRestaurantIds.map(async (id) => await request( /* GraphQL */ `\n query GetRestaurant($id: ID!) {\n getRestaurant(id: $id) {\n ${restaurantItem}\n }\n }\n `, { id, isActive: { eq: 1 } })))).map(({ data: { getRestaurant: data } }) => data);\n records = records.concat(recordsByRestaurantIds);\n }\n records = records.map((item) => {\n item.label = `${item.name}`;\n return item;\n });\n } else {\n const cacheKey = 'allRestaurants';\n records = formCache[cacheKey] || await asyncListAll( /* GraphQL */ `\n query ListRestaurants(\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurants(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n ${restaurantItem}\n }\n nextToken\n }\n }\n `, { filter: { isActive: { eq: 1 } } });\n formCache[cacheKey] = records;\n\n records = records.map((item) => {\n item.label = `${item.address.zipCode} ${item.address.county} - ${item.name}`;\n return item;\n });\n }\n\n records = records\n .sort(sortBy('label'));\n // .filter(filterByLocation);\n\n if (shouldReturnOriginalRecords) {\n return records;\n }\n\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ label }) => label),\n };\n};\n\nexport const getRestaurantOwnerIdSchema = async (inRestaurantOwnerId) => {\n const clientId = cache.get('app:facilityId');\n let records = [];\n if (clientId) { // facility mode\n if (inRestaurantOwnerId) {\n const result = await request( /* GraphQL */ `\n query GetRestaurantOwner($id: ID!) {\n getRestaurantOwner(id: $id) {\n id\n isActive\n county\n username\n name\n }\n }\n `, { id: inRestaurantOwnerId });\n const { data: { getRestaurantOwner: restaurantOwner } } = result;\n records = [restaurantOwner];\n }\n } else {\n records = await asyncListAll( /* GraphQL */ `\n query ListRestaurantOwners(\n $filter: ModelRestaurantOwnerFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurantOwners(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n county\n username\n name\n }\n nextToken\n }\n }\n `);\n }\n\n records = records.map((item) => {\n item.label = item.name;\n return item;\n });\n\n records = records\n .sort(sortBy('label'));\n // .filter(filterByLocation);\n\n return {\n enum: [null, ...records.map(({ id }) => id)],\n enumNames: ['無', ...records.map(({ label }) => label)],\n };\n};\n\n// used for DataForm\nexport const getDeliveryStaffIdSchemaByClientId = (clientId) =>\n async (\n inDeliveryStaffId, inTitle,\n ) =>\n await getDeliveryStaffIdSchema(inDeliveryStaffId, inTitle, clientId, true);\n\nexport const getDeliveryStaffIdSchema = async (inDeliveryStaffId, inTitle, inClientId,\n includePartners = false, includeMultiStopPartners = false,\n shouldReturnOriginalRecords = false, nonNull = false,\n onlyShowFacilityDeliveryStaff = false,\n) => {\n let records = [];\n let deliveryStaffIds = [];\n let supportedPartners = [];\n if (inClientId) {\n const { data: { getClient: data } } = await request(getClient, { id: inClientId });\n supportedPartners = data?.featureConfiguration?.supportedPartners || [];\n if (!onlyShowFacilityDeliveryStaff) {\n if (data?.assignableDeliveryStaffs) {\n deliveryStaffIds = data.assignableDeliveryStaffs;\n }\n }\n }\n if (inDeliveryStaffId && !deliveryStaffIds.includes(inDeliveryStaffId)) {\n deliveryStaffIds.push(inDeliveryStaffId);\n }\n\n const deliveryStaffItem =`\n id\n username\n isActive\n county\n name\n tier\n `;\n\n // const target = cache.get('app:location');\n\n if (inClientId) {\n records = (await asyncListAll( /* GraphQL */ `\n query GetDeliveryStaffsByClientIdByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffsByClientIdByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n ${deliveryStaffItem}\n }\n nextToken\n }\n }\n `, { clientId: inClientId, isActive: { eq: 1 } })).flat();\n if (deliveryStaffIds.length) {\n const toGetDeliveryStaffIds = deliveryStaffIds.filter((id) => !records.some((record) => record.id === id));\n const recordsByDeliveryStaffIds = (await Promise.all(toGetDeliveryStaffIds.map(async (id) => await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n ${deliveryStaffItem}\n }\n }\n `, { id, isActive: { eq: 1 } })))).map(({ data: { getDeliveryStaff: data } }) => data);\n records = records.concat(recordsByDeliveryStaffIds);\n }\n // } else if (target) {\n // records = await asyncListAll( /* GraphQL */ `\n // query GetDeliveryStaffsByCountyByCreatedAt(\n // $county: String\n // $createdAt: ModelStringKeyConditionInput\n // $sortDirection: ModelSortDirection\n // $filter: ModelDeliveryStaffFilterInput\n // $limit: Int\n // $nextToken: String\n // ) {\n // getDeliveryStaffsByCountyByCreatedAt(\n // county: $county\n // createdAt: $createdAt\n // sortDirection: $sortDirection\n // filter: $filter\n // limit: $limit\n // nextToken: $nextToken\n // ) {\n // items {\n // ${deliveryStaffItem}\n // }\n // nextToken\n // }\n // }\n // `, { county: target, filter: { isActive: { eq: 1 } } });\n } else {\n const cacheKey = 'allDeliveryStaffs';\n records = formCache[cacheKey] || await asyncListAll( /* GraphQL */ `\n query ListDeliveryStaffs(\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryStaffs(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n ${deliveryStaffItem}\n }\n nextToken\n }\n }\n `, { filter: { isActive: { eq: 1 } } });\n formCache[cacheKey] = records;\n }\n\n if (inDeliveryStaffId && !records.some(({ id }) => id === inDeliveryStaffId)) {\n const { data: { getDeliveryStaff: deliveryStaff } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n ${deliveryStaffItem}\n }\n }\n `, { id: inDeliveryStaffId });\n records.unshift(deliveryStaff);\n }\n\n let partners = [];\n if (includePartners) {\n const partnersList = ['uber', 'pandago', 'ilink', 'lalamove'];\n partners = partnersList.filter((partner) => supportedPartners.includes(partner));\n }\n if (includeMultiStopPartners && supportedPartners.includes('lalamove(multi-stop)')) {\n partners.push('lalamove(multi-stop)');\n }\n if (includePartners || includeMultiStopPartners) {\n await Promise.all(partners.map(async (partnerUsername) => {\n if (!records.find(({ username }) => username === partnerUsername)) {\n const [partnerDeliveryStaff] = await asyncListAll( /* GraphQL */ `\n query GetDeliveryStaffsByUsername(\n $username: String\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffsByUsername(\n username: $username\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n ${deliveryStaffItem}\n }\n nextToken\n }\n }\n `, { username: partnerUsername });\n\n if (partnerDeliveryStaff) {\n records.push(partnerDeliveryStaff);\n }\n }\n }));\n }\n\n records = records\n .sort(sortBy('name'))\n .sort(sortBy('tier'));\n // .filter(filterByLocation);\n\n if (shouldReturnOriginalRecords) {\n return records;\n }\n\n if (nonNull) {\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ tier, name }) => `[${tier}] ${name}`),\n };\n }\n return {\n enum: [null, ...records.map(({ id }) => id)],\n enumNames: ['無', ...records.map(({ tier, name }) => `[${tier}] ${name}`)],\n };\n};\n\n// https://valerii-udodov.com/posts/react-json-schema-form/\n// Bug: nested depedencies not updated when changing the parent value\n// https://github.com/rjsf-team/react-jsonschema-form/issues/3450\nexport const getAddressSchema = (targetZipcodes, addressLiteVersion) => async () => {\n let targetCounties = counties;\n let targetCountiesDistricts = countiesDistricts;\n\n if (targetZipcodes && targetZipcodes.length !== 0) {\n targetCounties = [];\n targetCountiesDistricts = [];\n countiesDistricts.forEach((countiesDistrict) => {\n const { zipCode, county } = countiesDistrict;\n if (targetZipcodes && targetZipcodes.length > 0 && !targetZipcodes.includes(zipCode)) {\n return;\n }\n if (!targetCounties.includes(county)) {\n targetCounties.push(county);\n }\n targetCountiesDistricts.push(countiesDistrict);\n });\n }\n\n const addressSchema = {\n 'required': [\n 'zipCode',\n 'county',\n 'district',\n 'street',\n ],\n 'properties': {\n 'county': {\n 'type': 'string',\n 'title': '縣市',\n 'enum': targetCounties,\n 'default': targetCounties[0],\n },\n 'street': {\n 'type': 'string',\n 'title': '道路或街名或村里名稱',\n },\n 'note': {\n 'type': ['string', 'null'],\n 'title': '地址備註',\n },\n 'lat': {\n 'type': ['number', 'null'],\n 'title': '經度',\n 'description': '保留0的話,系統會自動定位經緯度',\n 'default': 0,\n },\n 'lng': {\n 'type': ['number', 'null'],\n 'title': '緯度',\n 'description': '保留0的話,系統會自動定位經緯度',\n 'default': 0,\n },\n },\n 'dependencies': {\n 'county': {\n 'oneOf': targetCounties.map((county) => {\n let availableDistricts = [];\n targetCountiesDistricts\n .filter((item) => item.county === county)\n .forEach(({ districts }) => {\n if (districts) {\n availableDistricts = [...availableDistricts, ...districts];\n }\n });\n\n return {\n 'properties': {\n 'county': {\n 'enum': [county],\n },\n 'district': {\n 'type': 'string',\n 'title': '鄉鎮市區',\n 'enum': availableDistricts,\n },\n },\n 'required': [\n 'county',\n 'district',\n 'street',\n ],\n };\n }),\n },\n },\n };\n\n if (addressLiteVersion) {\n delete addressSchema.properties.lat;\n delete addressSchema.properties.lng;\n }\n\n return addressSchema;\n};\n\nexport const getCountySchema = async () => {\n return {\n 'type': 'string',\n 'title': '縣市',\n 'enum': [\n ...counties,\n 'N/A',\n ],\n };\n};\n\nexport const getEmergencyContactSchema = async () => {\n return {\n 'required': [\n 'name',\n 'relationship',\n 'phoneNumber',\n ],\n 'properties': {\n 'name': {\n 'type': 'string',\n 'title': '姓名',\n },\n 'relationship': {\n 'type': 'string',\n 'title': '關係',\n },\n 'phoneNumber': {\n 'type': 'string',\n 'title': '電話號碼',\n },\n 'phoneNumber2': {\n 'type': ['string', 'null'],\n 'title': '電話號碼2',\n },\n },\n };\n};\n\nexport const getMealItemsSchema = (mealOptions) => () => {\n return {\n 'type': 'array',\n 'title': i18n.t('餐點'),\n 'items': {\n 'required': [\n 'name',\n 'quantity',\n ],\n 'type': 'object',\n 'properties': {\n 'name': {\n 'type': 'string',\n 'title': '名稱',\n 'referenceOptions': mealOptions.map(({ name }) => name),\n },\n 'quantity': {\n 'type': 'number',\n 'title': '數量',\n 'default': 1,\n },\n 'cost': {\n 'type': 'number',\n 'title': '進價',\n 'default': 0,\n },\n 'price': {\n 'type': 'number',\n 'title': '單價',\n 'default': 0,\n },\n 'note': {\n 'type': ['string', 'null'],\n 'title': '註記',\n },\n },\n },\n 'default': [],\n 'minItems': 1,\n };\n};\n\nexport const getSponsorProgramIdSchema = async (inId) => {\n if (inId) {\n const { data: { getSponsorshipProgram: data } } = await request( /* GraphQL */ `\n query GetSponsorshipProgram($id: ID!) {\n getSponsorshipProgram(id: $id) {\n id\n isActive\n name\n count\n unit\n unitValue\n }\n }\n `, { id: inId });\n\n const records = [data];\n\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ name, count, unit, unitValue }) => `${name} (${count} ${unit} x $${unitValue})`),\n default: inId,\n };\n }\n\n const records = (await asyncListAll( /* GraphQL */ `\n query ListSponsorshipPrograms(\n $filter: ModelSponsorshipProgramFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listSponsorshipPrograms(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n name\n count\n unit\n unitValue\n }\n nextToken\n }\n }\n `)).sort(sortBy('name'));\n\n return {\n enum: records.map(({ id }) => id),\n enumNames: records.map(({ name, count, unit, unitValue }) => `${name} (${count} ${unit} x $${unitValue})`),\n };\n};\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const adminCreateOrder = /* GraphQL */ `\n mutation AdminCreateOrder($input: AdminCreateOrderRequest!) {\n adminCreateOrder(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const adminUpdateOrder = /* GraphQL */ `\n mutation AdminUpdateOrder($input: AdminUpdateOrderRequest!) {\n adminUpdateOrder(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const adminUpdateOrderMeal = /* GraphQL */ `\n mutation AdminUpdateOrderMeal($input: AdminUpdateOrderMealRequest!) {\n adminUpdateOrderMeal(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const deliveryStaffUpdateOrder = /* GraphQL */ `\n mutation DeliveryStaffUpdateOrder($input: DeliveryStaffUpdateOrderRequest!) {\n deliveryStaffUpdateOrder(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const clientCreateOrder = /* GraphQL */ `\n mutation ClientCreateOrder($input: ClientCreateOrderRequest!) {\n clientCreateOrder(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const individualClientCreateOrder = /* GraphQL */ `\n mutation IndividualClientCreateOrder(\n $input: IndividualClientCreateOrderRequest!\n ) {\n individualClientCreateOrder(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const placeMultiStopOrder = /* GraphQL */ `\n mutation PlaceMultiStopOrder($input: PlaceMultiStopOrderRequest!) {\n placeMultiStopOrder(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const restaurantOwnerUpdateOrder = /* GraphQL */ `\n mutation RestaurantOwnerUpdateOrder(\n $input: RestaurantOwnerUpdateOrderRequest!\n ) {\n restaurantOwnerUpdateOrder(input: $input) {\n errors\n message\n data {\n id\n status\n elderId\n mealSlot\n deliveryBy\n deliveryStaffFee\n }\n }\n }\n`;\nexport const registerDeliveryStaff = /* GraphQL */ `\n mutation RegisterDeliveryStaff($input: RegisterDeliveryStaffRequest!) {\n registerDeliveryStaff(input: $input) {\n errors\n message\n }\n }\n`;\nexport const registerClient = /* GraphQL */ `\n mutation RegisterClient($input: RegisterClientRequest!) {\n registerClient(input: $input) {\n errors\n message\n }\n }\n`;\nexport const registerFacilityAdmin = /* GraphQL */ `\n mutation RegisterFacilityAdmin($input: RegisterFacilityAdminRequest!) {\n registerFacilityAdmin(input: $input) {\n errors\n message\n }\n }\n`;\nexport const registerRestaurantOwner = /* GraphQL */ `\n mutation RegisterRestaurantOwner($input: RegisterRestaurantOwnerRequest!) {\n registerRestaurantOwner(input: $input) {\n errors\n message\n }\n }\n`;\nexport const checkUser = /* GraphQL */ `\n mutation CheckUser($input: CheckUserRequest!) {\n checkUser(input: $input) {\n name\n county\n deliveryStaffId\n deliveryStaffStatus\n translation\n shouldUploadDocuments\n skipDocumentsUpload\n hideSToken\n supportNumber\n notificationTokenDeliveryStaff\n deviceModelName\n deviceOsVersion\n appVersion\n facilityId\n facilityName\n facilityUseDedicatedDeliveryStaff\n organizationId\n organizationName\n organizationUseDedicatedDeliveryStaff\n }\n }\n`;\nexport const adminUpdateUserGroup = /* GraphQL */ `\n mutation AdminUpdateUserGroup($input: AdminUpdateUserGroupRequest!) {\n adminUpdateUserGroup(input: $input) {\n errors\n message\n }\n }\n`;\nexport const pay = /* GraphQL */ `\n mutation Pay($input: PayRequest!) {\n pay(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const sponsor = /* GraphQL */ `\n mutation Sponsor($input: SponsorRequest!) {\n sponsor(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const becomeMember = /* GraphQL */ `\n mutation BecomeMember($input: BecomeMemberRequest!) {\n becomeMember(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const linePayGetPaymentUrl = /* GraphQL */ `\n mutation LinePayGetPaymentUrl($input: LinePayGetPaymentUrlRequest!) {\n linePayGetPaymentUrl(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const linePayConfirmTransaction = /* GraphQL */ `\n mutation LinePayConfirmTransaction(\n $input: LinePayConfirmTransactionRequest!\n ) {\n linePayConfirmTransaction(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const newebPayGetTradePostData = /* GraphQL */ `\n mutation NewebPayGetTradePostData($input: NewebPayGetTradePostDataRequest!) {\n newebPayGetTradePostData(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const newebPayConfirmTransaction = /* GraphQL */ `\n mutation NewebPayConfirmTransaction(\n $input: NewebPayConfirmTransactionRequest!\n ) {\n newebPayConfirmTransaction(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const pandagoAddOutlets = /* GraphQL */ `\n mutation PandagoAddOutlets($input: PandagoAddOutletsRequest!) {\n pandagoAddOutlets(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const changeClientId = /* GraphQL */ `\n mutation ChangeClientId($input: ChangeCliendItRequest!) {\n changeClientId(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const deliveryStaffGetDementiaQuestionnaire = /* GraphQL */ `\n mutation DeliveryStaffGetDementiaQuestionnaire(\n $input: DeliveryStaffGetDementiaQuestionnaireRequest!\n ) {\n deliveryStaffGetDementiaQuestionnaire(input: $input) {\n errors\n message\n data {\n id\n category\n type\n question\n }\n }\n }\n`;\nexport const createAdmin = /* GraphQL */ `\n mutation CreateAdmin(\n $input: CreateAdminInput!\n $condition: ModelAdminConditionInput\n ) {\n createAdmin(input: $input, condition: $condition) {\n username\n name\n email\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateAdmin = /* GraphQL */ `\n mutation UpdateAdmin(\n $input: UpdateAdminInput!\n $condition: ModelAdminConditionInput\n ) {\n updateAdmin(input: $input, condition: $condition) {\n username\n name\n email\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteAdmin = /* GraphQL */ `\n mutation DeleteAdmin(\n $input: DeleteAdminInput!\n $condition: ModelAdminConditionInput\n ) {\n deleteAdmin(input: $input, condition: $condition) {\n username\n name\n email\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createAuditTrail = /* GraphQL */ `\n mutation CreateAuditTrail(\n $input: CreateAuditTrailInput!\n $condition: ModelAuditTrailConditionInput\n ) {\n createAuditTrail(input: $input, condition: $condition) {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateAuditTrail = /* GraphQL */ `\n mutation UpdateAuditTrail(\n $input: UpdateAuditTrailInput!\n $condition: ModelAuditTrailConditionInput\n ) {\n updateAuditTrail(input: $input, condition: $condition) {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteAuditTrail = /* GraphQL */ `\n mutation DeleteAuditTrail(\n $input: DeleteAuditTrailInput!\n $condition: ModelAuditTrailConditionInput\n ) {\n deleteAuditTrail(input: $input, condition: $condition) {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createBlog = /* GraphQL */ `\n mutation CreateBlog(\n $input: CreateBlogInput!\n $condition: ModelBlogConditionInput\n ) {\n createBlog(input: $input, condition: $condition) {\n id\n status\n title\n content\n url\n photoS3Keys\n county\n deliveryStaffId\n deliveryStaffOrderId\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateBlog = /* GraphQL */ `\n mutation UpdateBlog(\n $input: UpdateBlogInput!\n $condition: ModelBlogConditionInput\n ) {\n updateBlog(input: $input, condition: $condition) {\n id\n status\n title\n content\n url\n photoS3Keys\n county\n deliveryStaffId\n deliveryStaffOrderId\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteBlog = /* GraphQL */ `\n mutation DeleteBlog(\n $input: DeleteBlogInput!\n $condition: ModelBlogConditionInput\n ) {\n deleteBlog(input: $input, condition: $condition) {\n id\n status\n title\n content\n url\n photoS3Keys\n county\n deliveryStaffId\n deliveryStaffOrderId\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createCard = /* GraphQL */ `\n mutation CreateCard(\n $input: CreateCardInput!\n $condition: ModelCardConditionInput\n ) {\n createCard(input: $input, condition: $condition) {\n id\n username\n lastFour\n expDate\n type\n clientId\n nickname\n phoneNumber\n name\n email\n zipCode\n address\n tpId\n tpKey\n tpToken\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateCard = /* GraphQL */ `\n mutation UpdateCard(\n $input: UpdateCardInput!\n $condition: ModelCardConditionInput\n ) {\n updateCard(input: $input, condition: $condition) {\n id\n username\n lastFour\n expDate\n type\n clientId\n nickname\n phoneNumber\n name\n email\n zipCode\n address\n tpId\n tpKey\n tpToken\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteCard = /* GraphQL */ `\n mutation DeleteCard(\n $input: DeleteCardInput!\n $condition: ModelCardConditionInput\n ) {\n deleteCard(input: $input, condition: $condition) {\n id\n username\n lastFour\n expDate\n type\n clientId\n nickname\n phoneNumber\n name\n email\n zipCode\n address\n tpId\n tpKey\n tpToken\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createClient = /* GraphQL */ `\n mutation CreateClient(\n $input: CreateClientInput!\n $condition: ModelClientConditionInput\n ) {\n createClient(input: $input, condition: $condition) {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateClient = /* GraphQL */ `\n mutation UpdateClient(\n $input: UpdateClientInput!\n $condition: ModelClientConditionInput\n ) {\n updateClient(input: $input, condition: $condition) {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteClient = /* GraphQL */ `\n mutation DeleteClient(\n $input: DeleteClientInput!\n $condition: ModelClientConditionInput\n ) {\n deleteClient(input: $input, condition: $condition) {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createClientAppBanner = /* GraphQL */ `\n mutation CreateClientAppBanner(\n $input: CreateClientAppBannerInput!\n $condition: ModelClientAppBannerConditionInput\n ) {\n createClientAppBanner(input: $input, condition: $condition) {\n id\n isActive\n title\n content\n url\n imageUrl\n sortOrder\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateClientAppBanner = /* GraphQL */ `\n mutation UpdateClientAppBanner(\n $input: UpdateClientAppBannerInput!\n $condition: ModelClientAppBannerConditionInput\n ) {\n updateClientAppBanner(input: $input, condition: $condition) {\n id\n isActive\n title\n content\n url\n imageUrl\n sortOrder\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteClientAppBanner = /* GraphQL */ `\n mutation DeleteClientAppBanner(\n $input: DeleteClientAppBannerInput!\n $condition: ModelClientAppBannerConditionInput\n ) {\n deleteClientAppBanner(input: $input, condition: $condition) {\n id\n isActive\n title\n content\n url\n imageUrl\n sortOrder\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createClientMonthlyStatement = /* GraphQL */ `\n mutation CreateClientMonthlyStatement(\n $input: CreateClientMonthlyStatementInput!\n $condition: ModelClientMonthlyStatementConditionInput\n ) {\n createClientMonthlyStatement(input: $input, condition: $condition) {\n id\n clientName\n clientId\n county\n month\n completedOrderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n orderCountByIdentities {\n disadvantagedTypes\n serviceCode\n gender\n orderCount\n lunchCount\n dinnerCount\n }\n totalCost\n incompleteTotalCost\n total\n incompleteTotal\n elderStatistics {\n id\n gender\n county\n district\n disadvantagedTypes\n serviceCode\n disabilityLevel\n orderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n name\n identificationCardId\n birthday\n phoneNumber\n isIndigenous\n isLivingAlone\n cmsLevel\n lunchDates\n dinnerDates\n }\n deliveryStaffIds\n deliveryStaffFee\n deliveryPlatformCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateClientMonthlyStatement = /* GraphQL */ `\n mutation UpdateClientMonthlyStatement(\n $input: UpdateClientMonthlyStatementInput!\n $condition: ModelClientMonthlyStatementConditionInput\n ) {\n updateClientMonthlyStatement(input: $input, condition: $condition) {\n id\n clientName\n clientId\n county\n month\n completedOrderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n orderCountByIdentities {\n disadvantagedTypes\n serviceCode\n gender\n orderCount\n lunchCount\n dinnerCount\n }\n totalCost\n incompleteTotalCost\n total\n incompleteTotal\n elderStatistics {\n id\n gender\n county\n district\n disadvantagedTypes\n serviceCode\n disabilityLevel\n orderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n name\n identificationCardId\n birthday\n phoneNumber\n isIndigenous\n isLivingAlone\n cmsLevel\n lunchDates\n dinnerDates\n }\n deliveryStaffIds\n deliveryStaffFee\n deliveryPlatformCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteClientMonthlyStatement = /* GraphQL */ `\n mutation DeleteClientMonthlyStatement(\n $input: DeleteClientMonthlyStatementInput!\n $condition: ModelClientMonthlyStatementConditionInput\n ) {\n deleteClientMonthlyStatement(input: $input, condition: $condition) {\n id\n clientName\n clientId\n county\n month\n completedOrderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n orderCountByIdentities {\n disadvantagedTypes\n serviceCode\n gender\n orderCount\n lunchCount\n dinnerCount\n }\n totalCost\n incompleteTotalCost\n total\n incompleteTotal\n elderStatistics {\n id\n gender\n county\n district\n disadvantagedTypes\n serviceCode\n disabilityLevel\n orderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n name\n identificationCardId\n birthday\n phoneNumber\n isIndigenous\n isLivingAlone\n cmsLevel\n lunchDates\n dinnerDates\n }\n deliveryStaffIds\n deliveryStaffFee\n deliveryPlatformCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createClientOrganization = /* GraphQL */ `\n mutation CreateClientOrganization(\n $input: CreateClientOrganizationInput!\n $condition: ModelClientOrganizationConditionInput\n ) {\n createClientOrganization(input: $input, condition: $condition) {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateClientOrganization = /* GraphQL */ `\n mutation UpdateClientOrganization(\n $input: UpdateClientOrganizationInput!\n $condition: ModelClientOrganizationConditionInput\n ) {\n updateClientOrganization(input: $input, condition: $condition) {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteClientOrganization = /* GraphQL */ `\n mutation DeleteClientOrganization(\n $input: DeleteClientOrganizationInput!\n $condition: ModelClientOrganizationConditionInput\n ) {\n deleteClientOrganization(input: $input, condition: $condition) {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createClientUser = /* GraphQL */ `\n mutation CreateClientUser(\n $input: CreateClientUserInput!\n $condition: ModelClientUserConditionInput\n ) {\n createClientUser(input: $input, condition: $condition) {\n clientId\n username\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateClientUser = /* GraphQL */ `\n mutation UpdateClientUser(\n $input: UpdateClientUserInput!\n $condition: ModelClientUserConditionInput\n ) {\n updateClientUser(input: $input, condition: $condition) {\n clientId\n username\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteClientUser = /* GraphQL */ `\n mutation DeleteClientUser(\n $input: DeleteClientUserInput!\n $condition: ModelClientUserConditionInput\n ) {\n deleteClientUser(input: $input, condition: $condition) {\n clientId\n username\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createConfiguration = /* GraphQL */ `\n mutation CreateConfiguration(\n $input: CreateConfigurationInput!\n $condition: ModelConfigurationConditionInput\n ) {\n createConfiguration(input: $input, condition: $condition) {\n id\n status\n category\n key\n value\n description\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateConfiguration = /* GraphQL */ `\n mutation UpdateConfiguration(\n $input: UpdateConfigurationInput!\n $condition: ModelConfigurationConditionInput\n ) {\n updateConfiguration(input: $input, condition: $condition) {\n id\n status\n category\n key\n value\n description\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteConfiguration = /* GraphQL */ `\n mutation DeleteConfiguration(\n $input: DeleteConfigurationInput!\n $condition: ModelConfigurationConditionInput\n ) {\n deleteConfiguration(input: $input, condition: $condition) {\n id\n status\n category\n key\n value\n description\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDataMigration = /* GraphQL */ `\n mutation CreateDataMigration(\n $input: CreateDataMigrationInput!\n $condition: ModelDataMigrationConditionInput\n ) {\n createDataMigration(input: $input, condition: $condition) {\n name\n notes\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDataMigration = /* GraphQL */ `\n mutation UpdateDataMigration(\n $input: UpdateDataMigrationInput!\n $condition: ModelDataMigrationConditionInput\n ) {\n updateDataMigration(input: $input, condition: $condition) {\n name\n notes\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDataMigration = /* GraphQL */ `\n mutation DeleteDataMigration(\n $input: DeleteDataMigrationInput!\n $condition: ModelDataMigrationConditionInput\n ) {\n deleteDataMigration(input: $input, condition: $condition) {\n name\n notes\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDeleteMyAccountRequest = /* GraphQL */ `\n mutation CreateDeleteMyAccountRequest(\n $input: CreateDeleteMyAccountRequestInput!\n $condition: ModelDeleteMyAccountRequestConditionInput\n ) {\n createDeleteMyAccountRequest(input: $input, condition: $condition) {\n id\n username\n appName\n requestedAt\n status\n reason\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDeleteMyAccountRequest = /* GraphQL */ `\n mutation UpdateDeleteMyAccountRequest(\n $input: UpdateDeleteMyAccountRequestInput!\n $condition: ModelDeleteMyAccountRequestConditionInput\n ) {\n updateDeleteMyAccountRequest(input: $input, condition: $condition) {\n id\n username\n appName\n requestedAt\n status\n reason\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDeleteMyAccountRequest = /* GraphQL */ `\n mutation DeleteDeleteMyAccountRequest(\n $input: DeleteDeleteMyAccountRequestInput!\n $condition: ModelDeleteMyAccountRequestConditionInput\n ) {\n deleteDeleteMyAccountRequest(input: $input, condition: $condition) {\n id\n username\n appName\n requestedAt\n status\n reason\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDeliveryGroup = /* GraphQL */ `\n mutation CreateDeliveryGroup(\n $input: CreateDeliveryGroupInput!\n $condition: ModelDeliveryGroupConditionInput\n ) {\n createDeliveryGroup(input: $input, condition: $condition) {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDeliveryGroup = /* GraphQL */ `\n mutation UpdateDeliveryGroup(\n $input: UpdateDeliveryGroupInput!\n $condition: ModelDeliveryGroupConditionInput\n ) {\n updateDeliveryGroup(input: $input, condition: $condition) {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDeliveryGroup = /* GraphQL */ `\n mutation DeleteDeliveryGroup(\n $input: DeleteDeliveryGroupInput!\n $condition: ModelDeliveryGroupConditionInput\n ) {\n deleteDeliveryGroup(input: $input, condition: $condition) {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDeliveryStaff = /* GraphQL */ `\n mutation CreateDeliveryStaff(\n $input: CreateDeliveryStaffInput!\n $condition: ModelDeliveryStaffConditionInput\n ) {\n createDeliveryStaff(input: $input, condition: $condition) {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDeliveryStaff = /* GraphQL */ `\n mutation UpdateDeliveryStaff(\n $input: UpdateDeliveryStaffInput!\n $condition: ModelDeliveryStaffConditionInput\n ) {\n updateDeliveryStaff(input: $input, condition: $condition) {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDeliveryStaff = /* GraphQL */ `\n mutation DeleteDeliveryStaff(\n $input: DeleteDeliveryStaffInput!\n $condition: ModelDeliveryStaffConditionInput\n ) {\n deleteDeliveryStaff(input: $input, condition: $condition) {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDeliveryStaffMonthlyStatement = /* GraphQL */ `\n mutation CreateDeliveryStaffMonthlyStatement(\n $input: CreateDeliveryStaffMonthlyStatementInput!\n $condition: ModelDeliveryStaffMonthlyStatementConditionInput\n ) {\n createDeliveryStaffMonthlyStatement(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n month\n earnedSToken\n completedOrderCount\n completedOrderDistanceInMeters\n completedOrderDurationInSeconds\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDeliveryStaffMonthlyStatement = /* GraphQL */ `\n mutation UpdateDeliveryStaffMonthlyStatement(\n $input: UpdateDeliveryStaffMonthlyStatementInput!\n $condition: ModelDeliveryStaffMonthlyStatementConditionInput\n ) {\n updateDeliveryStaffMonthlyStatement(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n month\n earnedSToken\n completedOrderCount\n completedOrderDistanceInMeters\n completedOrderDurationInSeconds\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDeliveryStaffMonthlyStatement = /* GraphQL */ `\n mutation DeleteDeliveryStaffMonthlyStatement(\n $input: DeleteDeliveryStaffMonthlyStatementInput!\n $condition: ModelDeliveryStaffMonthlyStatementConditionInput\n ) {\n deleteDeliveryStaffMonthlyStatement(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n month\n earnedSToken\n completedOrderCount\n completedOrderDistanceInMeters\n completedOrderDurationInSeconds\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDeliveryStaffOrder = /* GraphQL */ `\n mutation CreateDeliveryStaffOrder(\n $input: CreateDeliveryStaffOrderInput!\n $condition: ModelDeliveryStaffOrderConditionInput\n ) {\n createDeliveryStaffOrder(input: $input, condition: $condition) {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDeliveryStaffOrder = /* GraphQL */ `\n mutation UpdateDeliveryStaffOrder(\n $input: UpdateDeliveryStaffOrderInput!\n $condition: ModelDeliveryStaffOrderConditionInput\n ) {\n updateDeliveryStaffOrder(input: $input, condition: $condition) {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDeliveryStaffOrder = /* GraphQL */ `\n mutation DeleteDeliveryStaffOrder(\n $input: DeleteDeliveryStaffOrderInput!\n $condition: ModelDeliveryStaffOrderConditionInput\n ) {\n deleteDeliveryStaffOrder(input: $input, condition: $condition) {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDeliveryStaffStatement = /* GraphQL */ `\n mutation CreateDeliveryStaffStatement(\n $input: CreateDeliveryStaffStatementInput!\n $condition: ModelDeliveryStaffStatementConditionInput\n ) {\n createDeliveryStaffStatement(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n type\n date\n balance\n totalEarnedSToken\n totalCompletedOrderCount\n earnedSToken\n completedOrderCount\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDeliveryStaffStatement = /* GraphQL */ `\n mutation UpdateDeliveryStaffStatement(\n $input: UpdateDeliveryStaffStatementInput!\n $condition: ModelDeliveryStaffStatementConditionInput\n ) {\n updateDeliveryStaffStatement(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n type\n date\n balance\n totalEarnedSToken\n totalCompletedOrderCount\n earnedSToken\n completedOrderCount\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDeliveryStaffStatement = /* GraphQL */ `\n mutation DeleteDeliveryStaffStatement(\n $input: DeleteDeliveryStaffStatementInput!\n $condition: ModelDeliveryStaffStatementConditionInput\n ) {\n deleteDeliveryStaffStatement(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n type\n date\n balance\n totalEarnedSToken\n totalCompletedOrderCount\n earnedSToken\n completedOrderCount\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDeliveryStaffTransaction = /* GraphQL */ `\n mutation CreateDeliveryStaffTransaction(\n $input: CreateDeliveryStaffTransactionInput!\n $condition: ModelDeliveryStaffTransactionConditionInput\n ) {\n createDeliveryStaffTransaction(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDeliveryStaffTransaction = /* GraphQL */ `\n mutation UpdateDeliveryStaffTransaction(\n $input: UpdateDeliveryStaffTransactionInput!\n $condition: ModelDeliveryStaffTransactionConditionInput\n ) {\n updateDeliveryStaffTransaction(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDeliveryStaffTransaction = /* GraphQL */ `\n mutation DeleteDeliveryStaffTransaction(\n $input: DeleteDeliveryStaffTransactionInput!\n $condition: ModelDeliveryStaffTransactionConditionInput\n ) {\n deleteDeliveryStaffTransaction(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDementiaQuestionnaire = /* GraphQL */ `\n mutation CreateDementiaQuestionnaire(\n $input: CreateDementiaQuestionnaireInput!\n $condition: ModelDementiaQuestionnaireConditionInput\n ) {\n createDementiaQuestionnaire(input: $input, condition: $condition) {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDementiaQuestionnaire = /* GraphQL */ `\n mutation UpdateDementiaQuestionnaire(\n $input: UpdateDementiaQuestionnaireInput!\n $condition: ModelDementiaQuestionnaireConditionInput\n ) {\n updateDementiaQuestionnaire(input: $input, condition: $condition) {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDementiaQuestionnaire = /* GraphQL */ `\n mutation DeleteDementiaQuestionnaire(\n $input: DeleteDementiaQuestionnaireInput!\n $condition: ModelDementiaQuestionnaireConditionInput\n ) {\n deleteDementiaQuestionnaire(input: $input, condition: $condition) {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createDirectionCache = /* GraphQL */ `\n mutation CreateDirectionCache(\n $input: CreateDirectionCacheInput!\n $condition: ModelDirectionCacheConditionInput\n ) {\n createDirectionCache(input: $input, condition: $condition) {\n id\n startAddress\n endAddress\n startCoordinates\n endCoordinates\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateDirectionCache = /* GraphQL */ `\n mutation UpdateDirectionCache(\n $input: UpdateDirectionCacheInput!\n $condition: ModelDirectionCacheConditionInput\n ) {\n updateDirectionCache(input: $input, condition: $condition) {\n id\n startAddress\n endAddress\n startCoordinates\n endCoordinates\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteDirectionCache = /* GraphQL */ `\n mutation DeleteDirectionCache(\n $input: DeleteDirectionCacheInput!\n $condition: ModelDirectionCacheConditionInput\n ) {\n deleteDirectionCache(input: $input, condition: $condition) {\n id\n startAddress\n endAddress\n startCoordinates\n endCoordinates\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createElder = /* GraphQL */ `\n mutation CreateElder(\n $input: CreateElderInput!\n $condition: ModelElderConditionInput\n ) {\n createElder(input: $input, condition: $condition) {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const updateElder = /* GraphQL */ `\n mutation UpdateElder(\n $input: UpdateElderInput!\n $condition: ModelElderConditionInput\n ) {\n updateElder(input: $input, condition: $condition) {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const deleteElder = /* GraphQL */ `\n mutation DeleteElder(\n $input: DeleteElderInput!\n $condition: ModelElderConditionInput\n ) {\n deleteElder(input: $input, condition: $condition) {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const createElderDeliveryGroup = /* GraphQL */ `\n mutation CreateElderDeliveryGroup(\n $input: CreateElderDeliveryGroupInput!\n $condition: ModelElderDeliveryGroupConditionInput\n ) {\n createElderDeliveryGroup(input: $input, condition: $condition) {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateElderDeliveryGroup = /* GraphQL */ `\n mutation UpdateElderDeliveryGroup(\n $input: UpdateElderDeliveryGroupInput!\n $condition: ModelElderDeliveryGroupConditionInput\n ) {\n updateElderDeliveryGroup(input: $input, condition: $condition) {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteElderDeliveryGroup = /* GraphQL */ `\n mutation DeleteElderDeliveryGroup(\n $input: DeleteElderDeliveryGroupInput!\n $condition: ModelElderDeliveryGroupConditionInput\n ) {\n deleteElderDeliveryGroup(input: $input, condition: $condition) {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createElderDementiaSurvey = /* GraphQL */ `\n mutation CreateElderDementiaSurvey(\n $input: CreateElderDementiaSurveyInput!\n $condition: ModelElderDementiaSurveyConditionInput\n ) {\n createElderDementiaSurvey(input: $input, condition: $condition) {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n }\n`;\nexport const updateElderDementiaSurvey = /* GraphQL */ `\n mutation UpdateElderDementiaSurvey(\n $input: UpdateElderDementiaSurveyInput!\n $condition: ModelElderDementiaSurveyConditionInput\n ) {\n updateElderDementiaSurvey(input: $input, condition: $condition) {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n }\n`;\nexport const deleteElderDementiaSurvey = /* GraphQL */ `\n mutation DeleteElderDementiaSurvey(\n $input: DeleteElderDementiaSurveyInput!\n $condition: ModelElderDementiaSurveyConditionInput\n ) {\n deleteElderDementiaSurvey(input: $input, condition: $condition) {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n }\n`;\nexport const createElderForm = /* GraphQL */ `\n mutation CreateElderForm(\n $input: CreateElderFormInput!\n $condition: ModelElderFormConditionInput\n ) {\n createElderForm(input: $input, condition: $condition) {\n id\n elderId\n formId\n name\n fileS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n form {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const updateElderForm = /* GraphQL */ `\n mutation UpdateElderForm(\n $input: UpdateElderFormInput!\n $condition: ModelElderFormConditionInput\n ) {\n updateElderForm(input: $input, condition: $condition) {\n id\n elderId\n formId\n name\n fileS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n form {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const deleteElderForm = /* GraphQL */ `\n mutation DeleteElderForm(\n $input: DeleteElderFormInput!\n $condition: ModelElderFormConditionInput\n ) {\n deleteElderForm(input: $input, condition: $condition) {\n id\n elderId\n formId\n name\n fileS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n form {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const createElderTag = /* GraphQL */ `\n mutation CreateElderTag(\n $input: CreateElderTagInput!\n $condition: ModelElderTagConditionInput\n ) {\n createElderTag(input: $input, condition: $condition) {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const updateElderTag = /* GraphQL */ `\n mutation UpdateElderTag(\n $input: UpdateElderTagInput!\n $condition: ModelElderTagConditionInput\n ) {\n updateElderTag(input: $input, condition: $condition) {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const deleteElderTag = /* GraphQL */ `\n mutation DeleteElderTag(\n $input: DeleteElderTagInput!\n $condition: ModelElderTagConditionInput\n ) {\n deleteElderTag(input: $input, condition: $condition) {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const createEvent = /* GraphQL */ `\n mutation CreateEvent(\n $input: CreateEventInput!\n $condition: ModelEventConditionInput\n ) {\n createEvent(input: $input, condition: $condition) {\n key\n timestamp\n tableName\n clientId\n eventId\n eventName\n diff\n oldData\n newData\n note\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateEvent = /* GraphQL */ `\n mutation UpdateEvent(\n $input: UpdateEventInput!\n $condition: ModelEventConditionInput\n ) {\n updateEvent(input: $input, condition: $condition) {\n key\n timestamp\n tableName\n clientId\n eventId\n eventName\n diff\n oldData\n newData\n note\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteEvent = /* GraphQL */ `\n mutation DeleteEvent(\n $input: DeleteEventInput!\n $condition: ModelEventConditionInput\n ) {\n deleteEvent(input: $input, condition: $condition) {\n key\n timestamp\n tableName\n clientId\n eventId\n eventName\n diff\n oldData\n newData\n note\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createFacilityIndividual = /* GraphQL */ `\n mutation CreateFacilityIndividual(\n $input: CreateFacilityIndividualInput!\n $condition: ModelFacilityIndividualConditionInput\n ) {\n createFacilityIndividual(input: $input, condition: $condition) {\n id\n individualId\n facilityId\n individualClient {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateFacilityIndividual = /* GraphQL */ `\n mutation UpdateFacilityIndividual(\n $input: UpdateFacilityIndividualInput!\n $condition: ModelFacilityIndividualConditionInput\n ) {\n updateFacilityIndividual(input: $input, condition: $condition) {\n id\n individualId\n facilityId\n individualClient {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteFacilityIndividual = /* GraphQL */ `\n mutation DeleteFacilityIndividual(\n $input: DeleteFacilityIndividualInput!\n $condition: ModelFacilityIndividualConditionInput\n ) {\n deleteFacilityIndividual(input: $input, condition: $condition) {\n id\n individualId\n facilityId\n individualClient {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createFacilitySettings = /* GraphQL */ `\n mutation CreateFacilitySettings(\n $input: CreateFacilitySettingsInput!\n $condition: ModelFacilitySettingsConditionInput\n ) {\n createFacilitySettings(input: $input, condition: $condition) {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateFacilitySettings = /* GraphQL */ `\n mutation UpdateFacilitySettings(\n $input: UpdateFacilitySettingsInput!\n $condition: ModelFacilitySettingsConditionInput\n ) {\n updateFacilitySettings(input: $input, condition: $condition) {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteFacilitySettings = /* GraphQL */ `\n mutation DeleteFacilitySettings(\n $input: DeleteFacilitySettingsInput!\n $condition: ModelFacilitySettingsConditionInput\n ) {\n deleteFacilitySettings(input: $input, condition: $condition) {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createForm = /* GraphQL */ `\n mutation CreateForm(\n $input: CreateFormInput!\n $condition: ModelFormConditionInput\n ) {\n createForm(input: $input, condition: $condition) {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateForm = /* GraphQL */ `\n mutation UpdateForm(\n $input: UpdateFormInput!\n $condition: ModelFormConditionInput\n ) {\n updateForm(input: $input, condition: $condition) {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteForm = /* GraphQL */ `\n mutation DeleteForm(\n $input: DeleteFormInput!\n $condition: ModelFormConditionInput\n ) {\n deleteForm(input: $input, condition: $condition) {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createILinkOrder = /* GraphQL */ `\n mutation CreateILinkOrder(\n $input: CreateILinkOrderInput!\n $condition: ModelILinkOrderConditionInput\n ) {\n createILinkOrder(input: $input, condition: $condition) {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateILinkOrder = /* GraphQL */ `\n mutation UpdateILinkOrder(\n $input: UpdateILinkOrderInput!\n $condition: ModelILinkOrderConditionInput\n ) {\n updateILinkOrder(input: $input, condition: $condition) {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteILinkOrder = /* GraphQL */ `\n mutation DeleteILinkOrder(\n $input: DeleteILinkOrderInput!\n $condition: ModelILinkOrderConditionInput\n ) {\n deleteILinkOrder(input: $input, condition: $condition) {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createInvoice = /* GraphQL */ `\n mutation CreateInvoice(\n $input: CreateInvoiceInput!\n $condition: ModelInvoiceConditionInput\n ) {\n createInvoice(input: $input, condition: $condition) {\n id\n username\n transactionId\n orderId\n status\n clientId\n deliveryStaffId\n restaurantOwnerId\n type\n email\n carrier\n title\n taxIdNumber\n code\n note\n Transaction {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sentAt\n sentBy\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateInvoice = /* GraphQL */ `\n mutation UpdateInvoice(\n $input: UpdateInvoiceInput!\n $condition: ModelInvoiceConditionInput\n ) {\n updateInvoice(input: $input, condition: $condition) {\n id\n username\n transactionId\n orderId\n status\n clientId\n deliveryStaffId\n restaurantOwnerId\n type\n email\n carrier\n title\n taxIdNumber\n code\n note\n Transaction {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sentAt\n sentBy\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteInvoice = /* GraphQL */ `\n mutation DeleteInvoice(\n $input: DeleteInvoiceInput!\n $condition: ModelInvoiceConditionInput\n ) {\n deleteInvoice(input: $input, condition: $condition) {\n id\n username\n transactionId\n orderId\n status\n clientId\n deliveryStaffId\n restaurantOwnerId\n type\n email\n carrier\n title\n taxIdNumber\n code\n note\n Transaction {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sentAt\n sentBy\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createIssue = /* GraphQL */ `\n mutation CreateIssue(\n $input: CreateIssueInput!\n $condition: ModelIssueConditionInput\n ) {\n createIssue(input: $input, condition: $condition) {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateIssue = /* GraphQL */ `\n mutation UpdateIssue(\n $input: UpdateIssueInput!\n $condition: ModelIssueConditionInput\n ) {\n updateIssue(input: $input, condition: $condition) {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteIssue = /* GraphQL */ `\n mutation DeleteIssue(\n $input: DeleteIssueInput!\n $condition: ModelIssueConditionInput\n ) {\n deleteIssue(input: $input, condition: $condition) {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createIssueComment = /* GraphQL */ `\n mutation CreateIssueComment(\n $input: CreateIssueCommentInput!\n $condition: ModelIssueCommentConditionInput\n ) {\n createIssueComment(input: $input, condition: $condition) {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateIssueComment = /* GraphQL */ `\n mutation UpdateIssueComment(\n $input: UpdateIssueCommentInput!\n $condition: ModelIssueCommentConditionInput\n ) {\n updateIssueComment(input: $input, condition: $condition) {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteIssueComment = /* GraphQL */ `\n mutation DeleteIssueComment(\n $input: DeleteIssueCommentInput!\n $condition: ModelIssueCommentConditionInput\n ) {\n deleteIssueComment(input: $input, condition: $condition) {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createLalamoveOrder = /* GraphQL */ `\n mutation CreateLalamoveOrder(\n $input: CreateLalamoveOrderInput!\n $condition: ModelLalamoveOrderConditionInput\n ) {\n createLalamoveOrder(input: $input, condition: $condition) {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateLalamoveOrder = /* GraphQL */ `\n mutation UpdateLalamoveOrder(\n $input: UpdateLalamoveOrderInput!\n $condition: ModelLalamoveOrderConditionInput\n ) {\n updateLalamoveOrder(input: $input, condition: $condition) {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteLalamoveOrder = /* GraphQL */ `\n mutation DeleteLalamoveOrder(\n $input: DeleteLalamoveOrderInput!\n $condition: ModelLalamoveOrderConditionInput\n ) {\n deleteLalamoveOrder(input: $input, condition: $condition) {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createMembership = /* GraphQL */ `\n mutation CreateMembership(\n $input: CreateMembershipInput!\n $condition: ModelMembershipConditionInput\n ) {\n createMembership(input: $input, condition: $condition) {\n id\n clientId\n status\n membershipProgramId\n expiredAt\n discountRule\n discountPercentage\n extendedAt\n transactionIds\n logs\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateMembership = /* GraphQL */ `\n mutation UpdateMembership(\n $input: UpdateMembershipInput!\n $condition: ModelMembershipConditionInput\n ) {\n updateMembership(input: $input, condition: $condition) {\n id\n clientId\n status\n membershipProgramId\n expiredAt\n discountRule\n discountPercentage\n extendedAt\n transactionIds\n logs\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteMembership = /* GraphQL */ `\n mutation DeleteMembership(\n $input: DeleteMembershipInput!\n $condition: ModelMembershipConditionInput\n ) {\n deleteMembership(input: $input, condition: $condition) {\n id\n clientId\n status\n membershipProgramId\n expiredAt\n discountRule\n discountPercentage\n extendedAt\n transactionIds\n logs\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createMembershipProgram = /* GraphQL */ `\n mutation CreateMembershipProgram(\n $input: CreateMembershipProgramInput!\n $condition: ModelMembershipProgramConditionInput\n ) {\n createMembershipProgram(input: $input, condition: $condition) {\n id\n isActive\n name\n description\n durationInDays\n discountRule\n discountPercentage\n unit\n unitValue\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateMembershipProgram = /* GraphQL */ `\n mutation UpdateMembershipProgram(\n $input: UpdateMembershipProgramInput!\n $condition: ModelMembershipProgramConditionInput\n ) {\n updateMembershipProgram(input: $input, condition: $condition) {\n id\n isActive\n name\n description\n durationInDays\n discountRule\n discountPercentage\n unit\n unitValue\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteMembershipProgram = /* GraphQL */ `\n mutation DeleteMembershipProgram(\n $input: DeleteMembershipProgramInput!\n $condition: ModelMembershipProgramConditionInput\n ) {\n deleteMembershipProgram(input: $input, condition: $condition) {\n id\n isActive\n name\n description\n durationInDays\n discountRule\n discountPercentage\n unit\n unitValue\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createNotification = /* GraphQL */ `\n mutation CreateNotification(\n $input: CreateNotificationInput!\n $condition: ModelNotificationConditionInput\n ) {\n createNotification(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateNotification = /* GraphQL */ `\n mutation UpdateNotification(\n $input: UpdateNotificationInput!\n $condition: ModelNotificationConditionInput\n ) {\n updateNotification(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteNotification = /* GraphQL */ `\n mutation DeleteNotification(\n $input: DeleteNotificationInput!\n $condition: ModelNotificationConditionInput\n ) {\n deleteNotification(input: $input, condition: $condition) {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createOrder = /* GraphQL */ `\n mutation CreateOrder(\n $input: CreateOrderInput!\n $condition: ModelOrderConditionInput\n ) {\n createOrder(input: $input, condition: $condition) {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateOrder = /* GraphQL */ `\n mutation UpdateOrder(\n $input: UpdateOrderInput!\n $condition: ModelOrderConditionInput\n ) {\n updateOrder(input: $input, condition: $condition) {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteOrder = /* GraphQL */ `\n mutation DeleteOrder(\n $input: DeleteOrderInput!\n $condition: ModelOrderConditionInput\n ) {\n deleteOrder(input: $input, condition: $condition) {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const createOrderEvent = /* GraphQL */ `\n mutation CreateOrderEvent(\n $input: CreateOrderEventInput!\n $condition: ModelOrderEventConditionInput\n ) {\n createOrderEvent(input: $input, condition: $condition) {\n id\n orderId\n category\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateOrderEvent = /* GraphQL */ `\n mutation UpdateOrderEvent(\n $input: UpdateOrderEventInput!\n $condition: ModelOrderEventConditionInput\n ) {\n updateOrderEvent(input: $input, condition: $condition) {\n id\n orderId\n category\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteOrderEvent = /* GraphQL */ `\n mutation DeleteOrderEvent(\n $input: DeleteOrderEventInput!\n $condition: ModelOrderEventConditionInput\n ) {\n deleteOrderEvent(input: $input, condition: $condition) {\n id\n orderId\n category\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createOrderQuote = /* GraphQL */ `\n mutation CreateOrderQuote(\n $input: CreateOrderQuoteInput!\n $condition: ModelOrderQuoteConditionInput\n ) {\n createOrderQuote(input: $input, condition: $condition) {\n id\n restaurantId\n restaurantName\n originalStartAddress\n originalEndAddress\n code\n message\n distance\n startAddress\n endAddress\n calculationMethod\n totalFee\n deliveryStaffFee\n extraFee\n platformFee\n fixedDeliveryStaffFee\n defaultDeliveryStaffFee\n pandagoEstimatedFee\n uberEstimatedFee\n ilinkEstimatedFee\n lalamoveEstimatedFee\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n queryAddressMethod\n expirationUnixTime\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateOrderQuote = /* GraphQL */ `\n mutation UpdateOrderQuote(\n $input: UpdateOrderQuoteInput!\n $condition: ModelOrderQuoteConditionInput\n ) {\n updateOrderQuote(input: $input, condition: $condition) {\n id\n restaurantId\n restaurantName\n originalStartAddress\n originalEndAddress\n code\n message\n distance\n startAddress\n endAddress\n calculationMethod\n totalFee\n deliveryStaffFee\n extraFee\n platformFee\n fixedDeliveryStaffFee\n defaultDeliveryStaffFee\n pandagoEstimatedFee\n uberEstimatedFee\n ilinkEstimatedFee\n lalamoveEstimatedFee\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n queryAddressMethod\n expirationUnixTime\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteOrderQuote = /* GraphQL */ `\n mutation DeleteOrderQuote(\n $input: DeleteOrderQuoteInput!\n $condition: ModelOrderQuoteConditionInput\n ) {\n deleteOrderQuote(input: $input, condition: $condition) {\n id\n restaurantId\n restaurantName\n originalStartAddress\n originalEndAddress\n code\n message\n distance\n startAddress\n endAddress\n calculationMethod\n totalFee\n deliveryStaffFee\n extraFee\n platformFee\n fixedDeliveryStaffFee\n defaultDeliveryStaffFee\n pandagoEstimatedFee\n uberEstimatedFee\n ilinkEstimatedFee\n lalamoveEstimatedFee\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n queryAddressMethod\n expirationUnixTime\n createdAt\n updatedAt\n }\n }\n`;\nexport const createOrganization = /* GraphQL */ `\n mutation CreateOrganization(\n $input: CreateOrganizationInput!\n $condition: ModelOrganizationConditionInput\n ) {\n createOrganization(input: $input, condition: $condition) {\n id\n name\n description\n clients {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateOrganization = /* GraphQL */ `\n mutation UpdateOrganization(\n $input: UpdateOrganizationInput!\n $condition: ModelOrganizationConditionInput\n ) {\n updateOrganization(input: $input, condition: $condition) {\n id\n name\n description\n clients {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteOrganization = /* GraphQL */ `\n mutation DeleteOrganization(\n $input: DeleteOrganizationInput!\n $condition: ModelOrganizationConditionInput\n ) {\n deleteOrganization(input: $input, condition: $condition) {\n id\n name\n description\n clients {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createPandagoOrder = /* GraphQL */ `\n mutation CreatePandagoOrder(\n $input: CreatePandagoOrderInput!\n $condition: ModelPandagoOrderConditionInput\n ) {\n createPandagoOrder(input: $input, condition: $condition) {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updatePandagoOrder = /* GraphQL */ `\n mutation UpdatePandagoOrder(\n $input: UpdatePandagoOrderInput!\n $condition: ModelPandagoOrderConditionInput\n ) {\n updatePandagoOrder(input: $input, condition: $condition) {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deletePandagoOrder = /* GraphQL */ `\n mutation DeletePandagoOrder(\n $input: DeletePandagoOrderInput!\n $condition: ModelPandagoOrderConditionInput\n ) {\n deletePandagoOrder(input: $input, condition: $condition) {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createPartner = /* GraphQL */ `\n mutation CreatePartner(\n $input: CreatePartnerInput!\n $condition: ModelPartnerConditionInput\n ) {\n createPartner(input: $input, condition: $condition) {\n id\n isActive\n name\n description\n url\n logoUrl\n bannerS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updatePartner = /* GraphQL */ `\n mutation UpdatePartner(\n $input: UpdatePartnerInput!\n $condition: ModelPartnerConditionInput\n ) {\n updatePartner(input: $input, condition: $condition) {\n id\n isActive\n name\n description\n url\n logoUrl\n bannerS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deletePartner = /* GraphQL */ `\n mutation DeletePartner(\n $input: DeletePartnerInput!\n $condition: ModelPartnerConditionInput\n ) {\n deletePartner(input: $input, condition: $condition) {\n id\n isActive\n name\n description\n url\n logoUrl\n bannerS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createRecurringOrder = /* GraphQL */ `\n mutation CreateRecurringOrder(\n $input: CreateRecurringOrderInput!\n $condition: ModelRecurringOrderConditionInput\n ) {\n createRecurringOrder(input: $input, condition: $condition) {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateRecurringOrder = /* GraphQL */ `\n mutation UpdateRecurringOrder(\n $input: UpdateRecurringOrderInput!\n $condition: ModelRecurringOrderConditionInput\n ) {\n updateRecurringOrder(input: $input, condition: $condition) {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteRecurringOrder = /* GraphQL */ `\n mutation DeleteRecurringOrder(\n $input: DeleteRecurringOrderInput!\n $condition: ModelRecurringOrderConditionInput\n ) {\n deleteRecurringOrder(input: $input, condition: $condition) {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const createRecurringOrderLog = /* GraphQL */ `\n mutation CreateRecurringOrderLog(\n $input: CreateRecurringOrderLogInput!\n $condition: ModelRecurringOrderLogConditionInput\n ) {\n createRecurringOrderLog(input: $input, condition: $condition) {\n id\n orderIds\n recurringOrderId\n deliveryBy\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateRecurringOrderLog = /* GraphQL */ `\n mutation UpdateRecurringOrderLog(\n $input: UpdateRecurringOrderLogInput!\n $condition: ModelRecurringOrderLogConditionInput\n ) {\n updateRecurringOrderLog(input: $input, condition: $condition) {\n id\n orderIds\n recurringOrderId\n deliveryBy\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteRecurringOrderLog = /* GraphQL */ `\n mutation DeleteRecurringOrderLog(\n $input: DeleteRecurringOrderLogInput!\n $condition: ModelRecurringOrderLogConditionInput\n ) {\n deleteRecurringOrderLog(input: $input, condition: $condition) {\n id\n orderIds\n recurringOrderId\n deliveryBy\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createRestaurant = /* GraphQL */ `\n mutation CreateRestaurant(\n $input: CreateRestaurantInput!\n $condition: ModelRestaurantConditionInput\n ) {\n createRestaurant(input: $input, condition: $condition) {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const updateRestaurant = /* GraphQL */ `\n mutation UpdateRestaurant(\n $input: UpdateRestaurantInput!\n $condition: ModelRestaurantConditionInput\n ) {\n updateRestaurant(input: $input, condition: $condition) {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const deleteRestaurant = /* GraphQL */ `\n mutation DeleteRestaurant(\n $input: DeleteRestaurantInput!\n $condition: ModelRestaurantConditionInput\n ) {\n deleteRestaurant(input: $input, condition: $condition) {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const createRestaurantHoliday = /* GraphQL */ `\n mutation CreateRestaurantHoliday(\n $input: CreateRestaurantHolidayInput!\n $condition: ModelRestaurantHolidayConditionInput\n ) {\n createRestaurantHoliday(input: $input, condition: $condition) {\n id\n restaurantId\n year\n closedDays\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateRestaurantHoliday = /* GraphQL */ `\n mutation UpdateRestaurantHoliday(\n $input: UpdateRestaurantHolidayInput!\n $condition: ModelRestaurantHolidayConditionInput\n ) {\n updateRestaurantHoliday(input: $input, condition: $condition) {\n id\n restaurantId\n year\n closedDays\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteRestaurantHoliday = /* GraphQL */ `\n mutation DeleteRestaurantHoliday(\n $input: DeleteRestaurantHolidayInput!\n $condition: ModelRestaurantHolidayConditionInput\n ) {\n deleteRestaurantHoliday(input: $input, condition: $condition) {\n id\n restaurantId\n year\n closedDays\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createRestaurantMeal = /* GraphQL */ `\n mutation CreateRestaurantMeal(\n $input: CreateRestaurantMealInput!\n $condition: ModelRestaurantMealConditionInput\n ) {\n createRestaurantMeal(input: $input, condition: $condition) {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const updateRestaurantMeal = /* GraphQL */ `\n mutation UpdateRestaurantMeal(\n $input: UpdateRestaurantMealInput!\n $condition: ModelRestaurantMealConditionInput\n ) {\n updateRestaurantMeal(input: $input, condition: $condition) {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const deleteRestaurantMeal = /* GraphQL */ `\n mutation DeleteRestaurantMeal(\n $input: DeleteRestaurantMealInput!\n $condition: ModelRestaurantMealConditionInput\n ) {\n deleteRestaurantMeal(input: $input, condition: $condition) {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const createRestaurantMealTag = /* GraphQL */ `\n mutation CreateRestaurantMealTag(\n $input: CreateRestaurantMealTagInput!\n $condition: ModelRestaurantMealTagConditionInput\n ) {\n createRestaurantMealTag(input: $input, condition: $condition) {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const updateRestaurantMealTag = /* GraphQL */ `\n mutation UpdateRestaurantMealTag(\n $input: UpdateRestaurantMealTagInput!\n $condition: ModelRestaurantMealTagConditionInput\n ) {\n updateRestaurantMealTag(input: $input, condition: $condition) {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const deleteRestaurantMealTag = /* GraphQL */ `\n mutation DeleteRestaurantMealTag(\n $input: DeleteRestaurantMealTagInput!\n $condition: ModelRestaurantMealTagConditionInput\n ) {\n deleteRestaurantMealTag(input: $input, condition: $condition) {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const createRestaurantOwner = /* GraphQL */ `\n mutation CreateRestaurantOwner(\n $input: CreateRestaurantOwnerInput!\n $condition: ModelRestaurantOwnerConditionInput\n ) {\n createRestaurantOwner(input: $input, condition: $condition) {\n id\n isActive\n county\n username\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n email\n howDoYouKnowUs\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateRestaurantOwner = /* GraphQL */ `\n mutation UpdateRestaurantOwner(\n $input: UpdateRestaurantOwnerInput!\n $condition: ModelRestaurantOwnerConditionInput\n ) {\n updateRestaurantOwner(input: $input, condition: $condition) {\n id\n isActive\n county\n username\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n email\n howDoYouKnowUs\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteRestaurantOwner = /* GraphQL */ `\n mutation DeleteRestaurantOwner(\n $input: DeleteRestaurantOwnerInput!\n $condition: ModelRestaurantOwnerConditionInput\n ) {\n deleteRestaurantOwner(input: $input, condition: $condition) {\n id\n isActive\n county\n username\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n email\n howDoYouKnowUs\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createRestaurantSchedule = /* GraphQL */ `\n mutation CreateRestaurantSchedule(\n $input: CreateRestaurantScheduleInput!\n $condition: ModelRestaurantScheduleConditionInput\n ) {\n createRestaurantSchedule(input: $input, condition: $condition) {\n id\n restaurantId\n date\n mealSlot\n start\n end\n status\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateRestaurantSchedule = /* GraphQL */ `\n mutation UpdateRestaurantSchedule(\n $input: UpdateRestaurantScheduleInput!\n $condition: ModelRestaurantScheduleConditionInput\n ) {\n updateRestaurantSchedule(input: $input, condition: $condition) {\n id\n restaurantId\n date\n mealSlot\n start\n end\n status\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteRestaurantSchedule = /* GraphQL */ `\n mutation DeleteRestaurantSchedule(\n $input: DeleteRestaurantScheduleInput!\n $condition: ModelRestaurantScheduleConditionInput\n ) {\n deleteRestaurantSchedule(input: $input, condition: $condition) {\n id\n restaurantId\n date\n mealSlot\n start\n end\n status\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const createRestaurantTag = /* GraphQL */ `\n mutation CreateRestaurantTag(\n $input: CreateRestaurantTagInput!\n $condition: ModelRestaurantTagConditionInput\n ) {\n createRestaurantTag(input: $input, condition: $condition) {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const updateRestaurantTag = /* GraphQL */ `\n mutation UpdateRestaurantTag(\n $input: UpdateRestaurantTagInput!\n $condition: ModelRestaurantTagConditionInput\n ) {\n updateRestaurantTag(input: $input, condition: $condition) {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const deleteRestaurantTag = /* GraphQL */ `\n mutation DeleteRestaurantTag(\n $input: DeleteRestaurantTagInput!\n $condition: ModelRestaurantTagConditionInput\n ) {\n deleteRestaurantTag(input: $input, condition: $condition) {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const createSponsorship = /* GraphQL */ `\n mutation CreateSponsorship(\n $input: CreateSponsorshipInput!\n $condition: ModelSponsorshipConditionInput\n ) {\n createSponsorship(input: $input, condition: $condition) {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateSponsorship = /* GraphQL */ `\n mutation UpdateSponsorship(\n $input: UpdateSponsorshipInput!\n $condition: ModelSponsorshipConditionInput\n ) {\n updateSponsorship(input: $input, condition: $condition) {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteSponsorship = /* GraphQL */ `\n mutation DeleteSponsorship(\n $input: DeleteSponsorshipInput!\n $condition: ModelSponsorshipConditionInput\n ) {\n deleteSponsorship(input: $input, condition: $condition) {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createSponsorshipFulfillment = /* GraphQL */ `\n mutation CreateSponsorshipFulfillment(\n $input: CreateSponsorshipFulfillmentInput!\n $condition: ModelSponsorshipFulfillmentConditionInput\n ) {\n createSponsorshipFulfillment(input: $input, condition: $condition) {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateSponsorshipFulfillment = /* GraphQL */ `\n mutation UpdateSponsorshipFulfillment(\n $input: UpdateSponsorshipFulfillmentInput!\n $condition: ModelSponsorshipFulfillmentConditionInput\n ) {\n updateSponsorshipFulfillment(input: $input, condition: $condition) {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteSponsorshipFulfillment = /* GraphQL */ `\n mutation DeleteSponsorshipFulfillment(\n $input: DeleteSponsorshipFulfillmentInput!\n $condition: ModelSponsorshipFulfillmentConditionInput\n ) {\n deleteSponsorshipFulfillment(input: $input, condition: $condition) {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createSponsorshipProgram = /* GraphQL */ `\n mutation CreateSponsorshipProgram(\n $input: CreateSponsorshipProgramInput!\n $condition: ModelSponsorshipProgramConditionInput\n ) {\n createSponsorshipProgram(input: $input, condition: $condition) {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateSponsorshipProgram = /* GraphQL */ `\n mutation UpdateSponsorshipProgram(\n $input: UpdateSponsorshipProgramInput!\n $condition: ModelSponsorshipProgramConditionInput\n ) {\n updateSponsorshipProgram(input: $input, condition: $condition) {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteSponsorshipProgram = /* GraphQL */ `\n mutation DeleteSponsorshipProgram(\n $input: DeleteSponsorshipProgramInput!\n $condition: ModelSponsorshipProgramConditionInput\n ) {\n deleteSponsorshipProgram(input: $input, condition: $condition) {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createTag = /* GraphQL */ `\n mutation CreateTag(\n $input: CreateTagInput!\n $condition: ModelTagConditionInput\n ) {\n createTag(input: $input, condition: $condition) {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateTag = /* GraphQL */ `\n mutation UpdateTag(\n $input: UpdateTagInput!\n $condition: ModelTagConditionInput\n ) {\n updateTag(input: $input, condition: $condition) {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteTag = /* GraphQL */ `\n mutation DeleteTag(\n $input: DeleteTagInput!\n $condition: ModelTagConditionInput\n ) {\n deleteTag(input: $input, condition: $condition) {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createTransaction = /* GraphQL */ `\n mutation CreateTransaction(\n $input: CreateTransactionInput!\n $condition: ModelTransactionConditionInput\n ) {\n createTransaction(input: $input, condition: $condition) {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateTransaction = /* GraphQL */ `\n mutation UpdateTransaction(\n $input: UpdateTransactionInput!\n $condition: ModelTransactionConditionInput\n ) {\n updateTransaction(input: $input, condition: $condition) {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteTransaction = /* GraphQL */ `\n mutation DeleteTransaction(\n $input: DeleteTransactionInput!\n $condition: ModelTransactionConditionInput\n ) {\n deleteTransaction(input: $input, condition: $condition) {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createUberOrder = /* GraphQL */ `\n mutation CreateUberOrder(\n $input: CreateUberOrderInput!\n $condition: ModelUberOrderConditionInput\n ) {\n createUberOrder(input: $input, condition: $condition) {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateUberOrder = /* GraphQL */ `\n mutation UpdateUberOrder(\n $input: UpdateUberOrderInput!\n $condition: ModelUberOrderConditionInput\n ) {\n updateUberOrder(input: $input, condition: $condition) {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteUberOrder = /* GraphQL */ `\n mutation DeleteUberOrder(\n $input: DeleteUberOrderInput!\n $condition: ModelUberOrderConditionInput\n ) {\n deleteUberOrder(input: $input, condition: $condition) {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createUploadedOrder = /* GraphQL */ `\n mutation CreateUploadedOrder(\n $input: CreateUploadedOrderInput!\n $condition: ModelUploadedOrderConditionInput\n ) {\n createUploadedOrder(input: $input, condition: $condition) {\n id\n clientId\n restaurantId\n orderFileS3Key\n fileName\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateUploadedOrder = /* GraphQL */ `\n mutation UpdateUploadedOrder(\n $input: UpdateUploadedOrderInput!\n $condition: ModelUploadedOrderConditionInput\n ) {\n updateUploadedOrder(input: $input, condition: $condition) {\n id\n clientId\n restaurantId\n orderFileS3Key\n fileName\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteUploadedOrder = /* GraphQL */ `\n mutation DeleteUploadedOrder(\n $input: DeleteUploadedOrderInput!\n $condition: ModelUploadedOrderConditionInput\n ) {\n deleteUploadedOrder(input: $input, condition: $condition) {\n id\n clientId\n restaurantId\n orderFileS3Key\n fileName\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createUser = /* GraphQL */ `\n mutation CreateUser(\n $input: CreateUserInput!\n $condition: ModelUserConditionInput\n ) {\n createUser(input: $input, condition: $condition) {\n username\n isActive\n email\n notificationToken\n notificationTokenDeliveryStaff\n notificationTokenRestaurantOwner\n notificationTokenClient\n notificationTokenAdmin\n device {\n brand\n manufacturer\n modelName\n osName\n osVersion\n osBuildId\n appVersion\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n groups {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n`;\nexport const updateUser = /* GraphQL */ `\n mutation UpdateUser(\n $input: UpdateUserInput!\n $condition: ModelUserConditionInput\n ) {\n updateUser(input: $input, condition: $condition) {\n username\n isActive\n email\n notificationToken\n notificationTokenDeliveryStaff\n notificationTokenRestaurantOwner\n notificationTokenClient\n notificationTokenAdmin\n device {\n brand\n manufacturer\n modelName\n osName\n osVersion\n osBuildId\n appVersion\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n groups {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n`;\nexport const deleteUser = /* GraphQL */ `\n mutation DeleteUser(\n $input: DeleteUserInput!\n $condition: ModelUserConditionInput\n ) {\n deleteUser(input: $input, condition: $condition) {\n username\n isActive\n email\n notificationToken\n notificationTokenDeliveryStaff\n notificationTokenRestaurantOwner\n notificationTokenClient\n notificationTokenAdmin\n device {\n brand\n manufacturer\n modelName\n osName\n osVersion\n osBuildId\n appVersion\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n groups {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n`;\nexport const createUserGroup = /* GraphQL */ `\n mutation CreateUserGroup(\n $input: CreateUserGroupInput!\n $condition: ModelUserGroupConditionInput\n ) {\n createUserGroup(input: $input, condition: $condition) {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateUserGroup = /* GraphQL */ `\n mutation UpdateUserGroup(\n $input: UpdateUserGroupInput!\n $condition: ModelUserGroupConditionInput\n ) {\n updateUserGroup(input: $input, condition: $condition) {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteUserGroup = /* GraphQL */ `\n mutation DeleteUserGroup(\n $input: DeleteUserGroupInput!\n $condition: ModelUserGroupConditionInput\n ) {\n deleteUserGroup(input: $input, condition: $condition) {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const createWebhookEvent = /* GraphQL */ `\n mutation CreateWebhookEvent(\n $input: CreateWebhookEventInput!\n $condition: ModelWebhookEventConditionInput\n ) {\n createWebhookEvent(input: $input, condition: $condition) {\n id\n vendor\n headers\n body\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const updateWebhookEvent = /* GraphQL */ `\n mutation UpdateWebhookEvent(\n $input: UpdateWebhookEventInput!\n $condition: ModelWebhookEventConditionInput\n ) {\n updateWebhookEvent(input: $input, condition: $condition) {\n id\n vendor\n headers\n body\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const deleteWebhookEvent = /* GraphQL */ `\n mutation DeleteWebhookEvent(\n $input: DeleteWebhookEventInput!\n $condition: ModelWebhookEventConditionInput\n ) {\n deleteWebhookEvent(input: $input, condition: $condition) {\n id\n vendor\n headers\n body\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const quoteOrder = /* GraphQL */ `\n mutation QuoteOrder($input: QuoteOrderRequest!) {\n quoteOrder(input: $input) {\n data {\n orderQuoteId\n code\n message\n distance\n deliveryStaffFee\n startAddress\n endAddress\n overviewPolyline\n queryAddressMethod\n }\n }\n }\n`;\nexport const quoteMultiStopOrder = /* GraphQL */ `\n mutation QuoteMultiStopOrder($input: QuoteMultiStopOrderRequest!) {\n quoteMultiStopOrder(input: $input) {\n data {\n orderQuoteId\n code\n message\n distance\n deliveryStaffFee\n deliveryQueue\n }\n }\n }\n`;\nexport const queryAddress = /* GraphQL */ `\n mutation QueryAddress($input: QueryAddressRequest!) {\n queryAddress(input: $input) {\n success\n data {\n queryAddressMethod\n address\n lat\n lng\n }\n }\n }\n`;\nexport const queryPublicOrder = /* GraphQL */ `\n mutation QueryPublicOrder($input: queryPublicOrderRequest!) {\n queryPublicOrder(input: $input) {\n errors\n message\n data\n }\n }\n`;\nexport const registerDeliveryStaffOptions = /* GraphQL */ `\n mutation RegisterDeliveryStaffOptions(\n $input: registerDeliveryStaffOptionsRequest!\n ) {\n registerDeliveryStaffOptions(input: $input) {\n errors\n message\n data\n }\n }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const getAdmin = /* GraphQL */ `\n query GetAdmin($username: String!) {\n getAdmin(username: $username) {\n username\n name\n email\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listAdmins = /* GraphQL */ `\n query ListAdmins(\n $username: String\n $filter: ModelAdminFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listAdmins(\n username: $username\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n username\n name\n email\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getAuditTrail = /* GraphQL */ `\n query GetAuditTrail($id: ID!) {\n getAuditTrail(id: $id) {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listAuditTrails = /* GraphQL */ `\n query ListAuditTrails(\n $filter: ModelAuditTrailFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listAuditTrails(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getCard = /* GraphQL */ `\n query GetCard($id: ID!) {\n getCard(id: $id) {\n id\n username\n lastFour\n expDate\n type\n clientId\n nickname\n phoneNumber\n name\n email\n zipCode\n address\n tpId\n tpKey\n tpToken\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listCards = /* GraphQL */ `\n query ListCards(\n $filter: ModelCardFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCards(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n username\n lastFour\n expDate\n type\n clientId\n nickname\n phoneNumber\n name\n email\n zipCode\n address\n tpId\n tpKey\n tpToken\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClient = /* GraphQL */ `\n query GetClient($id: ID!) {\n getClient(id: $id) {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listClients = /* GraphQL */ `\n query ListClients(\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listClients(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientMonthlyStatement = /* GraphQL */ `\n query GetClientMonthlyStatement($id: ID!) {\n getClientMonthlyStatement(id: $id) {\n id\n clientName\n clientId\n county\n month\n completedOrderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n orderCountByIdentities {\n disadvantagedTypes\n serviceCode\n gender\n orderCount\n lunchCount\n dinnerCount\n }\n totalCost\n incompleteTotalCost\n total\n incompleteTotal\n elderStatistics {\n id\n gender\n county\n district\n disadvantagedTypes\n serviceCode\n disabilityLevel\n orderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n name\n identificationCardId\n birthday\n phoneNumber\n isIndigenous\n isLivingAlone\n cmsLevel\n lunchDates\n dinnerDates\n }\n deliveryStaffIds\n deliveryStaffFee\n deliveryPlatformCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listClientMonthlyStatements = /* GraphQL */ `\n query ListClientMonthlyStatements(\n $filter: ModelClientMonthlyStatementFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listClientMonthlyStatements(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientName\n clientId\n county\n month\n completedOrderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n orderCountByIdentities {\n disadvantagedTypes\n serviceCode\n gender\n orderCount\n lunchCount\n dinnerCount\n }\n totalCost\n incompleteTotalCost\n total\n incompleteTotal\n elderStatistics {\n id\n gender\n county\n district\n disadvantagedTypes\n serviceCode\n disabilityLevel\n orderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n name\n identificationCardId\n birthday\n phoneNumber\n isIndigenous\n isLivingAlone\n cmsLevel\n lunchDates\n dinnerDates\n }\n deliveryStaffIds\n deliveryStaffFee\n deliveryPlatformCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientOrganization = /* GraphQL */ `\n query GetClientOrganization($id: ID!) {\n getClientOrganization(id: $id) {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listClientOrganizations = /* GraphQL */ `\n query ListClientOrganizations(\n $filter: ModelClientOrganizationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listClientOrganizations(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientUser = /* GraphQL */ `\n query GetClientUser($clientId: ID!, $username: String!) {\n getClientUser(clientId: $clientId, username: $username) {\n clientId\n username\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listClientUsers = /* GraphQL */ `\n query ListClientUsers(\n $clientId: ID\n $username: ModelStringKeyConditionInput\n $filter: ModelClientUserFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listClientUsers(\n clientId: $clientId\n username: $username\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n clientId\n username\n isActive\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getConfiguration = /* GraphQL */ `\n query GetConfiguration($id: ID!) {\n getConfiguration(id: $id) {\n id\n status\n category\n key\n value\n description\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listConfigurations = /* GraphQL */ `\n query ListConfigurations(\n $filter: ModelConfigurationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listConfigurations(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n status\n category\n key\n value\n description\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDataMigration = /* GraphQL */ `\n query GetDataMigration($name: String!) {\n getDataMigration(name: $name) {\n name\n notes\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDataMigrations = /* GraphQL */ `\n query ListDataMigrations(\n $name: String\n $filter: ModelDataMigrationFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listDataMigrations(\n name: $name\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n name\n notes\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeleteMyAccountRequest = /* GraphQL */ `\n query GetDeleteMyAccountRequest($id: ID!) {\n getDeleteMyAccountRequest(id: $id) {\n id\n username\n appName\n requestedAt\n status\n reason\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDeleteMyAccountRequests = /* GraphQL */ `\n query ListDeleteMyAccountRequests(\n $filter: ModelDeleteMyAccountRequestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeleteMyAccountRequests(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n appName\n requestedAt\n status\n reason\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryGroup = /* GraphQL */ `\n query GetDeliveryGroup($id: ID!) {\n getDeliveryGroup(id: $id) {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDeliveryGroups = /* GraphQL */ `\n query ListDeliveryGroups(\n $filter: ModelDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryGroups(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaff = /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDeliveryStaffs = /* GraphQL */ `\n query ListDeliveryStaffs(\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryStaffs(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffMonthlyStatement = /* GraphQL */ `\n query GetDeliveryStaffMonthlyStatement($id: ID!) {\n getDeliveryStaffMonthlyStatement(id: $id) {\n id\n username\n deliveryStaffId\n month\n earnedSToken\n completedOrderCount\n completedOrderDistanceInMeters\n completedOrderDurationInSeconds\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDeliveryStaffMonthlyStatements = /* GraphQL */ `\n query ListDeliveryStaffMonthlyStatements(\n $filter: ModelDeliveryStaffMonthlyStatementFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryStaffMonthlyStatements(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n month\n earnedSToken\n completedOrderCount\n completedOrderDistanceInMeters\n completedOrderDurationInSeconds\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrder = /* GraphQL */ `\n query GetDeliveryStaffOrder($id: ID!) {\n getDeliveryStaffOrder(id: $id) {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDeliveryStaffOrders = /* GraphQL */ `\n query ListDeliveryStaffOrders(\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryStaffOrders(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffStatement = /* GraphQL */ `\n query GetDeliveryStaffStatement($id: ID!) {\n getDeliveryStaffStatement(id: $id) {\n id\n username\n deliveryStaffId\n type\n date\n balance\n totalEarnedSToken\n totalCompletedOrderCount\n earnedSToken\n completedOrderCount\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDeliveryStaffStatements = /* GraphQL */ `\n query ListDeliveryStaffStatements(\n $filter: ModelDeliveryStaffStatementFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryStaffStatements(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n type\n date\n balance\n totalEarnedSToken\n totalCompletedOrderCount\n earnedSToken\n completedOrderCount\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffTransaction = /* GraphQL */ `\n query GetDeliveryStaffTransaction($id: ID!) {\n getDeliveryStaffTransaction(id: $id) {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDeliveryStaffTransactions = /* GraphQL */ `\n query ListDeliveryStaffTransactions(\n $filter: ModelDeliveryStaffTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryStaffTransactions(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDementiaQuestionnaire = /* GraphQL */ `\n query GetDementiaQuestionnaire($id: ID!) {\n getDementiaQuestionnaire(id: $id) {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDementiaQuestionnaires = /* GraphQL */ `\n query ListDementiaQuestionnaires(\n $filter: ModelDementiaQuestionnaireFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDementiaQuestionnaires(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDirectionCache = /* GraphQL */ `\n query GetDirectionCache($id: ID!) {\n getDirectionCache(id: $id) {\n id\n startAddress\n endAddress\n startCoordinates\n endCoordinates\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listDirectionCaches = /* GraphQL */ `\n query ListDirectionCaches(\n $filter: ModelDirectionCacheFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDirectionCaches(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n startAddress\n endAddress\n startCoordinates\n endCoordinates\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getElder = /* GraphQL */ `\n query GetElder($id: ID!) {\n getElder(id: $id) {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const listElders = /* GraphQL */ `\n query ListElders(\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listElders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getElderDeliveryGroup = /* GraphQL */ `\n query GetElderDeliveryGroup($id: ID!) {\n getElderDeliveryGroup(id: $id) {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listElderDeliveryGroups = /* GraphQL */ `\n query ListElderDeliveryGroups(\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listElderDeliveryGroups(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getElderDementiaSurvey = /* GraphQL */ `\n query GetElderDementiaSurvey($id: ID!) {\n getElderDementiaSurvey(id: $id) {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n }\n`;\nexport const listElderDementiaSurveys = /* GraphQL */ `\n query ListElderDementiaSurveys(\n $filter: ModelElderDementiaSurveyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listElderDementiaSurveys(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getElderForm = /* GraphQL */ `\n query GetElderForm($id: ID!) {\n getElderForm(id: $id) {\n id\n elderId\n formId\n name\n fileS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n form {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const listElderForms = /* GraphQL */ `\n query ListElderForms(\n $filter: ModelElderFormFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listElderForms(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n elderId\n formId\n name\n fileS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n form {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getElderTag = /* GraphQL */ `\n query GetElderTag($id: ID!) {\n getElderTag(id: $id) {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const listElderTags = /* GraphQL */ `\n query ListElderTags(\n $filter: ModelElderTagFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listElderTags(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEvent = /* GraphQL */ `\n query GetEvent($key: String!, $timestamp: AWSDateTime!) {\n getEvent(key: $key, timestamp: $timestamp) {\n key\n timestamp\n tableName\n clientId\n eventId\n eventName\n diff\n oldData\n newData\n note\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listEvents = /* GraphQL */ `\n query ListEvents(\n $key: String\n $timestamp: ModelStringKeyConditionInput\n $filter: ModelEventFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listEvents(\n key: $key\n timestamp: $timestamp\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n key\n timestamp\n tableName\n clientId\n eventId\n eventName\n diff\n oldData\n newData\n note\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getFacilityIndividual = /* GraphQL */ `\n query GetFacilityIndividual($id: ID!) {\n getFacilityIndividual(id: $id) {\n id\n individualId\n facilityId\n individualClient {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listFacilityIndividuals = /* GraphQL */ `\n query ListFacilityIndividuals(\n $filter: ModelFacilityIndividualFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listFacilityIndividuals(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n individualId\n facilityId\n individualClient {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getFacilitySettings = /* GraphQL */ `\n query GetFacilitySettings($id: ID!) {\n getFacilitySettings(id: $id) {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listFacilitySettingss = /* GraphQL */ `\n query ListFacilitySettingss(\n $filter: ModelFacilitySettingsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listFacilitySettingss(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrder = /* GraphQL */ `\n query GetILinkOrder($id: ID!) {\n getILinkOrder(id: $id) {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listILinkOrders = /* GraphQL */ `\n query ListILinkOrders(\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listILinkOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getInvoice = /* GraphQL */ `\n query GetInvoice($id: ID!) {\n getInvoice(id: $id) {\n id\n username\n transactionId\n orderId\n status\n clientId\n deliveryStaffId\n restaurantOwnerId\n type\n email\n carrier\n title\n taxIdNumber\n code\n note\n Transaction {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sentAt\n sentBy\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listInvoices = /* GraphQL */ `\n query ListInvoices(\n $filter: ModelInvoiceFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listInvoices(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n username\n transactionId\n orderId\n status\n clientId\n deliveryStaffId\n restaurantOwnerId\n type\n email\n carrier\n title\n taxIdNumber\n code\n note\n Transaction {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n createdAt\n createdBy\n updatedAt\n updatedBy\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sentAt\n sentBy\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssue = /* GraphQL */ `\n query GetIssue($id: ID!) {\n getIssue(id: $id) {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listIssues = /* GraphQL */ `\n query ListIssues(\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listIssues(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssueComment = /* GraphQL */ `\n query GetIssueComment($id: ID!) {\n getIssueComment(id: $id) {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listIssueComments = /* GraphQL */ `\n query ListIssueComments(\n $filter: ModelIssueCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listIssueComments(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrder = /* GraphQL */ `\n query GetLalamoveOrder($id: ID!) {\n getLalamoveOrder(id: $id) {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listLalamoveOrders = /* GraphQL */ `\n query ListLalamoveOrders(\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listLalamoveOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getMembership = /* GraphQL */ `\n query GetMembership($id: ID!) {\n getMembership(id: $id) {\n id\n clientId\n status\n membershipProgramId\n expiredAt\n discountRule\n discountPercentage\n extendedAt\n transactionIds\n logs\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listMemberships = /* GraphQL */ `\n query ListMemberships(\n $filter: ModelMembershipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMemberships(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n clientId\n status\n membershipProgramId\n expiredAt\n discountRule\n discountPercentage\n extendedAt\n transactionIds\n logs\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getMembershipProgram = /* GraphQL */ `\n query GetMembershipProgram($id: ID!) {\n getMembershipProgram(id: $id) {\n id\n isActive\n name\n description\n durationInDays\n discountRule\n discountPercentage\n unit\n unitValue\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listMembershipPrograms = /* GraphQL */ `\n query ListMembershipPrograms(\n $filter: ModelMembershipProgramFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMembershipPrograms(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n name\n description\n durationInDays\n discountRule\n discountPercentage\n unit\n unitValue\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getNotification = /* GraphQL */ `\n query GetNotification($id: ID!) {\n getNotification(id: $id) {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listNotifications = /* GraphQL */ `\n query ListNotifications(\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listNotifications(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getOrder = /* GraphQL */ `\n query GetOrder($id: ID!) {\n getOrder(id: $id) {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listOrders = /* GraphQL */ `\n query ListOrders(\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrderEvent = /* GraphQL */ `\n query GetOrderEvent($id: ID!) {\n getOrderEvent(id: $id) {\n id\n orderId\n category\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listOrderEvents = /* GraphQL */ `\n query ListOrderEvents(\n $filter: ModelOrderEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOrderEvents(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n orderId\n category\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getOrderQuote = /* GraphQL */ `\n query GetOrderQuote($id: ID!) {\n getOrderQuote(id: $id) {\n id\n restaurantId\n restaurantName\n originalStartAddress\n originalEndAddress\n code\n message\n distance\n startAddress\n endAddress\n calculationMethod\n totalFee\n deliveryStaffFee\n extraFee\n platformFee\n fixedDeliveryStaffFee\n defaultDeliveryStaffFee\n pandagoEstimatedFee\n uberEstimatedFee\n ilinkEstimatedFee\n lalamoveEstimatedFee\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n queryAddressMethod\n expirationUnixTime\n createdAt\n updatedAt\n }\n }\n`;\nexport const listOrderQuotes = /* GraphQL */ `\n query ListOrderQuotes(\n $filter: ModelOrderQuoteFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOrderQuotes(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n restaurantId\n restaurantName\n originalStartAddress\n originalEndAddress\n code\n message\n distance\n startAddress\n endAddress\n calculationMethod\n totalFee\n deliveryStaffFee\n extraFee\n platformFee\n fixedDeliveryStaffFee\n defaultDeliveryStaffFee\n pandagoEstimatedFee\n uberEstimatedFee\n ilinkEstimatedFee\n lalamoveEstimatedFee\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n queryAddressMethod\n expirationUnixTime\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getOrganization = /* GraphQL */ `\n query GetOrganization($id: ID!) {\n getOrganization(id: $id) {\n id\n name\n description\n clients {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listOrganizations = /* GraphQL */ `\n query ListOrganizations(\n $filter: ModelOrganizationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOrganizations(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n description\n clients {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrder = /* GraphQL */ `\n query GetPandagoOrder($id: ID!) {\n getPandagoOrder(id: $id) {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listPandagoOrders = /* GraphQL */ `\n query ListPandagoOrders(\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPandagoOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrder = /* GraphQL */ `\n query GetRecurringOrder($id: ID!) {\n getRecurringOrder(id: $id) {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listRecurringOrders = /* GraphQL */ `\n query ListRecurringOrders(\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRecurringOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrderLog = /* GraphQL */ `\n query GetRecurringOrderLog($id: ID!) {\n getRecurringOrderLog(id: $id) {\n id\n orderIds\n recurringOrderId\n deliveryBy\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listRecurringOrderLogs = /* GraphQL */ `\n query ListRecurringOrderLogs(\n $filter: ModelRecurringOrderLogFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRecurringOrderLogs(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n orderIds\n recurringOrderId\n deliveryBy\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantOwner = /* GraphQL */ `\n query GetRestaurantOwner($id: ID!) {\n getRestaurantOwner(id: $id) {\n id\n isActive\n county\n username\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n email\n howDoYouKnowUs\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listRestaurantOwners = /* GraphQL */ `\n query ListRestaurantOwners(\n $filter: ModelRestaurantOwnerFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurantOwners(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n county\n username\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n email\n howDoYouKnowUs\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorship = /* GraphQL */ `\n query GetSponsorship($id: ID!) {\n getSponsorship(id: $id) {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listSponsorships = /* GraphQL */ `\n query ListSponsorships(\n $filter: ModelSponsorshipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listSponsorships(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorshipFulfillment = /* GraphQL */ `\n query GetSponsorshipFulfillment($id: ID!) {\n getSponsorshipFulfillment(id: $id) {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listSponsorshipFulfillments = /* GraphQL */ `\n query ListSponsorshipFulfillments(\n $filter: ModelSponsorshipFulfillmentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listSponsorshipFulfillments(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorshipProgram = /* GraphQL */ `\n query GetSponsorshipProgram($id: ID!) {\n getSponsorshipProgram(id: $id) {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listSponsorshipPrograms = /* GraphQL */ `\n query ListSponsorshipPrograms(\n $filter: ModelSponsorshipProgramFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listSponsorshipPrograms(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getTransaction = /* GraphQL */ `\n query GetTransaction($id: ID!) {\n getTransaction(id: $id) {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listTransactions = /* GraphQL */ `\n query ListTransactions(\n $filter: ModelTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTransactions(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrder = /* GraphQL */ `\n query GetUberOrder($id: ID!) {\n getUberOrder(id: $id) {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listUberOrders = /* GraphQL */ `\n query ListUberOrders(\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUberOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUploadedOrder = /* GraphQL */ `\n query GetUploadedOrder($id: ID!) {\n getUploadedOrder(id: $id) {\n id\n clientId\n restaurantId\n orderFileS3Key\n fileName\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listUploadedOrders = /* GraphQL */ `\n query ListUploadedOrders(\n $filter: ModelUploadedOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUploadedOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n clientId\n restaurantId\n orderFileS3Key\n fileName\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUser = /* GraphQL */ `\n query GetUser($username: String!) {\n getUser(username: $username) {\n username\n isActive\n email\n notificationToken\n notificationTokenDeliveryStaff\n notificationTokenRestaurantOwner\n notificationTokenClient\n notificationTokenAdmin\n device {\n brand\n manufacturer\n modelName\n osName\n osVersion\n osBuildId\n appVersion\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n groups {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n`;\nexport const listUsers = /* GraphQL */ `\n query ListUsers(\n $username: String\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listUsers(\n username: $username\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n username\n isActive\n email\n notificationToken\n notificationTokenDeliveryStaff\n notificationTokenRestaurantOwner\n notificationTokenClient\n notificationTokenAdmin\n device {\n brand\n manufacturer\n modelName\n osName\n osVersion\n osBuildId\n appVersion\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n groups {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getUserGroup = /* GraphQL */ `\n query GetUserGroup($username: String!, $group: String!) {\n getUserGroup(username: $username, group: $group) {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listUserGroups = /* GraphQL */ `\n query ListUserGroups(\n $username: String\n $group: ModelStringKeyConditionInput\n $filter: ModelUserGroupFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listUserGroups(\n username: $username\n group: $group\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getWebhookEvent = /* GraphQL */ `\n query GetWebhookEvent($id: ID!) {\n getWebhookEvent(id: $id) {\n id\n vendor\n headers\n body\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listWebhookEvents = /* GraphQL */ `\n query ListWebhookEvents(\n $filter: ModelWebhookEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listWebhookEvents(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n vendor\n headers\n body\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getAuditTrailsByUsernameByTimestamp = /* GraphQL */ `\n query GetAuditTrailsByUsernameByTimestamp(\n $username: String\n $timestamp: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelAuditTrailFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getAuditTrailsByUsernameByTimestamp(\n username: $username\n timestamp: $timestamp\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getAuditTrailsByGroupNameByTimestamp = /* GraphQL */ `\n query GetAuditTrailsByGroupNameByTimestamp(\n $groupName: String\n $timestamp: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelAuditTrailFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getAuditTrailsByGroupNameByTimestamp(\n groupName: $groupName\n timestamp: $timestamp\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getAuditTrailsByOrganizationIdByTimestamp = /* GraphQL */ `\n query GetAuditTrailsByOrganizationIdByTimestamp(\n $organizationId: String\n $timestamp: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelAuditTrailFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getAuditTrailsByOrganizationIdByTimestamp(\n organizationId: $organizationId\n timestamp: $timestamp\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getAuditTrailsByFacilityIdByTimestamp = /* GraphQL */ `\n query GetAuditTrailsByFacilityIdByTimestamp(\n $facilityId: String\n $timestamp: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelAuditTrailFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getAuditTrailsByFacilityIdByTimestamp(\n facilityId: $facilityId\n timestamp: $timestamp\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getAuditTrailsByClientIdByTimestamp = /* GraphQL */ `\n query GetAuditTrailsByClientIdByTimestamp(\n $clientId: String\n $timestamp: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelAuditTrailFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getAuditTrailsByClientIdByTimestamp(\n clientId: $clientId\n timestamp: $timestamp\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n timestamp\n username\n email\n name\n groupName\n action\n note\n organizationId\n facilityId\n clientId\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getCardsByUsernameByCreatedAt = /* GraphQL */ `\n query GetCardsByUsernameByCreatedAt(\n $username: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCardFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getCardsByUsernameByCreatedAt(\n username: $username\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n lastFour\n expDate\n type\n clientId\n nickname\n phoneNumber\n name\n email\n zipCode\n address\n tpId\n tpKey\n tpToken\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getCardsByClientIdByCreatedAt = /* GraphQL */ `\n query GetCardsByClientIdByCreatedAt(\n $clientId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCardFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getCardsByClientIdByCreatedAt(\n clientId: $clientId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n lastFour\n expDate\n type\n clientId\n nickname\n phoneNumber\n name\n email\n zipCode\n address\n tpId\n tpKey\n tpToken\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientsByCountyByCreatedAt = /* GraphQL */ `\n query GetClientsByCountyByCreatedAt(\n $county: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientsByCountyByCreatedAt(\n county: $county\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientsByTypeByCounty = /* GraphQL */ `\n query GetClientsByTypeByCounty(\n $type: ClientType\n $county: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientsByTypeByCounty(\n type: $type\n county: $county\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientsByUsernameByType = /* GraphQL */ `\n query GetClientsByUsernameByType(\n $username: String\n $type: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientsByUsernameByType(\n username: $username\n type: $type\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientsByOrganizationByType = /* GraphQL */ `\n query GetClientsByOrganizationByType(\n $organizationId: ID\n $type: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientsByOrganizationByType(\n organizationId: $organizationId\n type: $type\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientsByShortId = /* GraphQL */ `\n query GetClientsByShortId(\n $shortId: String\n $sortDirection: ModelSortDirection\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientsByShortId(\n shortId: $shortId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n mealStatisticsSettingsItems {\n mealItemName\n restaurantId\n restaurantName\n tags\n }\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientMonthlyStatementsByClientIdByMonth = /* GraphQL */ `\n query GetClientMonthlyStatementsByClientIdByMonth(\n $clientId: ID\n $month: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientMonthlyStatementFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientMonthlyStatementsByClientIdByMonth(\n clientId: $clientId\n month: $month\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientName\n clientId\n county\n month\n completedOrderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n orderCountByIdentities {\n disadvantagedTypes\n serviceCode\n gender\n orderCount\n lunchCount\n dinnerCount\n }\n totalCost\n incompleteTotalCost\n total\n incompleteTotal\n elderStatistics {\n id\n gender\n county\n district\n disadvantagedTypes\n serviceCode\n disabilityLevel\n orderCount\n incompleteOrderCount\n lunchCount\n incompleteLunchCount\n dinnerCount\n incompleteDinnerCount\n name\n identificationCardId\n birthday\n phoneNumber\n isIndigenous\n isLivingAlone\n cmsLevel\n lunchDates\n dinnerDates\n }\n deliveryStaffIds\n deliveryStaffFee\n deliveryPlatformCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientOrganizationByOrganization = /* GraphQL */ `\n query GetClientOrganizationByOrganization(\n $organizationId: ID\n $clientId: ModelIDKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientOrganizationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientOrganizationByOrganization(\n organizationId: $organizationId\n clientId: $clientId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientOrganizationByClient = /* GraphQL */ `\n query GetClientOrganizationByClient(\n $clientId: ID\n $organizationId: ModelIDKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientOrganizationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientOrganizationByClient(\n clientId: $clientId\n organizationId: $organizationId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n organizationId\n clientId\n visitorMode\n clientMode\n elderSetting\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getConfigurationByCategoryByStatus = /* GraphQL */ `\n query GetConfigurationByCategoryByStatus(\n $category: String\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelConfigurationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getConfigurationByCategoryByStatus(\n category: $category\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n status\n category\n key\n value\n description\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getConfigurationByCategoryByKey = /* GraphQL */ `\n query GetConfigurationByCategoryByKey(\n $category: String\n $key: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelConfigurationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getConfigurationByCategoryByKey(\n category: $category\n key: $key\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n status\n category\n key\n value\n description\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const listDeleteMyAccountRequestByUsername = /* GraphQL */ `\n query ListDeleteMyAccountRequestByUsername(\n $username: String\n $sortDirection: ModelSortDirection\n $filter: ModelDeleteMyAccountRequestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeleteMyAccountRequestByUsername(\n username: $username\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n appName\n requestedAt\n status\n reason\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryGroupsByClientByIsActive = /* GraphQL */ `\n query GetDeliveryGroupsByClientByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryGroupsByClientByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffsByCountyByCreatedAt = /* GraphQL */ `\n query GetDeliveryStaffsByCountyByCreatedAt(\n $county: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffsByCountyByCreatedAt(\n county: $county\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffsByCountyByIsActive = /* GraphQL */ `\n query GetDeliveryStaffsByCountyByIsActive(\n $county: String\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffsByCountyByIsActive(\n county: $county\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffsByIsActiveByCreatedAt = /* GraphQL */ `\n query GetDeliveryStaffsByIsActiveByCreatedAt(\n $isActive: Int\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffsByIsActiveByCreatedAt(\n isActive: $isActive\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffsByClientIdByIsActive = /* GraphQL */ `\n query GetDeliveryStaffsByClientIdByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffsByClientIdByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffsByUsername = /* GraphQL */ `\n query GetDeliveryStaffsByUsername(\n $username: String\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffsByUsername(\n username: $username\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffMonthlyStatementsByDeliveryStaffIdByMonth = /* GraphQL */ `\n query GetDeliveryStaffMonthlyStatementsByDeliveryStaffIdByMonth(\n $deliveryStaffId: ID\n $month: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffMonthlyStatementFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffMonthlyStatementsByDeliveryStaffIdByMonth(\n deliveryStaffId: $deliveryStaffId\n month: $month\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n month\n earnedSToken\n completedOrderCount\n completedOrderDistanceInMeters\n completedOrderDurationInSeconds\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByStaffByStatus = /* GraphQL */ `\n query GetDeliveryStaffOrdersByStaffByStatus(\n $deliveryStaffId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByStaffByStatus(\n deliveryStaffId: $deliveryStaffId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByStaffByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByStaffByDate(\n $deliveryStaffId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByStaffByDate(\n deliveryStaffId: $deliveryStaffId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByStatusByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByStatusByDate(\n $status: DeliveryStaffOrderStatus\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByStatusByDate(\n status: $status\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByCountyByDeliveryBy = /* GraphQL */ `\n query GetDeliveryStaffOrdersByCountyByDeliveryBy(\n $county: String\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByCountyByDeliveryBy(\n county: $county\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByOrder = /* GraphQL */ `\n query GetDeliveryStaffOrdersByOrder(\n $orderId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByOrder(\n orderId: $orderId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByElderByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByElderByDate(\n $elderId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByElderByDate(\n elderId: $elderId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByClientByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByClientByDate(\n $clientId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByClientByDate(\n clientId: $clientId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elderDementiaSurvey {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffStatementsByDeliveryStaffIdByDate = /* GraphQL */ `\n query GetDeliveryStaffStatementsByDeliveryStaffIdByDate(\n $deliveryStaffId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffStatementFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffStatementsByDeliveryStaffIdByDate(\n deliveryStaffId: $deliveryStaffId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n type\n date\n balance\n totalEarnedSToken\n totalCompletedOrderCount\n earnedSToken\n completedOrderCount\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffStatementsByTypeByDate = /* GraphQL */ `\n query GetDeliveryStaffStatementsByTypeByDate(\n $type: DeliveryStaffStatementType\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffStatementFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffStatementsByTypeByDate(\n type: $type\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n type\n date\n balance\n totalEarnedSToken\n totalCompletedOrderCount\n earnedSToken\n completedOrderCount\n incompleteOrderCount\n abandonedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffTransactionByDeliveryStaffIdByCreatedAt = /* GraphQL */ `\n query GetDeliveryStaffTransactionByDeliveryStaffIdByCreatedAt(\n $deliveryStaffId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffTransactionByDeliveryStaffIdByCreatedAt(\n deliveryStaffId: $deliveryStaffId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffTransactionByStatusByCreatedAt = /* GraphQL */ `\n query GetDeliveryStaffTransactionByStatusByCreatedAt(\n $status: DeliveryStaffTransactionStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffTransactionByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffTransactionBytypeByCreatedAt = /* GraphQL */ `\n query GetDeliveryStaffTransactionBytypeByCreatedAt(\n $type: DeliveryStaffTransactionType\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffTransactionBytypeByCreatedAt(\n type: $type\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n status\n type\n amount\n summary\n note\n orderId\n deliveryStaffOrderId\n deliveryStaffMonthlyStatmentId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n licensePlate\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n balance\n totalEarnedSToken\n sTokenLastMonth\n completedOrderCount\n sTokenReportedAt\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDementiaQuestionnaireByCategoryByCreatedAt = /* GraphQL */ `\n query GetDementiaQuestionnaireByCategoryByCreatedAt(\n $category: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDementiaQuestionnaireFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDementiaQuestionnaireByCategoryByCreatedAt(\n category: $category\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDementiaQuestionnaireByIsActiveByCreatedAt = /* GraphQL */ `\n query GetDementiaQuestionnaireByIsActiveByCreatedAt(\n $isActive: Int\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDementiaQuestionnaireFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDementiaQuestionnaireByIsActiveByCreatedAt(\n isActive: $isActive\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getDirectionCachesByStartCoordinatesByEndCoordinates = /* GraphQL */ `\n query GetDirectionCachesByStartCoordinatesByEndCoordinates(\n $startCoordinates: String\n $endCoordinates: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDirectionCacheFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDirectionCachesByStartCoordinatesByEndCoordinates(\n startCoordinates: $startCoordinates\n endCoordinates: $endCoordinates\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n startAddress\n endAddress\n startCoordinates\n endCoordinates\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getEldersByClient = /* GraphQL */ `\n query GetEldersByClient(\n $clientId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClient(\n clientId: $clientId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByClientByStatus = /* GraphQL */ `\n query GetEldersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByClientByName = /* GraphQL */ `\n query GetEldersByClientByName(\n $clientId: ID\n $name: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByName(\n clientId: $clientId\n name: $name\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByClientByLinkGroupName = /* GraphQL */ `\n query GetEldersByClientByLinkGroupName(\n $clientId: ID\n $linkGroupName: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByLinkGroupName(\n clientId: $clientId\n linkGroupName: $linkGroupName\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByClientByServiceCode = /* GraphQL */ `\n query GetEldersByClientByServiceCode(\n $clientId: ID\n $serviceCode: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByServiceCode(\n clientId: $clientId\n serviceCode: $serviceCode\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByDeliveryGroup = /* GraphQL */ `\n query GetEldersByDeliveryGroup(\n $deliveryGroupId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByDeliveryGroup(\n deliveryGroupId: $deliveryGroupId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByCountyByCreatedAt = /* GraphQL */ `\n query GetEldersByCountyByCreatedAt(\n $county: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByCountyByCreatedAt(\n county: $county\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByCountyByStatus = /* GraphQL */ `\n query GetEldersByCountyByStatus(\n $county: String\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByCountyByStatus(\n county: $county\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEldersByServiceCodeByStatus = /* GraphQL */ `\n query GetEldersByServiceCodeByStatus(\n $serviceCode: String\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByServiceCodeByStatus(\n serviceCode: $serviceCode\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getElderDeliveryGroupByDeliveryGroupId = /* GraphQL */ `\n query GetElderDeliveryGroupByDeliveryGroupId(\n $deliveryGroupId: ID\n $elderId: ModelIDKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDeliveryGroupByDeliveryGroupId(\n deliveryGroupId: $deliveryGroupId\n elderId: $elderId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getElderDeliveryGroupByElder = /* GraphQL */ `\n query GetElderDeliveryGroupByElder(\n $elderId: ID\n $deliveryGroupId: ModelIDKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDeliveryGroupByElder(\n elderId: $elderId\n deliveryGroupId: $deliveryGroupId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getElderDeliveryGroupsByClientByStatus = /* GraphQL */ `\n query GetElderDeliveryGroupsByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDeliveryGroupsByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getElderDementiaSurveyByElderByDate = /* GraphQL */ `\n query GetElderDementiaSurveyByElderByDate(\n $elderId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDementiaSurveyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDementiaSurveyByElderByDate(\n elderId: $elderId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getElderDementiaSurveyByClientByDate = /* GraphQL */ `\n query GetElderDementiaSurveyByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDementiaSurveyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDementiaSurveyByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getElderDementiaSurveyByDeliveryStaffOrder = /* GraphQL */ `\n query GetElderDementiaSurveyByDeliveryStaffOrder(\n $deliveryStaffOrderId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelElderDementiaSurveyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDementiaSurveyByDeliveryStaffOrder(\n deliveryStaffOrderId: $deliveryStaffOrderId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n clientId\n deliveryStaffOrderId\n questionId\n response\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n dementiaQuestionnaire {\n items {\n id\n isActive\n category\n type\n question\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getElderFormsByElderByCreatedAt = /* GraphQL */ `\n query GetElderFormsByElderByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFormFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderFormsByElderByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n formId\n name\n fileS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n form {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getEventsByClientByTimestamp = /* GraphQL */ `\n query GetEventsByClientByTimestamp(\n $clientId: ID\n $timestamp: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEventsByClientByTimestamp(\n clientId: $clientId\n timestamp: $timestamp\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n key\n timestamp\n tableName\n clientId\n eventId\n eventName\n diff\n oldData\n newData\n note\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getEventsByTableByTimestamp = /* GraphQL */ `\n query GetEventsByTableByTimestamp(\n $tableName: String\n $timestamp: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEventsByTableByTimestamp(\n tableName: $tableName\n timestamp: $timestamp\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n key\n timestamp\n tableName\n clientId\n eventId\n eventName\n diff\n oldData\n newData\n note\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getFacilityIndividualByFacilityByCreatedAt = /* GraphQL */ `\n query GetFacilityIndividualByFacilityByCreatedAt(\n $facilityId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelFacilityIndividualFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getFacilityIndividualByFacilityByCreatedAt(\n facilityId: $facilityId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n individualId\n facilityId\n individualClient {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getFacilityIndividualByFacilityByIndividual = /* GraphQL */ `\n query GetFacilityIndividualByFacilityByIndividual(\n $facilityId: ID\n $individualId: ModelIDKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelFacilityIndividualFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getFacilityIndividualByFacilityByIndividual(\n facilityId: $facilityId\n individualId: $individualId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n individualId\n facilityId\n individualClient {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByStatusByCreatedAt = /* GraphQL */ `\n query GetILinkOrdersByStatusByCreatedAt(\n $status: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByStatusByShouldBeSentToILink = /* GraphQL */ `\n query GetILinkOrdersByStatusByShouldBeSentToILink(\n $status: String\n $shouldBeSentToILinkAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByStatusByShouldBeSentToILink(\n status: $status\n shouldBeSentToILinkAt: $shouldBeSentToILinkAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByProcessStatusByCreatedAt = /* GraphQL */ `\n query GetILinkOrdersByProcessStatusByCreatedAt(\n $processStatus: ProcessStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByProcessStatusByCreatedAt(\n processStatus: $processStatus\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByProcessStatusByShouldBeSentToILink = /* GraphQL */ `\n query GetILinkOrdersByProcessStatusByShouldBeSentToILink(\n $processStatus: ProcessStatus\n $shouldBeSentToILinkAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByProcessStatusByShouldBeSentToILink(\n processStatus: $processStatus\n shouldBeSentToILinkAt: $shouldBeSentToILinkAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByOrderByCreatedAt = /* GraphQL */ `\n query GetILinkOrdersByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByILinkOrderByCreatedAt = /* GraphQL */ `\n query GetILinkOrdersByILinkOrderByCreatedAt(\n $iLinkOrderId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByILinkOrderByCreatedAt(\n iLinkOrderId: $iLinkOrderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getILinkOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetILinkOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelILinkOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getILinkOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n iLinkQuoteId\n iLinkOrderId\n iLinkCancelCode\n status\n description\n fee\n feeMessage\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToILinkAt\n iLinkQuotePayload\n iLinkOrderPayload\n orderId\n elderId\n restaurantId\n clientId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getInvoicesByUsernameByCreatedAt = /* GraphQL */ `\n query GetInvoicesByUsernameByCreatedAt(\n $username: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelInvoiceFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getInvoicesByUsernameByCreatedAt(\n username: $username\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n transactionId\n orderId\n status\n clientId\n deliveryStaffId\n restaurantOwnerId\n type\n email\n carrier\n title\n taxIdNumber\n code\n note\n Transaction {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n createdAt\n createdBy\n updatedAt\n updatedBy\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sentAt\n sentBy\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getInvoicesByStatusByCreatedAt = /* GraphQL */ `\n query GetInvoicesByStatusByCreatedAt(\n $status: InvoiceStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelInvoiceFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getInvoicesByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n transactionId\n orderId\n status\n clientId\n deliveryStaffId\n restaurantOwnerId\n type\n email\n carrier\n title\n taxIdNumber\n code\n note\n Transaction {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n createdAt\n createdBy\n updatedAt\n updatedBy\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sentAt\n sentBy\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByCountyByCreatedAt = /* GraphQL */ `\n query GetIssuesByCountyByCreatedAt(\n $county: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByCountyByCreatedAt(\n county: $county\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByCountyByStatus = /* GraphQL */ `\n query GetIssuesByCountyByStatus(\n $county: String\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByCountyByStatus(\n county: $county\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByOrderByCreatedAt = /* GraphQL */ `\n query GetIssuesByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByElderByCreatedAt = /* GraphQL */ `\n query GetIssuesByElderByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByElderByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByAssigneeByCreatedAt = /* GraphQL */ `\n query GetIssuesByAssigneeByCreatedAt(\n $assignee: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByAssigneeByCreatedAt(\n assignee: $assignee\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByStatusByCreatedAt = /* GraphQL */ `\n query GetIssuesByStatusByCreatedAt(\n $status: IssueStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByPriorityByCreatedAt = /* GraphQL */ `\n query GetIssuesByPriorityByCreatedAt(\n $priority: Int\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByPriorityByCreatedAt(\n priority: $priority\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByClientByCreatedAt = /* GraphQL */ `\n query GetIssuesByClientByCreatedAt(\n $clientId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByClientByCreatedAt(\n clientId: $clientId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByClientByStatus = /* GraphQL */ `\n query GetIssuesByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssuesByDeliveryStaffOrder = /* GraphQL */ `\n query GetIssuesByDeliveryStaffOrder(\n $deliveryStaffOrderId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelIssueFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssuesByDeliveryStaffOrder(\n deliveryStaffOrderId: $deliveryStaffOrderId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n note\n assignee\n orderId\n elderId\n clientId\n deliveryStaffId\n deliveryStaffOrderId\n comments {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getIssueCommentsByIssueByCreatedAt = /* GraphQL */ `\n query GetIssueCommentsByIssueByCreatedAt(\n $issueId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelIssueCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getIssueCommentsByIssueByCreatedAt(\n issueId: $issueId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n issueId\n content\n username\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByStatusByCreatedAt = /* GraphQL */ `\n query GetLalamoveOrdersByStatusByCreatedAt(\n $status: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByStatusByShouldBeSentToLalamove = /* GraphQL */ `\n query GetLalamoveOrdersByStatusByShouldBeSentToLalamove(\n $status: String\n $shouldBeSentToLalamoveAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByStatusByShouldBeSentToLalamove(\n status: $status\n shouldBeSentToLalamoveAt: $shouldBeSentToLalamoveAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByProcessStatusByCreatedAt = /* GraphQL */ `\n query GetLalamoveOrdersByProcessStatusByCreatedAt(\n $processStatus: ProcessStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByProcessStatusByCreatedAt(\n processStatus: $processStatus\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove = /* GraphQL */ `\n query GetLalamoveOrdersByProcessStatusByShouldBeSentToLalamove(\n $processStatus: ProcessStatus\n $shouldBeSentToLalamoveAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove(\n processStatus: $processStatus\n shouldBeSentToLalamoveAt: $shouldBeSentToLalamoveAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByOrderByCreatedAt = /* GraphQL */ `\n query GetLalamoveOrdersByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByLalamoveIdrByCreatedAt = /* GraphQL */ `\n query GetLalamoveOrdersByLalamoveIdrByCreatedAt(\n $lalamoveDeliveryId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByLalamoveIdrByCreatedAt(\n lalamoveDeliveryId: $lalamoveDeliveryId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getLalamoveOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetLalamoveOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getMembershipByClientIdByStatus = /* GraphQL */ `\n query GetMembershipByClientIdByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelMembershipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getMembershipByClientIdByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n status\n membershipProgramId\n expiredAt\n discountRule\n discountPercentage\n extendedAt\n transactionIds\n logs\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getMembershipByStatusByExpiredAt = /* GraphQL */ `\n query GetMembershipByStatusByExpiredAt(\n $status: MembershipStatus\n $expiredAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelMembershipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getMembershipByStatusByExpiredAt(\n status: $status\n expiredAt: $expiredAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n status\n membershipProgramId\n expiredAt\n discountRule\n discountPercentage\n extendedAt\n transactionIds\n logs\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getMembershipProgramsByIsActiveByCreatedAt = /* GraphQL */ `\n query GetMembershipProgramsByIsActiveByCreatedAt(\n $isActive: Int\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelMembershipProgramFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getMembershipProgramsByIsActiveByCreatedAt(\n isActive: $isActive\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n name\n description\n durationInDays\n discountRule\n discountPercentage\n unit\n unitValue\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getNotificationsByUserByCreatedAt = /* GraphQL */ `\n query GetNotificationsByUserByCreatedAt(\n $username: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getNotificationsByUserByCreatedAt(\n username: $username\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getNotificationsByDeliveryStaffIdByCreatedAt = /* GraphQL */ `\n query GetNotificationsByDeliveryStaffIdByCreatedAt(\n $deliveryStaffId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getNotificationsByDeliveryStaffIdByCreatedAt(\n deliveryStaffId: $deliveryStaffId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getNotificationsByAdminIdByCreatedAt = /* GraphQL */ `\n query GetNotificationsByAdminIdByCreatedAt(\n $adminId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getNotificationsByAdminIdByCreatedAt(\n adminId: $adminId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getNotificationsByClientIdByCreatedAt = /* GraphQL */ `\n query GetNotificationsByClientIdByCreatedAt(\n $clientId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getNotificationsByClientIdByCreatedAt(\n clientId: $clientId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getNotificationsByRestaurantOwnerIdByCreatedAt = /* GraphQL */ `\n query GetNotificationsByRestaurantOwnerIdByCreatedAt(\n $restaurantOwnerId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getNotificationsByRestaurantOwnerIdByCreatedAt(\n restaurantOwnerId: $restaurantOwnerId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getNotificationsByStatusByShouldBeSentAt = /* GraphQL */ `\n query GetNotificationsByStatusByShouldBeSentAt(\n $status: NotificationStatus\n $shouldBeSentAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getNotificationsByStatusByShouldBeSentAt(\n status: $status\n shouldBeSentAt: $shouldBeSentAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n deliveryStaffId\n adminId\n clientId\n restaurantOwnerId\n type\n status\n statusMsg\n subject\n text\n dataJsonString\n link\n email\n pushToken\n phoneNumber\n shouldBeSentAt\n sentAt\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByStatusByDate = /* GraphQL */ `\n query GetOrdersByStatusByDate(\n $status: OrderStatus\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByStatusByDate(\n status: $status\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByStatusByDeliveryBy = /* GraphQL */ `\n query GetOrdersByStatusByDeliveryBy(\n $status: OrderStatus\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByStatusByDeliveryBy(\n status: $status\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByCountyOpenStatusByDeliveryBy = /* GraphQL */ `\n query GetOrdersByCountyOpenStatusByDeliveryBy(\n $countyOpenStatus: String\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByCountyOpenStatusByDeliveryBy(\n countyOpenStatus: $countyOpenStatus\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByCountyByStatus = /* GraphQL */ `\n query GetOrdersByCountyByStatus(\n $county: String\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByCountyByStatus(\n county: $county\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByCountyByDate = /* GraphQL */ `\n query GetOrdersByCountyByDate(\n $county: String\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByCountyByDate(\n county: $county\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByCountyBySource = /* GraphQL */ `\n query GetOrdersByCountyBySource(\n $county: String\n $source: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByCountyBySource(\n county: $county\n source: $source\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByClientByCreatedAt = /* GraphQL */ `\n query GetOrdersByClientByCreatedAt(\n $clientId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByCreatedAt(\n clientId: $clientId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByClientByStatus = /* GraphQL */ `\n query GetOrdersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByRestaurantByCreatedAt = /* GraphQL */ `\n query GetOrdersByRestaurantByCreatedAt(\n $restaurantId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByRestaurantByCreatedAt(\n restaurantId: $restaurantId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByRestaurantByDeliveryBy = /* GraphQL */ `\n query GetOrdersByRestaurantByDeliveryBy(\n $restaurantId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByRestaurantByDeliveryBy(\n restaurantId: $restaurantId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByRestaurantByDate = /* GraphQL */ `\n query GetOrdersByRestaurantByDate(\n $restaurantId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByRestaurantByDate(\n restaurantId: $restaurantId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByElderByCreatedAt = /* GraphQL */ `\n query GetOrdersByElderByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByElderByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByElderByDate = /* GraphQL */ `\n query GetOrdersByElderByDate(\n $elderId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByElderByDate(\n elderId: $elderId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByDeliveryStaffByDeliveryBy = /* GraphQL */ `\n query GetOrdersByDeliveryStaffByDeliveryBy(\n $deliveryStaffId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByDeliveryStaffByDeliveryBy(\n deliveryStaffId: $deliveryStaffId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByDeliveryStaffByDate = /* GraphQL */ `\n query GetOrdersByDeliveryStaffByDate(\n $deliveryStaffId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByDeliveryStaffByDate(\n deliveryStaffId: $deliveryStaffId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByIsAuditedByStatusCheckAt = /* GraphQL */ `\n query GetOrdersByIsAuditedByStatusCheckAt(\n $isAudited: Int\n $nextStatusCheckAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByIsAuditedByStatusCheckAt(\n isAudited: $isAudited\n nextStatusCheckAt: $nextStatusCheckAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByIndividualByDate = /* GraphQL */ `\n query GetOrdersByIndividualByDate(\n $individualId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByIndividualByDate(\n individualId: $individualId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrdersByIndividualByStatus = /* GraphQL */ `\n query GetOrdersByIndividualByStatus(\n $individualId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByIndividualByStatus(\n individualId: $individualId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getOrderEventsByOrderByCreatedAt = /* GraphQL */ `\n query GetOrderEventsByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrderEventsByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n orderId\n category\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getOrderQuotesByCodeByCreatedAt = /* GraphQL */ `\n query GetOrderQuotesByCodeByCreatedAt(\n $code: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderQuoteFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrderQuotesByCodeByCreatedAt(\n code: $code\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n restaurantName\n originalStartAddress\n originalEndAddress\n code\n message\n distance\n startAddress\n endAddress\n calculationMethod\n totalFee\n deliveryStaffFee\n extraFee\n platformFee\n fixedDeliveryStaffFee\n defaultDeliveryStaffFee\n pandagoEstimatedFee\n uberEstimatedFee\n ilinkEstimatedFee\n lalamoveEstimatedFee\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n queryAddressMethod\n expirationUnixTime\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByStatusByCreatedAt = /* GraphQL */ `\n query GetPandagoOrdersByStatusByCreatedAt(\n $status: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByStatusByShouldBeSentToPandago = /* GraphQL */ `\n query GetPandagoOrdersByStatusByShouldBeSentToPandago(\n $status: String\n $shouldBeSentToPandagoAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByStatusByShouldBeSentToPandago(\n status: $status\n shouldBeSentToPandagoAt: $shouldBeSentToPandagoAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByProcessStatusByCreatedAt = /* GraphQL */ `\n query GetPandagoOrdersByProcessStatusByCreatedAt(\n $processStatus: ProcessStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByProcessStatusByCreatedAt(\n processStatus: $processStatus\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByProcessStatusByShouldBeSentToPandago = /* GraphQL */ `\n query GetPandagoOrdersByProcessStatusByShouldBeSentToPandago(\n $processStatus: ProcessStatus\n $shouldBeSentToPandagoAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByProcessStatusByShouldBeSentToPandago(\n processStatus: $processStatus\n shouldBeSentToPandagoAt: $shouldBeSentToPandagoAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByOrderByCreatedAt = /* GraphQL */ `\n query GetPandagoOrdersByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByPandagoOrderByCreatedAt = /* GraphQL */ `\n query GetPandagoOrdersByPandagoOrderByCreatedAt(\n $pandagoOrderId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByPandagoOrderByCreatedAt(\n pandagoOrderId: $pandagoOrderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPandagoOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetPandagoOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToPandagoAt\n pandagoOrderPayload\n proofOfDeliveryS3Key\n trackingLink\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrdersByStatus = /* GraphQL */ `\n query GetRecurringOrdersByStatus(\n $status: String\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrdersByStatus(\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrdersByClientByStatus = /* GraphQL */ `\n query GetRecurringOrdersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrdersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrdersByElderByStatus = /* GraphQL */ `\n query GetRecurringOrdersByElderByStatus(\n $elderId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrdersByElderByStatus(\n elderId: $elderId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrdersByDeliveryGroupByStatus = /* GraphQL */ `\n query GetRecurringOrdersByDeliveryGroupByStatus(\n $deliveryGroupId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrdersByDeliveryGroupByStatus(\n deliveryGroupId: $deliveryGroupId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrdersByDeliveryStaffByStatus = /* GraphQL */ `\n query GetRecurringOrdersByDeliveryStaffByStatus(\n $deliveryStaffId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrdersByDeliveryStaffByStatus(\n deliveryStaffId: $deliveryStaffId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrdersByRestaurantByStatus = /* GraphQL */ `\n query GetRecurringOrdersByRestaurantByStatus(\n $restaurantId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrdersByRestaurantByStatus(\n restaurantId: $restaurantId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n mealSlot\n category\n status\n repeatOn\n startOn\n endOn\n lastExecutedAt\n lastExecutedStatus\n lastExecutedStatusMessage\n createdAt\n createdBy\n updatedAt\n updatedBy\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n tags {\n items {\n id\n elderId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n deliveryGroup {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRecurringOrderLogByRecurringOrderIdByDate = /* GraphQL */ `\n query GetRecurringOrderLogByRecurringOrderIdByDate(\n $recurringOrderId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderLogFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrderLogByRecurringOrderIdByDate(\n recurringOrderId: $recurringOrderId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n orderIds\n recurringOrderId\n deliveryBy\n date\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantOwnersByCountyByCreatedAt = /* GraphQL */ `\n query GetRestaurantOwnersByCountyByCreatedAt(\n $county: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantOwnerFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantOwnersByCountyByCreatedAt(\n county: $county\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n county\n username\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n email\n howDoYouKnowUs\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorshipsByUsernameByCreatedAt = /* GraphQL */ `\n query GetSponsorshipsByUsernameByCreatedAt(\n $username: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelSponsorshipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getSponsorshipsByUsernameByCreatedAt(\n username: $username\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorshipsByClientIdByStatus = /* GraphQL */ `\n query GetSponsorshipsByClientIdByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelSponsorshipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getSponsorshipsByClientIdByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorshipsByStatusByCreatedAt = /* GraphQL */ `\n query GetSponsorshipsByStatusByCreatedAt(\n $status: ProcessStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelSponsorshipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getSponsorshipsByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n username\n transactionId\n sponsorProgramId\n status\n count\n unit\n unitValue\n totalValue\n fulfilledCount\n fulfilledValue\n fulfilledAt\n note\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n featureConfiguration {\n skipRegisterSteps\n skipDocumentsUpload\n hideSToken\n supportNumber\n useDedicatedDeliveryStaffs\n dementiaQuestionnaire\n reportTypes\n supportedPartners\n customizeDisadvantagedSettings\n }\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n facilitySettingsId\n facilitySettings {\n id\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptInfo {\n receiptType\n taxIdNumber\n faxNumber\n bankName\n accountNumber\n accountName\n bankName2\n accountNumber2\n accountName2\n bankName3\n accountNumber3\n accountName3\n note\n managerTitle\n reverseCopyType\n oneCopyOneSheet\n chairmanName\n accountantName\n handlerName\n }\n receiptSettings {\n originalPrice\n }\n logoS3Keys\n companyStampS3Keys\n chairmanStampS3Keys\n accountantStampS3Keys\n handlerStampS3Keys\n deliverySetting {\n canStartDeliveryBefore\n canStartDeliveryAfter\n canCompleteOrderAfter\n canModifyDiaryAfter\n }\n mealStatisticsSettings {\n name\n }\n batchOrderSettings {\n name\n batchOrderSettingsItems\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderableRestaurants {\n id\n isPublic\n }\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n sponsorProgram {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n fulfillments {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorshipFulfillmentsBySponsorshipIdByStatus = /* GraphQL */ `\n query GetSponsorshipFulfillmentsBySponsorshipIdByStatus(\n $sponsorshipId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelSponsorshipFulfillmentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getSponsorshipFulfillmentsBySponsorshipIdByStatus(\n sponsorshipId: $sponsorshipId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n clientId\n sponsorshipId\n status\n unit\n unitValue\n fulfilledAt\n orderId\n elderId\n restaurantId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getSponsorshipProgramsByIsActiveByCreatedAt = /* GraphQL */ `\n query GetSponsorshipProgramsByIsActiveByCreatedAt(\n $isActive: Int\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelSponsorshipProgramFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getSponsorshipProgramsByIsActiveByCreatedAt(\n isActive: $isActive\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n name\n summary\n description\n count\n unit\n unitValue\n totalValue\n previewS3Keys\n imageS3Keys\n sponsors {\n name\n description\n websiteUrl\n logoUrl\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getTransactionsByUsernameByCreatedAt = /* GraphQL */ `\n query GetTransactionsByUsernameByCreatedAt(\n $username: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getTransactionsByUsernameByCreatedAt(\n username: $username\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getTransactionsByStatusByCreatedAt = /* GraphQL */ `\n query GetTransactionsByStatusByCreatedAt(\n $status: TransactionStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getTransactionsByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getTransactionsByClientByCreatedAt = /* GraphQL */ `\n query GetTransactionsByClientByCreatedAt(\n $clientId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTransactionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getTransactionsByClientByCreatedAt(\n clientId: $clientId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n clientId\n deliveryStaffId\n restaurantOwnerId\n orderId\n orders {\n items {\n id\n clientId\n individualId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n source\n orderQuoteId\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n deliveryStaffFeeCalculationMethod\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n endAddress\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n shortId\n type\n isActive\n county\n username\n name\n dba\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n contact\n ageGroup\n birthday\n gender\n jobOccupation\n howDoYouKnowUs\n referredBy\n organizationId\n usersLimit\n eldersLimit\n note\n translation\n useDedicatedDeliveryStaffs\n basicFee\n basicDistanceInKM\n extraFeeInKM\n extraFee\n platformFee\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n facilitySettingsId\n assignableDeliveryStaffs\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n email\n identificationCardId\n serviceCode\n noteForDelivery\n noteForMeal\n noteForHealth\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n isIndigenous\n isLivingAlone\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n supervisorId\n linkGroupName\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disabilityLevel\n cmsLevel\n caseNumber\n lunchRepeatOn\n dinnerRepeatOn\n fixedDeliveryStaffFee\n onTimeDelivery\n dementiaQuestionnaire\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n deactivationReason\n deactivationNote\n personalPhotoS3Keys\n homePhotoS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n orderGroupId\n referenceId\n linkGroupElderIds\n cancellationReason\n cancellationNote\n directionServiceProvider\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n status\n statusMessage\n type\n description\n note\n category\n items {\n name\n qty\n unit\n unitValue\n subTotal\n }\n serviceProvider\n subTotal\n discount\n discountRule\n amount\n cardId\n cardType\n cardLastFour\n tpMerchantId\n tpBankTxId\n tpRecTradeId\n linePayTransactionId\n linePayPaymentAccessToken\n linePayPaymentUrlWeb\n linePayPaymentUrlApp\n linePayInfo\n redirectUrl\n newebPayResult\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByStatusByCreatedAt = /* GraphQL */ `\n query GetUberOrdersByStatusByCreatedAt(\n $status: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByStatusByShouldBeSentToUber = /* GraphQL */ `\n query GetUberOrdersByStatusByShouldBeSentToUber(\n $status: String\n $shouldBeSentToUberAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByStatusByShouldBeSentToUber(\n status: $status\n shouldBeSentToUberAt: $shouldBeSentToUberAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByProcessStatusByCreatedAt = /* GraphQL */ `\n query GetUberOrdersByProcessStatusByCreatedAt(\n $processStatus: ProcessStatus\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByProcessStatusByCreatedAt(\n processStatus: $processStatus\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByProcessStatusByShouldBeSentToUber = /* GraphQL */ `\n query GetUberOrdersByProcessStatusByShouldBeSentToUber(\n $processStatus: ProcessStatus\n $shouldBeSentToUberAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByProcessStatusByShouldBeSentToUber(\n processStatus: $processStatus\n shouldBeSentToUberAt: $shouldBeSentToUberAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByOrderByCreatedAt = /* GraphQL */ `\n query GetUberOrdersByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByUberIdrByCreatedAt = /* GraphQL */ `\n query GetUberOrdersByUberIdrByCreatedAt(\n $uberDeliveryId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByUberIdrByCreatedAt(\n uberDeliveryId: $uberDeliveryId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUberOrdersByElderIdByCreatedAt = /* GraphQL */ `\n query GetUberOrdersByElderIdByCreatedAt(\n $elderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByElderIdByCreatedAt(\n elderId: $elderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToUberAt\n uberQuotePayload\n uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUploadedOrdersByClientByCreatedAt = /* GraphQL */ `\n query GetUploadedOrdersByClientByCreatedAt(\n $clientId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUploadedOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUploadedOrdersByClientByCreatedAt(\n clientId: $clientId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n restaurantId\n orderFileS3Key\n fileName\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getUsersByClientIdByIsActive = /* GraphQL */ `\n query GetUsersByClientIdByIsActive(\n $clientId: String\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUsersByClientIdByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n username\n isActive\n email\n notificationToken\n notificationTokenDeliveryStaff\n notificationTokenRestaurantOwner\n notificationTokenClient\n notificationTokenAdmin\n device {\n brand\n manufacturer\n modelName\n osName\n osVersion\n osBuildId\n appVersion\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n groups {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getUsersByOrganizationIdByIsActive = /* GraphQL */ `\n query GetUsersByOrganizationIdByIsActive(\n $organizationId: String\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUsersByOrganizationIdByIsActive(\n organizationId: $organizationId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n username\n isActive\n email\n notificationToken\n notificationTokenDeliveryStaff\n notificationTokenRestaurantOwner\n notificationTokenClient\n notificationTokenAdmin\n device {\n brand\n manufacturer\n modelName\n osName\n osVersion\n osBuildId\n appVersion\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n groups {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getUserGroupsByGroup = /* GraphQL */ `\n query GetUserGroupsByGroup(\n $group: String\n $sortDirection: ModelSortDirection\n $filter: ModelUserGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUserGroupsByGroup(\n group: $group\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n username\n group\n adminId\n deliveryStaffId\n restaurantOwnerId\n clientId\n organizationId\n facilityIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getWebhookEventsByVendorByCreatedAt = /* GraphQL */ `\n query GetWebhookEventsByVendorByCreatedAt(\n $vendor: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelWebhookEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getWebhookEventsByVendorByCreatedAt(\n vendor: $vendor\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n vendor\n headers\n body\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getBlog = /* GraphQL */ `\n query GetBlog($id: ID!) {\n getBlog(id: $id) {\n id\n status\n title\n content\n url\n photoS3Keys\n county\n deliveryStaffId\n deliveryStaffOrderId\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listBlogs = /* GraphQL */ `\n query ListBlogs(\n $filter: ModelBlogFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listBlogs(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n status\n title\n content\n url\n photoS3Keys\n county\n deliveryStaffId\n deliveryStaffOrderId\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getBlogsByStatusByCreatedAt = /* GraphQL */ `\n query GetBlogsByStatusByCreatedAt(\n $status: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelBlogFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getBlogsByStatusByCreatedAt(\n status: $status\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n status\n title\n content\n url\n photoS3Keys\n county\n deliveryStaffId\n deliveryStaffOrderId\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientAppBanner = /* GraphQL */ `\n query GetClientAppBanner($id: ID!) {\n getClientAppBanner(id: $id) {\n id\n isActive\n title\n content\n url\n imageUrl\n sortOrder\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listClientAppBanners = /* GraphQL */ `\n query ListClientAppBanners(\n $filter: ModelClientAppBannerFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listClientAppBanners(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n title\n content\n url\n imageUrl\n sortOrder\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getClientAppBannersByIsActiveByCreatedAt = /* GraphQL */ `\n query GetClientAppBannersByIsActiveByCreatedAt(\n $isActive: Int\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientAppBannerFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientAppBannersByIsActiveByCreatedAt(\n isActive: $isActive\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isActive\n title\n content\n url\n imageUrl\n sortOrder\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getForm = /* GraphQL */ `\n query GetForm($id: ID!) {\n getForm(id: $id) {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listForms = /* GraphQL */ `\n query ListForms(\n $filter: ModelFormFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listForms(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getFormsByClientByStatus = /* GraphQL */ `\n query GetFormsByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelFormFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getFormsByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n status\n clientId\n category\n subcategory\n name\n fileS3Key\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getPartner = /* GraphQL */ `\n query GetPartner($id: ID!) {\n getPartner(id: $id) {\n id\n isActive\n name\n description\n url\n logoUrl\n bannerS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listPartners = /* GraphQL */ `\n query ListPartners(\n $filter: ModelPartnerFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPartners(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n isActive\n name\n description\n url\n logoUrl\n bannerS3Key\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getRestaurant = /* GraphQL */ `\n query GetRestaurant($id: ID!) {\n getRestaurant(id: $id) {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const listRestaurants = /* GraphQL */ `\n query ListRestaurants(\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurants(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantsByCountyByIsActive = /* GraphQL */ `\n query GetRestaurantsByCountyByIsActive(\n $county: String\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByCountyByIsActive(\n county: $county\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantsByClientByIsActive = /* GraphQL */ `\n query GetRestaurantsByClientByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByClientByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantsByOwnerByIsActive = /* GraphQL */ `\n query GetRestaurantsByOwnerByIsActive(\n $owner: String\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByOwnerByIsActive(\n owner: $owner\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantsByRestaurantOwnerIdByIsActive = /* GraphQL */ `\n query GetRestaurantsByRestaurantOwnerIdByIsActive(\n $restaurantOwnerId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByRestaurantOwnerIdByIsActive(\n restaurantOwnerId: $restaurantOwnerId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantHoliday = /* GraphQL */ `\n query GetRestaurantHoliday($id: ID!) {\n getRestaurantHoliday(id: $id) {\n id\n restaurantId\n year\n closedDays\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listRestaurantHolidays = /* GraphQL */ `\n query ListRestaurantHolidays(\n $filter: ModelRestaurantHolidayFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurantHolidays(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n year\n closedDays\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantHolidayByRestaurantByYear = /* GraphQL */ `\n query GetRestaurantHolidayByRestaurantByYear(\n $restaurantId: ID\n $year: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantHolidayFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantHolidayByRestaurantByYear(\n restaurantId: $restaurantId\n year: $year\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n year\n closedDays\n expirationUnixTime\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantMeal = /* GraphQL */ `\n query GetRestaurantMeal($id: ID!) {\n getRestaurantMeal(id: $id) {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const listRestaurantMeals = /* GraphQL */ `\n query ListRestaurantMeals(\n $filter: ModelRestaurantMealFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurantMeals(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantMealsByRestaurantByIsActive = /* GraphQL */ `\n query GetRestaurantMealsByRestaurantByIsActive(\n $restaurantId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantMealFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantMealsByRestaurantByIsActive(\n restaurantId: $restaurantId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantMealTag = /* GraphQL */ `\n query GetRestaurantMealTag($id: ID!) {\n getRestaurantMealTag(id: $id) {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const listRestaurantMealTags = /* GraphQL */ `\n query ListRestaurantMealTags(\n $filter: ModelRestaurantMealTagFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurantMealTags(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurantMeal {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantMealId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantSchedule = /* GraphQL */ `\n query GetRestaurantSchedule($id: ID!) {\n getRestaurantSchedule(id: $id) {\n id\n restaurantId\n date\n mealSlot\n start\n end\n status\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listRestaurantSchedules = /* GraphQL */ `\n query ListRestaurantSchedules(\n $filter: ModelRestaurantScheduleFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurantSchedules(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n date\n mealSlot\n start\n end\n status\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantSchedulesByStatusByDate = /* GraphQL */ `\n query GetRestaurantSchedulesByStatusByDate(\n $status: DeliveryScheduleStatus\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantScheduleFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantSchedulesByStatusByDate(\n status: $status\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n date\n mealSlot\n start\n end\n status\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getRestaurantTag = /* GraphQL */ `\n query GetRestaurantTag($id: ID!) {\n getRestaurantTag(id: $id) {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n }\n`;\nexport const listRestaurantTags = /* GraphQL */ `\n query ListRestaurantTags(\n $filter: ModelRestaurantTagFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRestaurantTags(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n isPublic\n freeDelivery\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n isAddedToPandago\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n tags {\n items {\n id\n restaurantId\n tagId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n tag {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n nextToken\n }\n }\n`;\nexport const getTag = /* GraphQL */ `\n query GetTag($id: ID!) {\n getTag(id: $id) {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n }\n`;\nexport const listTags = /* GraphQL */ `\n query ListTags(\n $filter: ModelTagFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTags(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\nexport const getTagsByCategoryBySubcategory = /* GraphQL */ `\n query GetTagsByCategoryBySubcategory(\n $category: String\n $subcategory: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTagFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getTagsByCategoryBySubcategory(\n category: $category\n subcategory: $subcategory\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n category\n subcategory\n color\n label\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","/* eslint-disable quote-props */\nimport { I18n } from 'aws-amplify';\n\nexport const dict = {\n 'zh': {\n 'Account recovery requires verified contact information': '恢復帳戶需要驗證聯繫方式',\n 'Back to Sign In': '回到登入',\n 'Change Password': '改變密碼',\n Changing: '變更中',\n Code: '驗證碼',\n Confirm: '確認',\n 'Confirm Password': '確認密碼',\n 'Please confirm your Password': '確認密碼',\n 'Confirm SMS Code': 'Confirm SMS Code',\n 'Confirm Sign In': '確認登入',\n 'Confirm Sign Up': '確認註冊',\n 'Confirm TOTP Code': 'Confirm TOTP Code',\n 'Confirm a Code': '驗證碼',\n 'Confirmation Code': '驗證碼',\n Confirming: '確認中',\n 'Create Account': '創建帳戶',\n 'Create a new account': '創建帳戶',\n 'Create account': '創建帳戶',\n Email: '電子信箱',\n 'Enter your code': '輸入驗證碼',\n 'Enter your email': '輸入電子信箱',\n 'Enter your phone number': '輸入電話號碼',\n 'Enter your username': '輸入帳號',\n 'Enter your Username': '輸入帳號',\n 'Enter your Password': '輸入密碼',\n 'Forgot Password': '忘記密碼',\n 'Forgot your password?': '忘記密碼',\n 'Hide password': '隱藏密碼',\n 'Incorrect username or password': '帳號或密碼錯誤',\n 'Invalid password format': '密碼格式錯誤',\n 'Invalid phone number format': '電話格式錯誤,請使用格式 +12345678900',\n 'Invalid email address format.': '電子信箱格式錯誤',\n Loading: '載入中',\n Name: '姓名',\n 'Enter your Name': '姓名',\n 'New Password': '新密碼',\n 'New password': '新密碼',\n Password: '密碼',\n 'Phone': '電話',\n 'Phone Number': '電話',\n 'Enter your Phone Number': '電話',\n 'Resend Code': '重新發送驗證碼',\n 'Resend a Code': '重新發送驗證碼',\n 'Reset your Password': '重設密碼',\n 'Reset your password': '重設密碼',\n 'Reset Password': '重設密碼',\n 'Send Code': '發送驗證碼',\n 'Send code': '發送驗證碼',\n Sending: '發送中',\n 'Setup TOTP': 'Setup TOTP',\n 'Show password': '顯示密碼',\n 'Sign In': '登入',\n 'Sign In with Amazon': 'Sign In with Amazon',\n 'Sign In with Apple': 'Sign In with Apple',\n 'Sign In with Facebook': 'Sign In with Facebook',\n 'Sign In with Google': 'Sign In with Google',\n 'Sign Out': '退出',\n 'Sign Up': '註冊',\n 'Sign in': '登入',\n 'Sign in to your account': 'Sign in to your account',\n 'Signing in': '登入中',\n Skip: '跳過',\n Submit: '送出',\n Submitting: '送出中',\n 'User already exists': '帳號已經存在',\n 'User does not exist': '帳號不存在',\n Username: '帳號/電子信箱',\n Verify: '驗證',\n 'Verify Contact': '驗證聯繫方式',\n or: '或者',\n TypeError: '格式錯誤',\n 'We Emailed You': '驗證電子信箱',\n 'We Sent A Code': '驗證電子信箱',\n 'We Texted You': '驗證電子信箱',\n 'Your code is on the way. To log in, enter the code we sent you.': '請查看您的電子信箱,驗證碼需數分鐘才會寄達。',\n 'Your code is on the way. To log in, enter the code we sent you': '請查看您的電子信箱',\n 'Your passwords must match': '密碼不同',\n 'Password must have at least 8 characters': '至少8碼',\n 'Creating Account': '帳戶創建中',\n 'User does not exist.': '用戶不存在',\n 'Your code is on the way. To log in, enter the code we emailed to': '驗證碼已寄送至信箱',\n 'It may take a minute to arrive.': '(數分鐘內將寄達)',\n 'It may take a minute to arrive': '(數分鐘內將寄達)',\n 'Invalid verification code provided, please try again.': '驗證碼錯誤,請重試',\n 'Password cannot be empty': '密碼不能為空白',\n 'Incorrect username or password.': '帳號或密碼錯誤',\n },\n};\n\nI18n.putVocabularies(dict);\n\nI18n.setLanguage('zh-Hant');\n","import i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport { initReactI18next } from 'react-i18next';\n\nconst defaultLng = 'silvergate';\n// const defaultLng = 'medical';\n\nconst i18nInit = async () => {\n await i18n\n .use(Backend)\n .use(initReactI18next)\n .init({\n lng: defaultLng,\n backend: {\n loadPath: '/i18n/{{ns}}/{{lng}}.json',\n },\n fallbackLng: defaultLng,\n debug: process.env.NODE_ENV === 'development',\n ns: ['translations'],\n keySeparator: false,\n interpolation: {\n escapeValue: false,\n },\n });\n};\n\nexport default i18nInit;\n","// import Amplify from 'aws-amplify';\nimport { Logger } from 'aws-amplify';\nimport { disableReactDevTools } from '@fvilers/disable-react-devtools';\n\n// Amplify.Logger.LOG_LEVEL = 'INFO';\n\nconst DEBUG_LEVEL = localStorage.getItem('DEBUG_LEVEL');\n\nconst logLevel = DEBUG_LEVEL || process.env.NODE_ENV === 'development' ? 'DEBUG' : 'ERROR';\nconst logger = new Logger('silvergate', logLevel);\n\nglobal.logger = logger;\n\nglobal.logger.debug = console.log;\n\n// Disable warning message\nconsole.disableYellowBox = true; /* eslint-disable-line no-console */\nconsole.ignoredYellowBox = ['Setting a timer']; /* eslint-disable-line no-console */\n\n// Disabled react dev tools\nif (process.env.NODE_ENV === 'production') {\n disableReactDevTools();\n}\n\n// https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser\nwindow.mobileCheck = () => {\n let check = false;\n (function (a) { if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera); // eslint-disable-line\n return check;\n};\n\n\n// Handle excessive warning message\nconst toIgnoreWarnings = [\n 'The enumNames property is deprecated and may be removed in a future major release.',\n];\n\nconsole.originalWarn = console.warn; // eslint-disable-line no-console\nconsole.warn = (...params) => {\n const message = params.shift();\n if (!toIgnoreWarnings.includes(message)) {\n console.originalWarn(message, ...params); // eslint-disable-line no-console\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Redirect } from 'react-router';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Hub } from 'aws-amplify';\nimport { toastr } from 'react-redux-toastr';\nimport {\n SHORT_NAME,\n authErrorCodes,\n} from '@silvergatedelivery/constants';\nimport { Helmet } from 'react-helmet-async';\nimport CustomAuthenticator from 'components/Auth/CustomAuthenticator';\nimport { useCache } from 'CacheProvider';\nimport '@aws-amplify/ui-react/styles.css';\nimport './i18n/Amplify';\nimport './Amplify.css';\nimport 'react-day-picker/lib/style.css';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n 'flexGrow': 1,\n 'overflow-x': 'auto',\n },\n}));\n\nconst authListener = ({ payload: { event, data } }) => {\n // global.logger.debug(event, data);\n let errorMessage;\n switch (event) {\n case 'signUp_failure':\n case 'signIn_failure':\n errorMessage = authErrorCodes[data.code] || data.code;\n break;\n default:\n }\n\n if (errorMessage) {\n toastr.error(errorMessage);\n }\n};\n\nfunction App({ user }) {\n const classes = useStyles();\n // load routes here for translation\n const { appRoutes } = require('./routes');\n const [filteredRoutes, setFilteredRoutes] = React.useState(appRoutes);\n const { appGroup } = useCache();\n\n React.useEffect(() => {\n if (!user || !user.signInUserSession || !user.attributes) return;\n\n let userGroups = user.signInUserSession.accessToken.payload['cognito:groups'];\n\n if (!userGroups) return;\n\n if ((userGroups.includes('Admins') || userGroups.includes('OrgAdmins')) && appGroup === 'FacilityAdmins') {\n userGroups = ['FacilityAdmins'];\n }\n if (userGroups.includes('Admins') && appGroup === 'OrgAdmins') {\n userGroups = ['OrgAdmins'];\n }\n\n let filteredRoutes = appRoutes.filter(({ roles }) => {\n return (roles) ? userGroups && userGroups.some((group) => roles.includes(group)) : true;\n });\n if (window.location.hostname !== 'develop.silvergatedelivery.com' && window.location.hostname !== 'demo.silvergatedelivery.com') {\n filteredRoutes = filteredRoutes.filter(({ demoOnly }) => !demoOnly);\n }\n setFilteredRoutes(filteredRoutes);\n\n // Hub.dispatch('auth', { event: 'user', data: user });\n }, [user]);\n\n React.useEffect(() => {\n Hub.listen('auth', authListener);\n }, []);\n\n return (
\n \n {filteredRoutes.map((item)=>(\n (\n \n \n {`${SHORT_NAME} | ${item.title}`}\n \n \n \n \n \n \n \n \n )}/>\n ))}\n \n \n
);\n}\n\nApp.propTypes = {\n location: PropTypes.shape({\n search: PropTypes.string,\n }),\n user: PropTypes.any,\n signOut: PropTypes.func,\n};\n\nexport default function AuthenticatedApp({ user }) {\n return (\n \n \n \n );\n}\n\nAuthenticatedApp.propTypes = {\n user: PropTypes.any,\n};\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n global.logger.debug(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n global.logger.debug(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n global.logger.debug('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n global.logger.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n global.logger.debug(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n global.logger.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\n\nimport amplifyConfig from '../aws-exports';\nimport appConfig from '../../package.json';\n\nconst version = appConfig.version;\nconst envName = amplifyConfig.aws_cloud_logic_custom[0].endpoint.split('/').pop();\n\nconst isPrd = envName === 'production' || process.env.NODE_ENV !== 'development';\n\nconst env = isPrd ? '' : envName;\n\nconst versionString = `v${version} ${env ? `(${env})` : ''}`;\n\nexport default function Version({\n component = 'p',\n variant = 'body1',\n color = 'textSecondary',\n align = 'center',\n noWrap = true,\n}) {\n return (\n \n {versionString}\n \n );\n}\n\nVersion.propTypes = {\n component: PropTypes.string,\n variant: PropTypes.string,\n color: PropTypes.string,\n align: PropTypes.string,\n noWrap: PropTypes.string,\n};\n","import cache from 'utilities/cache';\nimport { Auth } from 'aws-amplify';\n\nimport { request } from 'utilities/graph';\nimport { createAuditTrail } from 'graphql/mutations';\n\nimport appConfig from '../../package.json';\n\nconst useCustomAuth = () => {\n const recordEvent = async (action = '') => {\n try {\n const username = cache.get('app:username');\n const email = cache.get('app:email');\n const name = cache.get('app:name') || username;\n const groupName = cache.get('app:pathPrefix');\n const facilityId = cache.get('app:facilityId') || 'N/A';\n const organizationId = cache.get('app:organizationId') || 'N/A';\n const clientId = cache.get('app:clientId') || 'N/A';\n\n if (!username) return;\n\n const data = {\n timestamp: new Date().toISOString(),\n username,\n email,\n name,\n groupName,\n action,\n facilityId,\n organizationId,\n clientId,\n expirationUnixTime: Math.round(Date.now() / 1000) + 2 * 365 * 86400, // 2 years\n createdBy: username,\n updatedBy: username,\n };\n\n await request(createAuditTrail, {\n input: data,\n });\n } catch (error) {\n console.log(error);\n }\n };\n\n const signOut = async () => {\n try {\n await recordEvent('登出');\n\n cache.purge();\n cache.set('app:version', appConfig.version);\n await Auth.signOut();\n } finally {\n window.open('/', '_self');\n }\n };\n\n return {\n signOut,\n recordEvent,\n };\n};\n\nexport default useCustomAuth;\n","import React, { useState, useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Drawer from '@material-ui/core/Drawer';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Button from '@material-ui/core/Button';\nimport Popper from '@material-ui/core/Popper';\nimport Paper from '@material-ui/core/Paper';\nimport Box from '@material-ui/core/Box';\nimport IconButton from '@material-ui/core/IconButton';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport List from '@material-ui/core/List';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport VerticalSplitIcon from '@material-ui/icons/VerticalSplit';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Collapse from '@material-ui/core/Collapse';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport TextField from '@material-ui/core/TextField';\nimport Menu from '@material-ui/core/Menu';\nimport MenuList from '@material-ui/core/MenuList';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Hidden from '@material-ui/core/Hidden';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nimport LinkButton from 'components/Table/LinkButton';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport KeyboardArrowDown from '@material-ui/icons/KeyboardArrowDown';\nimport { Storage } from 'aws-amplify';\n\n// import Badge from '@material-ui/core/Badge';\n// import NotificationsIcon from '@material-ui/icons/Notifications';\nimport Clock from 'react-live-clock';\n\nimport {\n Link,\n // useHistory,\n} from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\n\nimport Version from 'components/Version';\nimport UserAvatar from 'components/UserAvatar';\nimport AdminOrderEditButton from 'forms/AdminOrderForm/AdminOrderEditButton';\n// import AdminOrderUploadButton from 'forms/AdminOrderForm/AdminOrderUploadButton';\nimport {\n Colors,\n counties,\n DRAWER_WIDTH,\n TIME_ZONE,\n NAME,\n SHORT_NAME,\n // cognitoGroups,\n} from '@silvergatedelivery/constants';\nimport { getClientsByTypeByCounty, listOrganizations, getOrganization } from 'graphql/queries';\nimport { asyncListAll, request } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\nimport { routes as publicRoutes } from 'views/Public/routes';\nimport cache from 'utilities/cache';\nimport useCustomAuth from 'hooks/useCustomAuth';\nimport { useCache } from 'CacheProvider';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n },\n appBar: {\n transition: theme.transitions.create(['margin', 'width'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n },\n appBarShift: {\n width: `calc(100% - ${DRAWER_WIDTH}px)`,\n marginLeft: DRAWER_WIDTH,\n transition: theme.transitions.create(['margin', 'width'], {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n hide: {\n display: 'none',\n },\n drawer: {\n width: DRAWER_WIDTH,\n flexShrink: 0,\n },\n drawerPaper: {\n width: DRAWER_WIDTH,\n },\n drawerHeader: {\n display: 'flex',\n alignItems: 'center',\n // padding: theme.spacing(0, 1, 0, 2),\n padding: theme.spacing(0, 2),\n height: 64,\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n // justifyContent: 'flex-end',\n justifyContent: 'center',\n flexDirection: 'column',\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n marginLeft: -DRAWER_WIDTH,\n },\n contentShift: {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: 0,\n },\n // custom\n unstyledHyperlink: {\n textDecoration: 'none',\n color: 'white',\n },\n unstyledHyperlinkPrimary: {\n textDecoration: 'none',\n color: Colors.primary,\n fontWeight: 'bold',\n },\n flexbox: {\n flexGrow: 1,\n },\n select: {\n 'color': 'white',\n 'fontSize': 14,\n '&:after': {\n borderBottomColor: 'white',\n },\n '& .MuiSvgIcon-root': {\n color: 'white',\n },\n },\n nested: {\n paddingLeft: theme.spacing(4),\n },\n imgContainer: {\n display: 'flex',\n maxHeight: 100,\n minHeight: 64,\n justifyContent: 'center',\n },\n img: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n },\n}));\n\nexport default function CustomAppBar({ user, routes, open, onUpdate }) {\n const classes = useStyles();\n // const history = useHistory();\n const matcheMediaQuery = useMediaQuery('(min-width:600px)');\n\n const [name, setName] = useState();\n const [shortName, setShortName] = useState();\n const [openMenu, setOpenMenu] = useState(false);\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [location, setLocation] = useState(cache.get('app:location') || '全國');\n const [organizationAnchorEl, setOrganizationAnchorEl] = useState(null);\n const [facilityAnchorEl, setFacilityAnchorEl] = useState(null);\n const [locationAnchorEl, setLocationAnchorEl] = useState(null);\n const [organizations, setOrganizations] = useState([]);\n const [filteredOrganizations, setFilteredOrganizations] = useState([]);\n const [facilities, setFacilities] = useState([]);\n const [filteredFacilities, setFilteredFacilities] = useState([]);\n const [isClient, setIsClient] = useState(false);\n const [isFacilityAdmin, setIsFacilityAdmin] = useState(false);\n const [isOrgAdmin, setIsOrgAdmin] = useState(false);\n const [isAdmin, setIsAdmin] = useState(false);\n const [openDrawerSubmenu, setOpenDrawerSubmenu] = useState([]);\n const { signOut } = useCustomAuth();\n const { appGroup, selectedUserGroupParams, userGroupOptions, logoS3Keys, setLogoS3Keys } = useCache();\n const [clientLogo, setClientLogo] = useState();\n const [clientShortId, setClientShortId] = useState();\n\n const anchorRef = useRef(null);\n const prevOpen = useRef(open);\n\n let customer;\n if (window.location.hostname.toLowerCase() === 'pingtung.silvergatedelivery.com') {\n customer = 'pingtung';\n }\n\n let visitorMode = false;\n if (appGroup === 'OrgAdmins') {\n const { organizationData } = selectedUserGroupParams;\n if (organizationData?.clients?.items) {\n if (organizationData?.clients?.items.every(({ visitorMode }) => visitorMode)) {\n // if items is empty, visitorMode will be true\n visitorMode = true;\n }\n }\n }\n\n const username = cache.get('app:username') || '';\n const userName = cache.get('app:name') || '';\n const organizationId = cache.get('app:organizationId');\n const facilityId = cache.get('app:facilityId');\n\n function handleToggleMenu() {\n setOpenMenu((prevOpen) => !prevOpen);\n }\n\n function handleCloseMenu(event) {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return;\n }\n setOpenMenu(false);\n }\n\n const handleDrawerOpen = () => {\n onUpdate(true);\n };\n\n const handleDrawerClose = () => {\n onUpdate(false);\n };\n\n const onFilterOrganization = (e) => {\n setFilteredOrganizations(organizations.filter(({ name }) => name.includes(e.target.value)));\n };\n\n const onFilterFacility = (e) => {\n const filteredFacilities = facilities.filter(({ name }) => name.includes(e.target.value));\n setFilteredFacilities(getFacilitiesWithCountyLabel(filteredFacilities));\n };\n\n useEffect(() => {\n if (prevOpen && prevOpen.current === true && openMenu === false) {\n anchorRef.current && anchorRef.current.focus();\n }\n\n prevOpen.current = openMenu;\n }, [openMenu]);\n\n async function handleSignOut(event) {\n handleCloseMenu(event);\n await signOut();\n }\n\n useEffect(() => {\n if (facilityId || organizationId) {\n setName(userName);\n setShortName(userName);\n } else {\n if (customer === 'pingtung') {\n setName('屏東縣政府|長照送餐管理系統');\n setShortName('屏東縣政府');\n } else {\n setName(NAME);\n setShortName(SHORT_NAME);\n }\n }\n }, [organizationId, facilityId, userName, user, lastUpdatedAt]);\n\n useEffect(() => {\n (async () => {\n if (!user) return;\n if (appGroup === 'Clients') {\n return;\n }\n\n const userGroups = user.signInUserSession.accessToken.payload['cognito:groups'];\n\n if (userGroups.includes('Clients') && appGroup === 'Clients') {\n setIsClient(true);\n }\n\n if (!userGroups || (!userGroups.includes('Admins') && !userGroups.includes('OrgAdmins') && !userGroups.includes('FacilityAdmins'))) {\n setIsAdmin(false);\n return;\n }\n\n if (userGroups.includes('FacilityAdmins')) {\n setIsFacilityAdmin(true);\n }\n\n if (userGroups.includes('OrgAdmins')) {\n setIsOrgAdmin(true);\n }\n\n if (userGroups.includes('Admins')) {\n setIsAdmin(true);\n }\n })();\n }, [user]);\n\n const getFacilitiesWithCountyLabel = (facilities) => {\n const groupedFacilities = facilities.reduce((acc, facility) => {\n if (!acc[facility.county]) {\n acc[facility.county] = [];\n }\n acc[facility.county].push(facility);\n return acc;\n }, {});\n\n const facilitiesWithCountyLabel = [];\n counties.forEach((county) => {\n if (groupedFacilities[county]) {\n if (Object.keys(groupedFacilities).length > 1) {\n facilitiesWithCountyLabel.push({\n county,\n isCountyLabel: true,\n });\n }\n groupedFacilities[county].sort(sortBy('name')).forEach((facility) => {\n facilitiesWithCountyLabel.push(facility);\n });\n }\n });\n\n return facilitiesWithCountyLabel;\n };\n\n useEffect(() => {\n (async () => {\n if (!user) return;\n const isLoggedIn = await Auth.currentAuthenticatedUser({ bypassCache: true });\n\n if (!isLoggedIn) return;\n\n if (userGroupOptions.length === 0) return;\n\n let organizations = [];\n let facilities = [];\n if (isAdmin) {\n ([\n organizations,\n facilities,\n ] = await Promise.all([\n asyncListAll(listOrganizations),\n asyncListAll(getClientsByTypeByCounty, {\n type: 'facility',\n filter: {\n isActive: { eq: 1 },\n },\n }),\n ]));\n } else {\n if (isOrgAdmin) {\n userGroupOptions.forEach((userGroupOption) => {\n if (userGroupOption.userGroupName === 'OrgAdmins' && userGroupOption.isActive === 1) {\n organizations.push(userGroupOption.organizationData);\n }\n });\n }\n if (isFacilityAdmin) {\n userGroupOptions.forEach((userGroupOption) => {\n if (userGroupOption.userGroupName === 'FacilityAdmins' && userGroupOption.isActive === 1) {\n facilities.push(userGroupOption.clientData);\n }\n });\n }\n }\n if (organizations.length > 0) {\n setOrganizations(organizations.sort(sortBy('name')));\n setFilteredOrganizations(organizations.sort(sortBy('name')));\n }\n if (facilities.length > 0) {\n setFacilities(facilities.sort(sortBy('name')));\n const facilitiesWithCountyLabel = getFacilitiesWithCountyLabel(facilities);\n setFilteredFacilities(facilitiesWithCountyLabel);\n }\n\n if (appGroup === 'FacilityAdmins') {\n const facility = facilities.find(({ id }) => id === facilityId);\n if (facility?.facilitySettings?.logoS3Keys?.[0]) {\n setLogoS3Keys(facility.facilitySettings.logoS3Keys);\n }\n if (facility?.shortId) {\n setClientShortId(facility?.shortId);\n }\n }\n })();\n }, [user, isAdmin, isOrgAdmin, isFacilityAdmin, userGroupOptions]);\n\n useEffect(() => {\n if (!logoS3Keys && !clientLogo) return;\n\n (async () => {\n if (logoS3Keys && logoS3Keys[0]) {\n const logo = await Storage.get(logoS3Keys[0]);\n setClientLogo(logo);\n } else {\n setClientLogo();\n }\n })();\n }, [logoS3Keys]);\n\n global.logger.debug({\n isAdmin,\n isOrgAdmin,\n isFacilityAdmin,\n isClient,\n facilities,\n organizations,\n organizationId,\n });\n\n const renderAdminButton = () => {\n if (appGroup === 'Admins') {\n return null;\n }\n return (\n <>\n {\n selectedUserGroupParams.userGroupName = 'Admins';\n cache.set('app:selectedUserGroupParams', selectedUserGroupParams);\n window.location.href = '/';\n }}\n disabled={appGroup === 'Admins'}\n >\n 切換管理員模式\n \n \n );\n };\n\n const renderOrganizationButton = () => {\n if (organizations.length <= 0 || (organizations.length === 1 && (appGroup === 'OrgAdmins'))) {\n return null;\n }\n return (\n <>\n setOrganizationAnchorEl(event.currentTarget)}\n className={classes.titleButton}\n >\n 切換組織模式\n \n setOrganizationAnchorEl(null)}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n >\n {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n event.stopPropagation();\n }\n }}\n />\n {filteredOrganizations.map((item) => {\n return (\n {\n selectedUserGroupParams.userGroupName = 'OrgAdmins';\n // 使用getOrganization避免因為listOrganizations讓裡面的client少了facilitySettings那一層的資料\n const { data: { getOrganization: orgData } } = await request(getOrganization, { id: item.id });\n selectedUserGroupParams.organizationId = item.id;\n selectedUserGroupParams.organizationData = orgData;\n selectedUserGroupParams.organizationClientIds = item.clients.items.map(({ clientId }) => clientId);\n cache.set('app:selectedUserGroupParams', selectedUserGroupParams);\n window.location.href = '/';\n }}\n disabled={item.id === organizationId}\n >\n {item.name}\n \n );\n })}\n \n \n );\n };\n\n const renderFacilityButton = () => {\n if (facilities.length <= 0 || (facilities.length === 1 && (appGroup === 'FacilityAdmins'))) {\n return null;\n }\n return (\n <>\n setFacilityAnchorEl(event.currentTarget)}\n className={classes.titleButton}\n >\n 切換機構模式\n \n setFacilityAnchorEl(null)}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n >\n {\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n event.stopPropagation();\n }\n }}\n />\n {filteredFacilities.map((item) => {\n if (item.isCountyLabel) {\n return (\n {item.county});\n }\n return (\n {\n selectedUserGroupParams.userGroupName = 'FacilityAdmins';\n selectedUserGroupParams.clientId = item.id;\n selectedUserGroupParams.clientData = item;\n cache.set('app:selectedUserGroupParams', selectedUserGroupParams);\n window.location.href = '/';\n }}\n disabled={item.id === facilityId}\n >\n {item.name}\n \n );\n })}\n \n \n );\n };\n\n const renderUserDrawerMenu = () => {\n const filteredRoutes = routes.filter((x) => !x.hideFromMenu);\n const subMenu = {};\n let folderIndex = 0;\n filteredRoutes.forEach((route, index) => {\n if (route.folder) {\n folderIndex = index;\n } else if (route.nested) {\n if (!subMenu[`folder${folderIndex}`]) {\n subMenu[`folder${folderIndex}`] = [];\n }\n subMenu[`folder${folderIndex}`].push(route);\n }\n });\n\n return (\n \n {filteredRoutes.filter((x) => !x.hideFromMenu).map((route, index) => {\n if (route.folder) {\n return (\n
\n {\n let newOpenSubmenu = [...openDrawerSubmenu];\n if (newOpenSubmenu.includes(index)) {\n newOpenSubmenu = newOpenSubmenu.filter((menuIndex) => menuIndex !== index);\n } else {\n newOpenSubmenu.push(index);\n }\n setOpenDrawerSubmenu(newOpenSubmenu);\n }}\n >\n \n {route.icon ? : null}\n \n \n {openDrawerSubmenu.includes(index) ? : }\n \n {subMenu[`folder${index}`] &&\n \n \n {subMenu[`folder${index}`].map((route) => (\n {\n setLastUpdatedAt(Date.now());\n }}\n >\n \n {route.icon ? : null}\n \n \n {route.badge && }\n \n ))}\n \n \n }\n
\n );\n } else if (!route.nested) {\n return (\n {\n setLastUpdatedAt(Date.now());\n }}\n >\n \n {route.icon ? : null}\n \n \n {route.badge && }\n \n );\n }\n })}\n {(!isFacilityAdmin && !isOrgAdmin && !isAdmin) &&\n publicRoutes.filter((x) => x.showOnHeader).map((route, index) => (\n \n \n {route.icon ? : null}\n \n \n \n ))}\n \n \n \n \n \n
\n \n \n \n \n \n \n );\n };\n\n return (\n \n \n \n {user ?\n \n {open ? : }\n :\n \n \n \n \n }\n {!open &&\n \n \n \n {visitorMode ? `${name}(訪客模式)`: name}\n \n \n \n }\n {user && (isFacilityAdmin || isAdmin) && (appGroup !== 'OrgAdmins') &&\n \n \n \n }\n {/* {user && (isFacilityAdmin || isAdmin) && (appGroup !== 'OrgAdmins') &&\n \n \n \n } */}\n \n {(!isFacilityAdmin && !isOrgAdmin && !isAdmin) &&\n publicRoutes.filter((x) => x.showOnHeader).map((route, index) => (\n {\n // // setLastUpdatedAt(Date.now());\n // // history.push((route.link || route.path));\n // }}\n key={index}\n >\n {route.icon && }\n  \n {route.title}\n \n ))}\n \n
\n\n {(isFacilityAdmin || isOrgAdmin || isAdmin) &&\n }\n\n {user ?\n \n {isAdmin && renderAdminButton()}\n {(isAdmin || isOrgAdmin) && renderOrganizationButton()}\n {(isAdmin || isFacilityAdmin) && renderFacilityButton()}\n {(isAdmin && !facilityId) &&\n setLocationAnchorEl(event.currentTarget) : undefined}\n className={classes.titleButton}\n >\n {location}\n }\n setLocationAnchorEl(null)}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n >\n {\n localStorage.removeItem('app:location');\n setLocation('全國');\n setLocationAnchorEl(null);\n window.location.reload();\n }}\n >\n 全國\n \n {counties.map((item)=>(\n {\n cache.set('app:location', item);\n setLocation(item);\n setLocationAnchorEl(null);\n window.location.reload();\n }}\n >\n {item}\n \n ))}\n \n\n {!facilityId &&\n }\n startIcon={}\n className={classes.titleButton}\n >\n {/* {userName} */}\n }\n {clientShortId &&\n \n 機構代碼:{clientShortId}\n }\n :\n \n \n {customer === 'pingtung' && }\n buttonStyle={{ color: 'white ', borderColor: 'white', borderRadius: '20px' }}\n newTab\n />\n }\n {!customer && }\n buttonStyle={{ color: 'white ', borderColor: 'white', borderRadius: '20px' }}\n newTab\n />}\n \n \n }\n \n \n \n \n \n {username}\n \n \n \n \n {/* {userCognitoGroupLabel} */}\n 登出\n \n \n \n \n \n \n\n {/* Side panel */}\n onUpdate(false)}\n >\n {clientLogo ?\n
\n \n \n \n
:\n
\n \n \n {shortName}\n \n \n {visitorMode &&\n \n 訪客模式\n }\n
\n }\n \n {user ? renderUserDrawerMenu() :\n \n {/* history.push('/application')}>\n \n \n */}\n {(!isFacilityAdmin && !isOrgAdmin && !isAdmin) &&\n publicRoutes.filter((x) => x.showOnHeader).map((route, index) => (\n {\n // // setLastUpdatedAt(Date.now());\n // // history.push((route.link || route.path));\n // }}\n key={index}>\n \n {route.icon ? : null}\n \n \n \n ))}\n \n \n \n {\"partner\"}\n \n \n \n }\n \n \n );\n}\n\nCustomAppBar.propTypes = {\n user: PropTypes.object,\n routes: PropTypes.array.isRequired,\n open: PropTypes.bool,\n onUpdate: PropTypes.func.isRequired,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Button from '@material-ui/core/Button';\nimport Popper from '@material-ui/core/Popper';\nimport Paper from '@material-ui/core/Paper';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport MenuList from '@material-ui/core/MenuList';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport PersonOutlineOutlinedIcon from '@material-ui/icons/PersonOutlineOutlined';\nimport { Auth } from 'aws-amplify';\nimport Version from 'components/Version';\nimport UserAvatar from 'components/UserAvatar';\nimport { SHORT_NAME } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport useCustomAuth from 'hooks/useCustomAuth';\nimport { useCache } from 'CacheProvider';\nimport CustomAuthDialog from 'components/Auth/CustomAuthDialog';\n\nconst useStyles = makeStyles((theme) => ({\n flexbox: {\n flexGrow: 1,\n },\n img: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n },\n loginButton: {\n borderRadius: '20px',\n },\n}));\n\nexport default function IndividualClientAppBar({ user, onUpdate }) {\n const classes = useStyles();\n const [openMenu, setOpenMenu] = useState(false);\n const { signOut } = useCustomAuth();\n const { userGroupOptions } = useCache();\n\n const anchorRef = useRef(null);\n const prevOpen = useRef(false);\n\n const username = cache.get('app:username') || '';\n const userName = cache.get('app:name') || '';\n\n function handleToggleMenu() {\n setOpenMenu((prevOpen) => !prevOpen);\n }\n\n function handleCloseMenu(event) {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return;\n }\n setOpenMenu(false);\n }\n\n useEffect(() => {\n if (prevOpen && prevOpen.current === true && openMenu === false) {\n anchorRef.current && anchorRef.current.focus();\n }\n\n prevOpen.current = openMenu;\n }, [openMenu]);\n\n async function handleSignOut(event) {\n handleCloseMenu(event);\n await signOut();\n }\n\n useEffect(() => {\n (async () => {\n if (!user) return;\n const isLoggedIn = await Auth.currentAuthenticatedUser({ bypassCache: true });\n\n if (!isLoggedIn) return;\n\n if (userGroupOptions.length === 0) return;\n })();\n }, [user, userGroupOptions]);\n\n return (\n \n \n \n \n \n {SHORT_NAME}\n \n \n
\n {user ?\n }\n /> :\n (\n }\n variant='outlined'\n className={classes.loginButton}\n {...props}\n >\n 註冊/登入\n \n )}\n />\n }\n \n \n \n \n \n {userName}\n \n \n \n \n 登出\n \n \n \n \n \n \n \n );\n}\n\nIndividualClientAppBar.propTypes = {\n user: PropTypes.object,\n onUpdate: PropTypes.func.isRequired,\n};\n","import React, { useState, useEffect, Fragment } from 'react';\nimport { Hub } from 'aws-amplify';\nimport WinboxReact from 'winbox-react';\n\nimport RestaurantDetails from 'components/RestaurantDetails';\n\nconst winboxOptions = {\n x: 'center',\n y: 'center',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\n\nexport default function Winbox() {\n const [show, setShow] = useState(false);\n const [title, setTitle] = useState('');\n const [content, setContent] = useState(null);\n\n useEffect(() => {\n const winboxListener = ({ payload: { event, data } }) => {\n global.logger.debug(event, data);\n switch (event) {\n case 'restaurant':\n setTitle('餐廳');\n setContent();\n break;\n default:\n }\n setShow(true);\n };\n Hub.listen('winbox', winboxListener);\n\n return () => {\n Hub.remove('winbox', winboxListener);\n };\n }, []);\n\n return (\n \n {show && content &&\n setShow(false)}\n className=\"winbox-container\"\n {...winboxOptions}\n >\n {content}\n }\n \n );\n}\n","import { createStore, combineReducers } from 'redux';\nimport { reducer as toastrReducer } from 'react-redux-toastr';\nconst reducers = {\n // ... other reducers ...\n toastr: toastrReducer, // <- Mounted at toastr.\n};\nconst reducer = combineReducers(reducers);\nconst store = createStore(reducer);\n\nexport default store;\n","import React from 'react';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Link from '@material-ui/core/Link';\nimport Typography from '@material-ui/core/Typography';\nimport moment from 'moment-timezone';\n\nimport Version from 'components/Version';\n\nexport default function Footer() {\n return (\n \n \n \n \n © {moment().format('YYYY')} 銀色大門 All Rights Reserved \n \n \n \n 隱私權及保護政策\n \n \n 會員服務條款\n \n \n \n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\n// import DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\n\nimport Loading from 'components/Loading';\nimport useCustomAuth from 'hooks/useCustomAuth';\nimport { useCache } from 'CacheProvider';\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n // minWidth: 480,\n },\n content: {\n padding: theme.spacing(2),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}));\n\nexport default function UserGroupSelector({ user, onSelectedUserGroup }) {\n const classes = useStyles();\n const [value, setValue] = useState('0');\n const { signOut } = useCustomAuth();\n const { userGroupOptions } = useCache();\n\n const handleChange = (event) => {\n setValue(`${event.target.value}`);\n };\n\n const handleSubmit = async (inValue) => {\n if (inValue === '-1') { // no group is avaliable\n onSelectedUserGroup(undefined);\n await signOut();\n return;\n }\n const {\n userGroupName,\n clientId,\n clientData,\n organizationId,\n organizationData,\n organizationClientIds,\n } = userGroupOptions[inValue || value];\n\n onSelectedUserGroup({\n userGroupName,\n clientId,\n clientData,\n organizationId,\n organizationData,\n organizationClientIds,\n });\n };\n\n useEffect(() => {\n (async () => {\n if (!user) return;\n\n const firstActiveGroup = userGroupOptions.findIndex((option) => option.isActive === 1);\n setValue(firstActiveGroup.toString());\n\n if (userGroupOptions.length === 1 && firstActiveGroup !== -1) {\n const {\n userGroupName,\n clientId,\n clientData,\n organizationId,\n organizationData,\n organizationClientIds,\n } = userGroupOptions[0];\n\n onSelectedUserGroup({\n userGroupName,\n clientId,\n clientData,\n organizationId,\n organizationData,\n organizationClientIds,\n });\n }\n })();\n }, [user, userGroupOptions]);\n\n if (userGroupOptions.length === 0) {\n return ();\n }\n\n console.log('userGroupOptions', userGroupOptions);\n\n return (\n \n {}}\n // disableBackdropClick={true}\n disableEscapeKeyDown={true}\n aria-labelledby=\"usergroup-selector\"\n className={classes.dialog}\n >\n \n \n \n \n 選擇登入方式\n \n {userGroupOptions.map(({ label, isActive }, index) => {\n let userGroupStatus = '';\n if (isActive === 2) {\n userGroupStatus = '(帳號停用中,請聯繫客服。)';\n } else if (isActive === 0) {\n userGroupStatus = '(帳號審核中)';\n }\n return (\n }\n label={`${label} ${userGroupStatus}`}\n disabled={isActive !== 1}\n />);\n })}\n \n \n \n \n handleSubmit(value)}\n disabled={userGroupOptions.length === 0}\n >\n 確認\n \n \n \n \n \n \n );\n}\n\nUserGroupSelector.propTypes = {\n user: PropTypes.object,\n onSelectedUserGroup: PropTypes.func,\n};\n","import React, { useEffect } from 'react';\nimport useCustomAuth from 'hooks/useCustomAuth';\nimport cache from 'utilities/cache';\n\nexport default function Reset() {\n const { signOut } = useCustomAuth();\n\n useEffect(() => {\n cache.reset();\n signOut();\n }, []);\n\n return (\n
系統重啟中,請稍候...
\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { formatDatetime } from 'utilities/format';\nimport InfoCard from '../Card/InfoCard';\n\nexport default function PublicOrderCard({ data: inData, onUpdate, ...props }) {\n const { t } = useTranslation();\n const [data, setData] = useState({});\n\n let mappings = [];\n if (Object.keys(data).length !== 0) {\n mappings = [\n { key: 'id', label: '訂單編號' },\n { key: 'deliveryBy', label: '日期時間', format: formatDatetime },\n { key: 'restaurant', label: `${t('餐廳')}`, format: (restaurant) => restaurant.name },\n { key: 'mealItems', label: `${t('餐點')}`,\n format: (mealItems) => mealItems.map(({ name, quantity }) => `${name} x${quantity}`).join(', ') },\n { key: 'noteForMeal', label: `${t('餐點')}備註` },\n { key: 'noteForDelivery', label: `${t('送餐')}備註` },\n { key: 'total', label: `${t('餐點')}總金額` },\n ];\n if (data.deliveryStaffFee !== 0) {\n mappings.push({ key: 'deliveryStaffFee', label: t('送餐費用') });\n }\n }\n\n useEffect(() => {\n if (inData) {\n setData(inData);\n }\n }, [inData]);\n\n return (\n \n );\n}\n\nPublicOrderCard.propTypes = {\n data: PropTypes.object,\n onUpdate: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport DeliveryStaffOrderPhoto from 'components/DeliveryStaffOrderPhoto';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport { formatNote } from 'utilities/format';\nimport InfoCard from 'components/Card/InfoCard';\nimport { deliveryResult } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: '100%',\n },\n img: {\n height: 200,\n padding: 15,\n },\n}));\n\nexport default function PublicDeliveryStaffOrderCard({ data = {} }) {\n const classes = useStyles();\n const { t } = useTranslation();\n const { deliveryResult: inDeliveryResult } = data;\n const result = (deliveryResult.find(({ value }) => value === inDeliveryResult) || {}).label;\n const checklists = [\n { key: 'checkListIsComplete', label: `${t('送餐')}完成${result ? '(' + result + ')' : ''}` },\n { key: 'checkListReminder', label: t('生活提醒(氣候、保暖、補充水份)') },\n { key: 'checkListChat', label: t('跟長輩聊天關心(身體、生活)') },\n ];\n\n return (\n \n \n \n {\n (data.photoS3Keys || []).map((s3Key)=>(\n \n \n \n ))\n }\n \n \n {checklists.map(({ label, key })=>(\n
\n {data[key] ? :\n }\n {label}\n
\n ))}\n \n 日誌\n \n {formatNote(data.diary || '無')}\n
\n
\n
\n );\n}\n\nPublicDeliveryStaffOrderCard.propTypes = {\n data: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\n\nimport { queryPublicOrder } from 'graphql/mutations';\nimport { request } from 'utilities/graph';\nimport { Colors } from '@silvergatedelivery/constants';\n\nimport PublicOrderCard from './PublicOrderCard';\nimport PublicDeliveryStaffOrderCard from './PublicDeliveryStaffOrderCard';\nimport OrderStatusProgress from './OrderStatusProgress';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: '100vh',\n overflow: 'auto',\n },\n container: {\n flex: 1,\n backgroundColor: Colors.background.light,\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n space: {\n height: theme.spacing(2),\n },\n}));\n\nexport default function PublicOrder({ id }) {\n const classes = useStyles();\n const [data, setData] = useState();\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [invalidOrder, setInvalidOrder] = useState(false);\n\n useEffect(() => {\n const getInfo = async () => {\n const { data: { queryPublicOrder: result } } = await request(queryPublicOrder, {\n input: { orderId: id },\n }, 'API_KEY');\n\n if (result.message === 'success') {\n setData(JSON.parse(result.data));\n } else {\n setInvalidOrder(true);\n }\n };\n getInfo();\n }, [id, lastUpdatedAt]);\n\n if (invalidOrder) {\n return (\n \n 訂單不存在\n );\n }\n\n if (!data) return null;\n\n return (\n
\n \n \n {\n setLastUpdatedAt(Date.now());\n }}\n />\n \n { data.deliveryStaffOrder && (\n \n
\n \n \n \n )}\n
\n \n \n \n \n \n \n
\n );\n}\n\nPublicOrder.propTypes = {\n id: PropTypes.string.isRequired,\n};\n","import { countiesDistricts } from '@silvergatedelivery/constants';\n\nexport const getDistrictsInCounty = (inCounty) => countiesDistricts.filter(({ county }) => county === inCounty)\n .reduce((all, { districts }) => {\n const items = districts.map((district) => (district));\n return [...all, ...items];\n }, []);\n\nexport const getZipCode = (inCounty, district) => {\n const result = countiesDistricts.find(({ county, districts }) => county === inCounty && districts.includes(district));\n if (result) {\n return result.zipCode;\n }\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport {\n counties, countiesDistricts,\n} from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { getDistrictsInCounty, getZipCode } from 'utilities/address';\nimport { formatAddress } from 'utilities/format';\nimport { request } from 'utilities/graph';\nimport { queryAddress } from 'graphql/mutations';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Backdrop from '@material-ui/core/Backdrop';\n\nconst Location = ({ onGoPage }) => {\n const [county, setCounty] = useState(counties[0]);\n const [district, setDistrict] = useState(countiesDistricts[0].districts[0]);\n const [districts, setDistricts] = useState(getDistrictsInCounty(counties[0]));\n const [street, setStreet] = useState('');\n const [errorMsg, setErrorMsg] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setIsLoading(true);\n const params = {\n input: {\n address: formatAddress({ county, district, street }),\n },\n };\n let lat;\n let lng;\n try {\n const {\n data: {\n queryAddress: {\n success, data,\n },\n },\n } = await request(queryAddress, params);\n if (!success) {\n setErrorMsg('無法定位地址,請重新確認輸入的地址');\n setIsLoading(false);\n return;\n } else {\n lat = data.lat;\n lng = data.lng;\n setErrorMsg();\n }\n } catch (e) {\n console.log(e);\n setErrorMsg('無法定位地址,請重新確認輸入的地址');\n setIsLoading(false);\n return;\n }\n setIsLoading(false);\n\n const zipCode = getZipCode(county, district);\n cache.set('public:menu2-address', { county, district, street, zipCode, lat, lng });\n onGoPage && onGoPage('meals');\n };\n\n const onCountyChange = (newCounty) => {\n if (newCounty !== county) {\n setCounty(newCounty);\n const newDistricts = getDistrictsInCounty(newCounty);\n setDistricts(newDistricts);\n setDistrict(newDistricts[0]);\n }\n };\n\n return (\n \n \n \n 營養豐盛的餐點就在大門口\n \n \n 無論日子,不分城鄉\n \n \n 長者在哪裡,餐點就送到哪裡\n \n \n 快來輸入地址訂餐吧!\n \n \n \n
\n \n \n \n 縣市\n onCountyChange(e.target.value)}\n label=\"縣市\"\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n \n 鄉鎮市區\n setDistrict(e.target.value)}\n label=\"鄉鎮市區\"\n >\n {districts.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n setStreet(e.target.value)}\n />\n \n \n \n \n \n
\n
\n {errorMsg && \n \n {errorMsg}\n \n }\n
\n );\n};\n\nexport default Location;\n\nLocation.propTypes = {\n onGoPage: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Typography from '@material-ui/core/Typography';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTheme } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}));\n\nconst CustomDialogTitle = ({ children, onClose, ...other }) => {\n const classes = useStyles();\n return (\n \n {children}\n {onClose ? (\n \n \n \n ) : null}\n \n );\n};\n\nCustomDialogTitle.propTypes = {\n children: PropTypes.node,\n onClose: PropTypes.func,\n};\n\nexport default function AutoSizeDialog({\n children,\n open=false,\n title = '新增資料',\n onClose,\n hideCloseButton = false,\n maxWidth = 'md',\n exitConfirm = false,\n}) {\n const theme = useTheme();\n\n // 當螢幕寬度小於 sm 時,設置為全螢幕\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n if (exitConfirm && !window.confirm('確定要關閉嗎?')) {\n return;\n }\n onClose && onClose();\n };\n\n return (\n \n \n \n {title}\n \n {children}\n \n \n );\n}\n\nAutoSizeDialog.propTypes = {\n children: PropTypes.node,\n open: PropTypes.bool,\n title: PropTypes.string,\n onClose: PropTypes.func,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n exitConfirm: PropTypes.bool,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport { WEEKDAYS_LONG } from '@silvergatedelivery/constants';\n\nconst dayMapping = [\n 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday',\n];\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n}));\n\nexport default function OpeningHoursDialog({ restaurant }) {\n const classes = useStyles();\n const [showDialog, setShowDialog] = useState(false);\n\n const onClose = () => {\n setShowDialog(false);\n };\n\n const { name, holidays, openingHours } = restaurant || {};\n\n if (!openingHours || !holidays) {\n return <>;\n }\n\n if (!dayMapping.some((day) => openingHours[day].length !== 0)) {\n return <>;\n }\n const renderOpeningHours = (day) => {\n if (openingHours[day].length === 0) {\n return '休息';\n }\n const formatTime = (timeString) => timeString.split(':').slice(0, 2).join(':');\n return openingHours[day].map(({ startTime, endTime }) =>\n `${formatTime(startTime)} - ${formatTime(endTime)}`).join('、');\n };\n\n const renderHoliday = (day) => {\n let allHolidays = [];\n holidays.forEach(({ closedDays }) => {\n allHolidays = allHolidays.concat(closedDays);\n });\n\n return allHolidays.join('、');\n };\n\n return (\n \n setShowDialog(true)}\n >\n 營業時間\n \n \n onClose()}\n >\n \n \n \n \n {name}\n \n \n \n \n {dayMapping.map((day, index) => {\n return \n \n {`${WEEKDAYS_LONG[index]}`}\n \n \n {renderOpeningHours(day)}\n \n ;\n })}\n {holidays.length !== 0 &&\n \n \n 近期公休日\n \n \n {renderHoliday()}\n \n }\n \n \n \n \n \n \n );\n}\n\nOpeningHoursDialog.propTypes = {\n restaurant: PropTypes.object.isRequired,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport { Storage } from 'aws-amplify';\nimport TagChip from 'components/TagChip';\nimport { formatDatetime } from 'utilities/format';\nimport OpeningHoursDialog from '../components/OpeningHoursDialog';\n\nconst useStyles = makeStyles({\n card: {\n cursor: 'pointer',\n height: '100%',\n },\n mediaContainer: {\n position: 'relative',\n marginLeft: 10,\n },\n media: {\n height: 150,\n opacity: 0.1,\n },\n imageContainer: {\n position: 'absolute',\n top: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n },\n img: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n },\n});\n\nexport default function MealItem({ order, onChecked, disableCheck=false, checked, onOrderUpdate }) {\n const [imgSrc, setImgSrc] = useState();\n const classes = useStyles();\n\n // TODO: 一訂單多餐點\n useEffect(() => {\n if (order?.mealItems[0]?.imageS3Keys[0]) {\n (async () => {\n const newImgSrc = await Storage.get(order.mealItems[0].imageS3Keys[0]);\n setImgSrc(newImgSrc);\n })();\n } else {\n setImgSrc('/images/meal.webp');\n }\n }, [order]);\n\n const { quotation } = order || {};\n const { date, time } = order?.dateTime || {};\n const { name, price, tags, restaurant, quantity } = order?.mealItems[0] || {};\n\n return (\n \n \n \n {\n onChecked && onChecked(e.target.checked);\n }}\n disabled={disableCheck}\n />\n \n \n {restaurant.name}\n \n \n \n \n \n \n \n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n
\n \n \n \n \n {name} x {quantity}\n \n \n \n \n ${price}\n \n \n \n \n 運費\n \n \n \n {!quotation && \n 計算中\n }\n {quotation?.code === 'SUCCESS' && \n ${quotation?.deliveryStaffFee}\n }\n {quotation?.code === 'OUT_OR_RANGE' && \n 距離過遠,請重新選擇餐廳\n }\n \n
\n\n {tags.items.map(({ tag }, index)=>(\n \n ))}\n \n
\n \n \n \n {}}\n />\n \n \n {}}\n />\n \n \n {\n onOrderUpdate && onOrderUpdate({ noteForMeal: e.target.value });\n }}\n />\n \n {order.restaurantClosed &&\n \n \n 餐廳無營業\n \n }\n \n \n \n
\n );\n}\n\nMealItem.propTypes = {\n order: PropTypes.object,\n onChecked: PropTypes.func,\n disableCheck: PropTypes.bool,\n checked: PropTypes.bool,\n onOrderUpdate: PropTypes.func,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport {\n counties, countiesDistricts,\n} from '@silvergatedelivery/constants';\nimport { getDistrictsInCounty, getZipCode } from 'utilities/address';\n\nexport default function AddressInput({ data, onChange }) {\n const [county, setCounty] = useState(data?.county || counties[0]);\n const [district, setDistrict] = useState(data?.district || countiesDistricts[0].districts[0]);\n const [districts, setDistricts] = useState(getDistrictsInCounty(data?.county || counties[0]));\n const [street, setStreet] = useState(data?.street || '');\n const [note, setNote] = useState(data?.note || '');\n\n const onCountyChange = (newCounty) => {\n if (newCounty !== county) {\n setCounty(newCounty);\n const newDistricts = getDistrictsInCounty(newCounty);\n setDistricts(newDistricts);\n setDistrict(newDistricts[0]);\n const zipCode = getZipCode(newCounty, newDistricts[0]);\n onChange && onChange({\n county: newCounty,\n district: newDistricts[0],\n street,\n note,\n zipCode,\n });\n }\n };\n\n const updateAddress = (toUpdateProps) => {\n const updatedAddress = Object.assign({ county, district, street, note }, toUpdateProps);\n const zipCode = getZipCode(updatedAddress.county, updatedAddress.district);\n\n onChange && onChange({ ...updatedAddress, zipCode });\n };\n\n return (\n \n \n \n \n \n 縣市\n {\n onCountyChange(e.target.value);\n }}\n label=\"縣市\"\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n \n 鄉鎮市區\n {\n setDistrict(e.target.value);\n updateAddress({ district: e.target.value });\n }}\n label=\"鄉鎮市區\"\n >\n {districts.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n {\n setStreet(e.target.value);\n updateAddress({ street: e.target.value });\n }}\n />\n \n \n {\n setNote(e.target.value);\n updateAddress({ note: e.target.value });\n }}\n />\n \n \n \n \n );\n}\n\nAddressInput.propTypes = {\n onChange: PropTypes.func,\n data: PropTypes.object,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport AddressInput from './AddressInput';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n actionButton: {\n width: '80%',\n borderRadius: '20px',\n color: 'white',\n },\n}));\n\nexport default function AddressDialog({\n label,\n formData,\n onUpdate,\n hideCloseButton = false,\n fullScreen = true,\n maxWidth = 'md',\n defaultValue,\n allowEdit = false,\n}) {\n const classes = useStyles();\n const [showDialog, setShowDialog] = useState(false);\n const [address, setAddress] = useState(formData?.county ? JSON.parse(JSON.stringify(formData)) : defaultValue);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n setShowDialog(false);\n // reset data\n setAddress(formData?.name ? JSON.parse(JSON.stringify(formData)) : defaultValue);\n };\n\n const onAddressChange = (address) => {\n setAddress(address);\n };\n\n return (\n \n {\n if (allowEdit) {\n setShowDialog(true);\n }\n }}\n >\n \n \n {label || ''}\n \n \n {allowEdit && \n \n \n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n {\n onUpdate && onUpdate(address);\n setShowDialog(false);\n }}\n >\n 確認\n \n \n \n \n \n \n );\n}\n\nAddressDialog.propTypes = {\n label: PropTypes.string,\n formData: PropTypes.object,\n onUpdate: PropTypes.func,\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n defaultValue: PropTypes.object,\n allowEdit: PropTypes.bool,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\n\nexport default function ReceiverInput({ data, onChange }) {\n const [receiver, setReceiver] = useState(JSON.parse(JSON.stringify(data)));\n\n const updateReceiver = (toUpdateProps = {}) => {\n const updatedReceiver = Object.assign(receiver, toUpdateProps);\n setReceiver({ ...updatedReceiver });\n onChange && onChange(updatedReceiver);\n };\n\n return (\n \n \n \n \n \n updateReceiver({ name: e.target.value })}\n fullWidth\n error={receiver.name.length === 0}\n helperText={ receiver.name.length === 0 ? '必填' : '' }\n placeholder='請填寫取餐人姓名'\n />\n \n \n updateReceiver({ phoneNumber: e.target.value })}\n fullWidth\n error={receiver.phoneNumber.length === 0}\n helperText={ receiver.phoneNumber.length === 0 ? '必填' : '' }\n placeholder='請填寫聯絡電話'\n />\n \n \n updateReceiver({ phoneNumber2: e.target.value })}\n fullWidth\n placeholder='請填寫備用電話'\n />\n \n \n updateReceiver({ phoneNumber3: e.target.value })}\n fullWidth\n placeholder='請填寫備用電話'\n />\n \n \n updateReceiver({ noteForDelivery: e.target.value })}\n fullWidth\n placeholder='例如:講話請大聲'\n />\n \n \n \n \n \n );\n}\n\nReceiverInput.propTypes = {\n onChange: PropTypes.func,\n data: PropTypes.object,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport ReceiverInput from './ReceiverInput';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n actionButton: {\n width: '80%',\n borderRadius: '20px',\n color: 'white',\n },\n}));\n\nexport default function ReceiverDialog({\n label,\n formData,\n onUpdate,\n hideCloseButton = false,\n fullScreen = true,\n maxWidth = 'md',\n defaultValue,\n}) {\n const classes = useStyles();\n const [showDialog, setShowDialog] = useState(false);\n const [receiver, setReceiver] = useState(formData?.name ? JSON.parse(JSON.stringify(formData)) : defaultValue);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n setShowDialog(false);\n // reset data\n setReceiver(formData?.name ? JSON.parse(JSON.stringify(formData)) : defaultValue);\n };\n\n const onReceiverChange = (receiver) => {\n setReceiver(receiver);\n };\n\n const receiverValid = () => {\n if (receiver.name.length === 0 || receiver.phoneNumber.length === 0) {\n return false;\n }\n return true;\n };\n\n return (\n \n {\n setShowDialog(true);\n }}\n >\n \n \n {label || ''}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n onUpdate && onUpdate(receiver);\n setShowDialog(false);\n }}\n disabled={!receiverValid()}\n >\n 確認\n \n \n \n \n \n \n );\n}\n\nReceiverDialog.propTypes = {\n label: PropTypes.string,\n formData: PropTypes.object,\n onUpdate: PropTypes.func,\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n defaultValue: PropTypes.object,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport Typography from '@material-ui/core/Typography';\n\nexport default function InvoiceInput({ data, onChange }) {\n const [invoice, setInvoice] = useState(JSON.parse(JSON.stringify(data)));\n\n const updateInvoice = (toUpdateProps = {}) => {\n const updatedInvoice = Object.assign(invoice, toUpdateProps);\n setInvoice({ ...updatedInvoice });\n onChange && onChange(updatedInvoice);\n };\n\n return (\n \n \n \n updateInvoice({ type: e.target.value })}\n >\n } label=\"個人\" style={{ width: '100%' }}/>\n {invoice.type === 'individual' && (\n \n \n updateInvoice({ carrier: e.target.value })}\n fullWidth\n placeholder='請輸入載具(需加上\"/\")'\n />\n \n \n updateInvoice({ email: e.target.value })}\n fullWidth\n error={invoice.email.length === 0}\n helperText={ invoice.email.length === 0 ? '必填' : '' }\n placeholder='請輸入聯絡信箱'\n />\n \n \n )}\n\n } label=\"企業\" style={{ width: '100%' }}/>\n {invoice.type === 'enterprise' && (\n \n \n updateInvoice({ title: e.target.value })}\n fullWidth\n error={invoice.title.length === 0}\n helperText={ invoice.title.length === 0 ? '必填' : '' }\n placeholder='請輸入抬頭'\n />\n \n \n updateInvoice({ taxIdNumber: e.target.value })}\n fullWidth\n error={invoice.taxIdNumber.length === 0}\n helperText={ invoice.taxIdNumber.length === 0 ? '必填' : '' }\n placeholder='請輸入統編'\n />\n \n \n updateInvoice({ email: e.target.value })}\n fullWidth\n error={invoice.email.length === 0}\n helperText={ invoice.email.length === 0 ? '必填' : '' }\n placeholder='請輸入聯絡信箱'\n />\n \n \n )}\n\n } label=\"捐贈給社團法人銀色大門老人福利組織\" />\n {invoice.type === 'donation' && (\n \n 非常感謝您的捐贈\n \n )}\n\n \n \n \n \n );\n}\n\nInvoiceInput.propTypes = {\n onChange: PropTypes.func,\n data: PropTypes.object,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport InvoiceInput from './InvoiceInput';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n actionButton: {\n width: '80%',\n borderRadius: '20px',\n color: 'white',\n },\n}));\n\nexport default function InvoiceDialog({\n label,\n formData,\n onUpdate,\n hideCloseButton = false,\n fullScreen = true,\n maxWidth = 'md',\n defaultValue,\n}) {\n const classes = useStyles();\n const [showDialog, setShowDialog] = useState(false);\n const [invoice, setInvoice] = useState(formData?.type ? JSON.parse(JSON.stringify(formData)) : defaultValue);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n setShowDialog(false);\n // reset data\n setInvoice(formData?.type ? JSON.parse(JSON.stringify(formData)) : defaultValue);\n };\n\n const onInvoiceChange = (invoice) => {\n setInvoice(invoice);\n };\n\n const invoiceValid = () => {\n if (invoice.type === 'individual') {\n if (invoice.email.length === 0) {\n return false;\n }\n } else if (invoice.type === 'enterprise') {\n if (invoice.email.length === 0 || invoice.title.length === 0 || invoice.taxIdNumber.length === 0) {\n return false;\n }\n }\n return true;\n };\n\n return (\n \n {\n setShowDialog(true);\n }}\n >\n \n \n {label || ''}\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n {\n onUpdate && onUpdate(invoice);\n handleClose();\n }}\n disabled={!invoiceValid()}\n >\n 確認\n \n \n \n \n \n \n );\n}\n\nInvoiceDialog.propTypes = {\n label: PropTypes.string,\n formData: PropTypes.object,\n onUpdate: PropTypes.func,\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n defaultValue: PropTypes.object,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\n\nexport default function PaymentInput({ data, onChange }) {\n const [payment, setPayment] = useState(JSON.parse(JSON.stringify(data)));\n\n const updatePayment = (updatedPayment) => {\n setPayment(updatedPayment);\n onChange && onChange(updatedPayment);\n };\n\n return (\n \n \n \n updatePayment({ type: e.target.value })}\n >\n } label=\"LINE Pay\" style={{ width: '100%' }}/>\n } label=\"信用卡或網路ATM(藍新金流)\" style={{ width: '100%' }}/>\n \n \n \n \n );\n}\n\nPaymentInput.propTypes = {\n onChange: PropTypes.func,\n data: PropTypes.object,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport { makeStyles } from '@material-ui/core/styles';\n// import IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\n// import KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport PaymentInput from './PaymentInput';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n actionButton: {\n width: '80%',\n borderRadius: '20px',\n color: 'white',\n },\n}));\n\nconst defaultPayment = { type: 'linepay' };\n\nexport default function PaymentDialog({\n label,\n formData,\n onUpdate,\n hideCloseButton = false,\n fullScreen = true,\n maxWidth = 'md',\n}) {\n const classes = useStyles();\n const [showDialog, setShowDialog] = useState(false);\n const [payment, setPayment] = useState(formData?.type ? JSON.parse(JSON.stringify(formData)) : defaultPayment);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n setShowDialog(false);\n // reset data\n setPayment(formData?.type ? JSON.parse(JSON.stringify(formData)) : defaultPayment);\n };\n\n const onPaymentChange = (payment) => {\n setPayment(payment);\n };\n\n return (\n \n {\n // setShowDialog(true);\n }}\n >\n \n \n {label || ''}\n \n \n {/* \n \n \n \n */}\n \n \n \n \n \n \n \n \n \n \n \n \n {\n onUpdate && onUpdate(payment);\n setShowDialog(false);\n }}\n >\n 確認\n \n \n \n \n \n \n );\n}\n\nPaymentDialog.propTypes = {\n label: PropTypes.string,\n formData: PropTypes.object,\n onUpdate: PropTypes.func,\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Storage } from 'aws-amplify';\n\nconst useStyles = makeStyles({\n card: {\n height: '100%',\n paddingBottom: 10,\n },\n mediaContainer: {\n position: 'relative',\n marginLeft: 10,\n },\n media: {\n height: 150,\n opacity: 0.1,\n },\n imageContainer: {\n position: 'absolute',\n top: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n },\n img: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n },\n});\n\nexport default function OrderDetail({ order }) {\n const [imgSrc, setImgSrc] = useState();\n const classes = useStyles();\n const { dateTime: { date = '', time = '' } = {}, mealItems, quotation } = order || {};\n\n useEffect(() => {\n const meal = mealItems && mealItems[0];\n if (meal?.imageS3Keys[0]) {\n (async () => {\n const newImgSrc = await Storage.get(meal.imageS3Keys[0]);\n setImgSrc(newImgSrc);\n })();\n } else {\n setImgSrc('/images/meal.webp');\n }\n }, [mealItems]);\n\n const meal = mealItems && mealItems[0]; // TODO: 處理多餐點\n const { name, price, restaurant } = meal || {};\n\n return (\n \n \n \n \n {restaurant.name}\n \n \n \n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n
\n
\n \n \n \n \n {name}\n \n \n \n \n ${price}\n \n \n \n \n \n \n 運費\n \n \n \n \n ${quotation?.deliveryStaffFee === undefined ? '計算中' : quotation?.deliveryStaffFee }\n \n \n
\n \n \n {`外送日期:${date}`}\n \n \n \n \n {`外送時間:${time}`}\n \n \n \n \n {`餐點備註:${order.noteForMeal || '無'}`}\n \n \n \n \n
\n );\n}\n\nOrderDetail.propTypes = {\n order: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\n// import Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport Card from '@material-ui/core/Card';\nimport Divider from '@material-ui/core/Divider';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Link from '@material-ui/core/Link';\nimport cache from 'utilities/cache';\nimport { formatAddress } from 'utilities/format';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { createElder, updateElder, individualClientCreateOrder } from 'graphql/mutations';\nimport { getEldersByClientByStatus, getUser } from 'graphql/queries';\nimport LinePayButton from 'components/Payment/LinePayButton';\nimport NewebPayButton from 'components/Payment/NewebPayButton';\nimport moment from 'moment';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { useCache } from 'CacheProvider';\nimport AddressDialog from './AddressDialog';\nimport ReceiverDialog from './ReceiverDialog';\nimport InvoiceDialog from './InvoiceDialog';\nimport PaymentDialog from './PaymentDialog';\nimport OrderDetail from './OrderDetail';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport { sortBy } from 'utilities/sorting';\nimport { useHistory } from 'react-router-dom';\n\nconst defaultAddress = {\n county: '臺北市',\n district: '中正區',\n street: '',\n note: '',\n};\nconst defaultReceiver = {\n name: '',\n phoneNumber: '',\n phoneNumber2: '',\n phoneNumber3: '',\n noteForDelivery: '',\n};\nconst defaultInvoice = {\n type: 'individual',\n email: '',\n carrier: '',\n title: '',\n taxIdNumber: '',\n};\nconst defaultPayment = { type: 'linepay' };\n\nconst formatInvoice = (invoice) => {\n if (!invoice) {\n return '';\n }\n switch (invoice.type) {\n case 'individual':\n return '個人';\n case 'enterprise':\n return '企業';\n case 'donation':\n return '捐贈給社團法人銀色大門老人福利組織';\n default:\n return '';\n }\n};\n\nconst formatReceiver = (receiver) => {\n if (!receiver) {\n return '';\n }\n let receiverDisplay = `${receiver.name}\\n電話:${receiver.phoneNumber}`;\n if (receiver.noteForDelivery) {\n receiverDisplay += `\\n備註:${receiver.noteForDelivery}`;\n }\n return receiverDisplay;\n};\n\nconst formatPayment = (payment) => {\n if (!payment) {\n return '';\n }\n switch (payment.type) {\n case 'linepay':\n return 'LINE Pay';\n case 'newebpay':\n return '信用卡或網路ATM(藍新金流)';\n default:\n return '';\n }\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n actionButton: {\n width: '80%',\n borderRadius: '20px',\n color: 'white',\n },\n settingTitle: {\n fontWeight: 'bold',\n marginTop: 10,\n },\n settingBlock: {\n border: '1px solid #cecece',\n borderRadius: '10px',\n },\n price: {\n paddingLeft: 10,\n paddingRight: 10,\n },\n}));\n\nexport default function CompleteOrderDialog({\n onClose,\n open,\n orders = [],\n}) {\n const classes = useStyles();\n const [address, setAddress] = useState(cache.get('public:menu2-address') || defaultAddress);\n const [receiver, setReceiver] = useState(cache.get('public:menu2-receiver') || defaultReceiver);\n const [invoice, setInvoice] = useState(cache.get('public:menu2-invoice') || defaultInvoice);\n const [payment, setPayment] = useState(cache.get('public:menu2-payment') || defaultPayment);\n const [agreeTerms, setAgreeTerms] = useState(false);\n const [agreeCancelInvoice, setAgreeCancelInvoice] = useState(false);\n const [mealTotalPrice, setMealTotalPrice] = useState();\n const [totalDeliveryStaffFee, setTotalDeliveryStaffFee] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const { appGroup, userGroupOptions } = useCache();\n const history = useHistory();\n const email = cache.get('app:email');\n\n useEffect(() => {\n let clientOption;\n if (userGroupOptions?.length > 0) {\n clientOption = userGroupOptions.find(({ userGroupName }) => userGroupName === 'Clients');\n }\n // 如果在cart頁面logiin, recevier資料需要update\n if (!receiver?.name && clientOption?.clientId) {\n const { clientId } = clientOption;\n (async () => {\n const existingElders = (await asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n })).sort(sortBy('updatedAt'));\n if (existingElders.length !== 0) {\n const { name, phoneNumber, phoneNumber2, phoneNumber3, noteForDelivery } = existingElders[existingElders.length - 1];\n const existingReceiver = {\n name,\n phoneNumber,\n phoneNumber2,\n phoneNumber3,\n noteForDelivery,\n };\n cache.set('public:menu2-receiver', existingReceiver);\n setReceiver(existingReceiver);\n }\n })();\n }\n }, [appGroup, userGroupOptions]);\n\n useEffect(() => {\n const { mealTotalPrice, totalDeliveryStaffFee } = orders.reduce((acc, order) => {\n acc.mealTotalPrice += order.mealItems.reduce(( acc, mealItem ) => {\n acc += mealItem.price * mealItem.quantity;\n return acc;\n }, 0);\n acc.totalDeliveryStaffFee += order.quotation?.deliveryStaffFee || 0;\n return acc;\n }, { mealTotalPrice: 0, totalDeliveryStaffFee: 0 });\n setMealTotalPrice(mealTotalPrice);\n setTotalDeliveryStaffFee(totalDeliveryStaffFee);\n }, [orders]);\n\n const settings = [\n {\n key: 'address',\n title: '外送地址',\n value: address ? formatAddress(address) : '',\n editComponent: AddressDialog,\n onSettingUpdate: setAddress,\n defaultValue: defaultAddress,\n allowEdit: false, // 修改地址後需要重算運費,而且餐廳可能超出範圍\n },\n {\n key: 'receiver',\n title: '取餐人資訊',\n value: receiver ? formatReceiver(receiver) : '',\n editComponent: ReceiverDialog,\n onSettingUpdate: setReceiver,\n defaultValue: defaultReceiver,\n allowEdit: true,\n },\n {\n key: 'invoice',\n title: '發票類型',\n value: invoice?.type ? formatInvoice(invoice) : '',\n editComponent: InvoiceDialog,\n onSettingUpdate: setInvoice,\n defaultValue: {\n ...defaultInvoice,\n email,\n },\n allowEdit: true,\n },\n {\n key: 'payment',\n title: '付款方式',\n value: payment?.type ? formatPayment(payment) : '',\n editComponent: PaymentDialog,\n onSettingUpdate: setPayment,\n defaultValue: defaultPayment,\n allowEdit: true,\n },\n ];\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n onClose && onClose();\n };\n\n const handleComplete = async (transaction) => {\n setIsLoading(true);\n console.log('address', address);\n console.log('receiver', receiver);\n console.log('invoice', invoice);\n console.log('payment', payment);\n\n const username = cache.get('app:username');\n let individualId = cache.get('app:clientId');\n const facilityId = cache.get('public:menu-target-client-id');\n if (!individualId) {\n const { data: { getUser: existingUser } } = await request(getUser, { username });\n individualId = existingUser.clientId;\n }\n\n const { id: transactionId } = transaction || {};\n const { name: elderName, phoneNumber, phoneNumber2, phoneNumber3, noteForDelivery } = receiver || {};\n\n let elderId;\n let needCreateElder = false;\n let needUpdateElder = false;\n\n const existingElders = await asyncListAll(getEldersByClientByStatus, {\n clientId: individualId,\n status: { eq: '使用中' },\n });\n const matched = existingElders.find((existingElder) => existingElder.name === elderName &&\n formatAddress(existingElder.address, { includeZipCode: false, ignoreNote: true }) ===\n formatAddress(address, { includeZipCode: false, ignoreNote: true }));\n if (matched) {\n elderId = matched.id;\n if (matched.noteForDelivery !== noteForDelivery || matched.phoneNumber !== phoneNumber) {\n needUpdateElder = true;\n }\n } else {\n needCreateElder = true;\n }\n if (needUpdateElder) {\n await request(updateElder, {\n input: {\n id: elderId,\n updatedBy: username,\n phoneNumber,\n noteForDelivery,\n },\n }, 'AMAZON_COGNITO_USER_POOLS');\n } else if (needCreateElder) {\n const { data: { createElder: { id } } } = await request(createElder, {\n input: {\n status: '使用中',\n clientId: individualId,\n county: address.county,\n createdBy: username,\n updatedBy: username,\n username: 'N/A',\n name: elderName,\n phoneNumber,\n phoneNumber2,\n phoneNumber3,\n address,\n noteForDelivery,\n isAllowedToEnterHome: 0,\n isDisadvantaged: 0,\n },\n }, 'AMAZON_COGNITO_USER_POOLS');\n\n elderId = id;\n }\n\n const getInvoiceSetting = () => {\n const { type, email, carrier, title, taxIdNumber } = invoice;\n return {\n type,\n email,\n carrier: (type === 'individual')? carrier : '',\n title: type === 'enterprise' ? title : '',\n taxIdNumber: type === 'enterprise' ? taxIdNumber : '',\n };\n };\n console.log(orders);\n const input = {\n orders: orders.map((order) => {\n const { quotation, dateTime, mealItems, noteForMeal } = order;\n const { date, time } = dateTime;\n const deliveryBy = moment(`${date} ${time.split('-')[0]}`).tz(TIME_ZONE).toISOString();\n const total = mealItems.reduce(( acc, mealItem ) => {\n acc += mealItem.price * mealItem.quantity;\n return acc;\n }, 0);\n return {\n orderQuoteId: quotation.orderQuoteId,\n restaurantId: mealItems[0].restaurantId, // TODO\n elderId,\n category: '送餐',\n deliveryDatetimes: [deliveryBy],\n noteForDelivery,\n noteForMeal,\n // note,\n total,\n mealItems: mealItems.map(({ name, price, quantity }) => ({\n name: name,\n price: price,\n quantity: quantity,\n })),\n };\n }),\n invoiceSetting: getInvoiceSetting(),\n transactionId: transactionId,\n individualId,\n facilityId,\n source: 'web',\n };\n\n console.log(input);\n\n const res = await request(individualClientCreateOrder, { input });\n global.logger.debug(res);\n cache.purge('public:menu2-');\n cache.purge('public:menu-');\n // keep address and receiver\n cache.set('public:menu2-address', address);\n cache.set('public:menu2-receiver', receiver);\n cache.set('public:menu2-active-page', 'order');\n setIsLoading(false);\n handleClose();\n history.push('/');\n window.location.reload();\n };\n\n const formDateInvalid = () => {\n const validReceiver = receiver && receiver.name && receiver.phoneNumber;\n return isLoading || !agreeTerms || !agreeCancelInvoice || !validReceiver;\n };\n\n return (\n \n \n \n \n \n \n 訂單摘要\n \n \n {\n orders.map((order, index) => {\n return \n \n ;\n })\n }\n {\n settings.map((item) => {\n const { key, title, value, onSettingUpdate, defaultValue, allowEdit } = item;\n const cacheKey = `public:menu2-${item.key}`;\n const formData = cache.get(cacheKey) || {};\n return (\n
\n \n \n {title}\n \n \n \n {\n cache.set(`public:menu2-${item.key}`, data);\n onSettingUpdate && onSettingUpdate(data);\n }}\n defaultValue={defaultValue}\n allowEdit={allowEdit}\n />\n \n
);\n })\n }\n {/* \n \n 關懷需求\n \n */}\n \n \n 費用詳情\n \n \n \n \n \n \n 餐點總金額\n \n \n { mealTotalPrice !== undefined ? `$${mealTotalPrice}` : '計算中'}\n \n \n \n \n 運費總金額\n \n \n { totalDeliveryStaffFee !== undefined? `$${totalDeliveryStaffFee}` : '計算中'}\n \n \n \n \n \n 總付款金額\n \n \n { mealTotalPrice !== undefined && totalDeliveryStaffFee !== undefined ?\n `$${mealTotalPrice + totalDeliveryStaffFee}` : '計算中'}\n \n \n \n \n \n \n {\n setAgreeTerms(e.target.checked);\n }}\n />}\n label={\n
\n 我同意\n \n 隱私權及保護政策\n \n 與\n \n 退貨退款政策\n \n
}\n />\n
\n {/* {!agreeTerms && (\n \n \n 請您同意私權及保護政策與退貨退款政策\n \n \n )} */}\n \n {\n setAgreeCancelInvoice(e.target.checked);\n }}\n />}\n label={\n
\n 我同意辦理退貨時由銀色大門代為處理電子發票以加速退貨退款作業\n
}\n />\n
\n {/* {!agreeCancelInvoice && (\n \n \n 請您同意辦理退貨時由銀色大門代為處理電子發票以加速退貨退款作業\n \n \n )} */}\n
\n
\n
\n \n \n \n \n {payment.type === 'linepay' &&\n {\n const meals = mealItems.map(({ name, quantity, price }) => ({\n name,\n qty: quantity,\n unit: '份',\n unitValue: price,\n subTotal: price * quantity,\n }));\n const deliveryStaffFee = {\n name: '送餐費用',\n qty: 1,\n unit: '次',\n unitValue: quotation?.deliveryStaffFee || 0,\n subTotal: quotation?.deliveryStaffFee || 0,\n };\n return [...meals, deliveryStaffFee];\n }).flat(),\n }}\n redirectPath={'/'}\n onComplete={handleComplete}\n reportLoading={(value) => {\n setIsLoading(value);\n }}\n textButton\n />}\n {payment.type === 'newebpay' &&\n {\n const meals = mealItems.map(({ name, quantity, price }) => ({\n name,\n qty: quantity,\n unit: '份',\n unitValue: price,\n subTotal: price * quantity,\n }));\n const deliveryStaffFee = {\n name: '送餐費用',\n qty: 1,\n unit: '次',\n unitValue: quotation?.deliveryStaffFee || 0,\n subTotal: quotation?.deliveryStaffFee || 0,\n };\n return [...meals, deliveryStaffFee];\n }).flat(),\n }}\n redirectPath={'/'}\n clientBackPath={'/'}\n email={email}\n onComplete={handleComplete}\n reportLoading={(value) => {\n setIsLoading(value);\n }}\n textButton\n />}\n \n \n \n \n
\n );\n}\n\nCompleteOrderDialog.propTypes = {\n onClose: PropTypes.func,\n open: PropTypes.bool,\n orders: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport cache from 'utilities/cache';\nimport { request } from 'utilities/graph';\nimport { quoteOrder } from 'graphql/mutations';\nimport MealItem from './MealItem';\nimport CompleteOrderDialog from './CompleteOrderDialog';\nimport querystring from 'query-string';\nimport { useCache } from 'CacheProvider';\nimport CustomAuthDialog from 'components/Auth/CustomAuthDialog';\nimport moment from 'moment';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nconst dayMapping = [\n 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday',\n];\n\nconst TIME_OPTIONS_LUNCH = [\n '10:00-11:00',\n '11:00-12:00',\n '12:00-13:00',\n '13:00-14:00',\n];\n\nconst TIME_OPTIONS_DINNER = [\n '16:00-17:00',\n '17:00-18:00',\n '18:00-19:00',\n];\n\nconst Cart = ({ onGoPage }) => {\n const [showCompleteOrderDialog, setShowCompleteOrderDialog] = useState(false);\n const [allDateTime, setAllDateTime] = useState([]);\n const [orders, setOrders] = useState([]);\n const [mealTotalPrice, setMealTotalPrice] = useState(0);\n const [totalDeliveryStaffFee, setTotalDeliveryStaffFee] = useState();\n const [errorMsg, setErrorMsg] = useState();\n const [solution, setSolution] = useState();\n const [buttonText, setButtonText] = useState();\n const [init, setInit] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const { appGroup } = useCache();\n const [ordersSelected, setOrdersSelected] = useState([]);\n const [allRestaurantsAvailable, setAllRestaurantsAvailable] = useState(false);\n\n const quoteOrders = async (orders) => {\n setIsLoading(true);\n const address = cache.get('public:menu2-address');\n const restaurantIds = [];\n orders.forEach(({ restaurantId }) => {\n if (!restaurantIds.includes(restaurantId)) {\n restaurantIds.push(restaurantId);\n }\n });\n const orderQuotation = await Promise.all(restaurantIds.map(async (restaurantId) => {\n const params = {\n input: {\n restaurantId,\n addressCounty: address.county,\n addressZipCode: address.zipCode,\n addressDistrict: address.district,\n addressStreet: address.street,\n },\n };\n const { data: { quoteOrder: { data } } }= await request(quoteOrder, params);\n return {\n restaurantId,\n quoteResult: data,\n };\n }));\n let totalDeliveryStaffFee = 0;\n orders.forEach((order) => {\n const { quoteResult } = orderQuotation.find(({ restaurantId }) => restaurantId === order.restaurantId);\n order.quotation = quoteResult;\n totalDeliveryStaffFee += quoteResult?.deliveryStaffFee || 0;\n });\n if (orders.some(({ quotation }) => quotation.code !== 'SUCCESS')) {\n totalDeliveryStaffFee = undefined;\n }\n setTotalDeliveryStaffFee(totalDeliveryStaffFee);\n setOrders([...orders]);\n cache.set('public:menu2-orders', orders);\n setIsLoading(false);\n };\n\n const restaurantClosedOnDate = (restaurant, dateToCheck) => {\n const { holidays: holidaysSetting, openingHours = [] } = restaurant;\n const dateItem = moment(dateToCheck).tz(TIME_ZONE);\n const date = dateItem.format('YYYY-MM-DD');\n const day = dateItem.day();\n\n if (holidaysSetting && holidaysSetting.length !== 0) {\n const year = dateItem.year();\n const holidays = holidaysSetting.find(\n (restaurantHoliday) => restaurantHoliday.year === year,\n );\n if (holidays && holidays.closedDays.length !== 0) {\n if (holidays.closedDays.includes(date)) {\n return true;\n }\n }\n }\n if (openingHours) {\n if (Object.keys(openingHours).every((key) => openingHours[key].length === 0)) {\n return false;\n }\n if (openingHours[dayMapping[day]].length === 0) {\n return true;\n }\n }\n return false;\n };\n\n const timeInSlot = (startTime, endTime, toCheck) => {\n const toMinutes = (time) => {\n const [hours, minutes] = time.split(':').map(Number);\n return hours * 60 + minutes;\n };\n return toMinutes(toCheck) >= toMinutes(startTime) && toMinutes(toCheck) <= toMinutes(endTime);\n };\n\n const getTimeSlotOptions = (restaurant, date, defaultTimeSlotOptions) => {\n let filteredOptions = defaultTimeSlotOptions;\n if (!restaurant || !restaurant.openingHours ||\n Object.keys(restaurant.openingHours).every((key) => restaurant.openingHours[key].length === 0)) {\n return filteredOptions;\n }\n const day = moment(date).tz(TIME_ZONE).day();\n\n if (restaurant.openingHours[dayMapping[day]].length === 0) {\n return [];\n } else {\n filteredOptions = defaultTimeSlotOptions.filter((option) => {\n const [slotStart, slotEnd] = option.split('-');\n if (restaurant.openingHours[dayMapping[day]].some((openingHours)=> {\n if (timeInSlot(openingHours.startTime, openingHours.endTime, slotStart) ||\n timeInSlot(openingHours.startTime, openingHours.endTime, slotEnd)) {\n return true;\n }\n return false;\n })) {\n return true;\n }\n return false;\n });\n }\n\n return filteredOptions;\n };\n\n const checkRestaurantClosed = (dateTime, restaurant) => {\n const restaurantClosedOnDateSelected = restaurantClosedOnDate(restaurant, dateTime.date);\n const lunchTimeSlotOptions = getTimeSlotOptions(restaurant, dateTime.date, TIME_OPTIONS_LUNCH);\n const dinnerTimeSlotOptions = getTimeSlotOptions(restaurant, dateTime.date, TIME_OPTIONS_DINNER);\n const restaurantClosedAtTimeSlotSelected = !lunchTimeSlotOptions.includes(dateTime.time) && !dinnerTimeSlotOptions.includes(dateTime.time);\n return restaurantClosedOnDateSelected || restaurantClosedAtTimeSlotSelected;\n };\n\n const rearrangeMeals = (addedMeals, allDateTime) => {\n // 讓鄰近兩餐點儘量不要一樣\n const result = [];\n let index = 0;\n\n while (addedMeals.some((addedMeal) => addedMeal.quantity > 0)) {\n const addedMeal = addedMeals[index % addedMeals.length];\n const restaurantClosed = checkRestaurantClosed(allDateTime[index], addedMeal.meal.restaurant);\n if (addedMeal.quantity > 0) {\n result.push({\n ...addedMeal.meal,\n restaurantClosed,\n dateTime: allDateTime[index],\n });\n addedMeal.quantity -= 1;\n }\n index++;\n }\n\n return result;\n };\n\n const buildOrders = () => {\n const addedMeals = cache.get('public:menu2-meals');\n if (addedMeals?.length) {\n const { days = [] } = cache.get('public:menu2-date') || {};\n const time = cache.get('public:menu2-time');\n const allDateTime = [];\n days.forEach((date) => {\n if (time.lunch !== '不需要午餐') {\n allDateTime.push({ date, time: time.lunch, mealSlot: 'lunch' });\n }\n if (time.dinner !== '不需要晚餐') {\n allDateTime.push({ date, time: time.dinner, mealSlot: 'dinner' });\n }\n });\n setAllDateTime(allDateTime);\n\n const mealCount = addedMeals.reduce((sum, meal) => sum + meal.quantity, 0);\n // TODO: 先假設一餐一餐點\n if (allDateTime.length !== mealCount) {\n setErrorMsg('餐點數量需要調整');\n setSolution(`您點了${mealCount}份餐點,但是總共需要${allDateTime.length}份餐點,請點擊下方綠色按鈕,回到首頁調整餐點數量或送餐日期與時間`);\n setButtonText('回首頁設定');\n return;\n }\n\n const arrangedMeals = rearrangeMeals(addedMeals, allDateTime);\n const orders = cache.get('public:menu2-orders') || [];\n if (!orders.length) {\n arrangedMeals.forEach((meal, index) => {\n const { restaurantId, dateTime, restaurantClosed } = meal;\n orders.push({\n restaurantId,\n dateTime,\n mealItems: [{ ...meal, quantity: 1 }],\n restaurantClosed,\n });\n });\n }\n setOrders(orders);\n cache.set('public:menu2-orders', orders);\n setAllRestaurantsAvailable(orders.every(({ restaurantClosed }) => !restaurantClosed));\n // quote order 很慢,不要await\n quoteOrders(orders);\n\n const mealTotalPrice = orders.reduce((acc, order) => {\n return acc + order.mealItems.reduce((acc, { price, quantity }) => {\n return acc + price * quantity;\n }, 0);\n }, 0);\n setMealTotalPrice(mealTotalPrice);\n }\n };\n\n const orderDataValidator = () => {\n const addedMeals = cache.get('public:menu2-meals');\n if (!addedMeals?.length) {\n setErrorMsg('購物車空空的');\n setSolution('快點擊下方綠色按鈕,探索健康營養的美食!我們會將餐點外送到您的大門口');\n setButtonText('立即前往訂餐');\n return false;\n }\n const { days = [] } = cache.get('public:menu2-date') || {};\n if (days.length === 0) {\n setErrorMsg('尚未設定送餐日期');\n setSolution('請點擊下方綠色按鈕,回到首頁上方設定送餐日期');\n setButtonText('回首頁設定');\n return false;\n }\n const time = cache.get('public:menu2-time');\n if (!time || (time.lunch === '不需要午餐' && time.dinner === '不需要晚餐')) {\n setErrorMsg('尚未設定送餐時間');\n setSolution('請點擊下方綠色按鈕,回到首頁上方設定送餐時間');\n setButtonText('回首頁設定');\n return false;\n }\n\n return true;\n };\n\n useEffect(() => {\n if (!orderDataValidator()) {\n setInit(true);\n return;\n }\n\n const { transactionId } = querystring.parse(window.location.search);\n const orders = cache.get('public:menu2-orders');\n if (transactionId && orders) {\n setOrders(orders);\n setAllRestaurantsAvailable(true);\n setShowCompleteOrderDialog(true);\n } else {\n buildOrders();\n }\n\n setInit(true);\n }, []);\n\n useEffect(() => {\n // 關閉 completeOrderDialog 有可能是完成訂單了\n if (!showCompleteOrderDialog) {\n orderDataValidator();\n }\n }, [showCompleteOrderDialog]);\n\n if (!init) {\n return <>;\n }\n\n if (errorMsg) {\n return (\n \n \n \n {errorMsg}\n \n \n {solution}\n \n \n \n \n \n \n );\n }\n\n const onOrderChecked = (index, value) => {\n if (value && ordersSelected.length >= 2) {\n return;\n }\n let newOrdersSelected = [...ordersSelected];\n if (value) {\n newOrdersSelected.push(index);\n } else {\n newOrdersSelected = newOrdersSelected.filter((orderIndex) => orderIndex !== index);\n }\n setOrdersSelected(newOrdersSelected);\n };\n\n const swapMeals = () => {\n if (ordersSelected.length !== 2) {\n return;\n }\n const tempOrder = orders[ordersSelected[0]];\n orders[ordersSelected[0]] = orders[ordersSelected[1]];\n orders[ordersSelected[1]] = tempOrder;\n const tempDateTime = orders[ordersSelected[0]].dateTime;\n orders[ordersSelected[0]].dateTime = orders[ordersSelected[1]].dateTime;\n orders[ordersSelected[1]].dateTime = tempDateTime;\n\n orders[ordersSelected[0]].restaurantClosed =\n checkRestaurantClosed(orders[ordersSelected[0]].dateTime, orders[ordersSelected[0]].mealItems[0].restaurant);\n orders[ordersSelected[1]].restaurantClosed =\n checkRestaurantClosed(orders[ordersSelected[1]].dateTime, orders[ordersSelected[1]].mealItems[0].restaurant);\n setOrders([...orders]);\n setAllRestaurantsAvailable(orders.every(({ restaurantClosed }) => !restaurantClosed));\n setOrdersSelected([]);\n cache.set('public:menu2-orders', orders);\n };\n\n const onOrderUpdate = (index, order) => {\n Object.assign(orders[index], order);\n setOrders([...orders]);\n cache.set('public:menu2-orders', orders);\n };\n\n return (\n <>\n \n \n \n 購物車\n \n {ordersSelected.length >= 2 &&\n \n 交換餐點\n }\n \n \n {\n allDateTime.map(({ date, time, mealSlot }, index) => {\n return orders && orders[index] && \n onOrderChecked(index, value)}\n disableCheck={ordersSelected.length >= 2 && !ordersSelected.includes(index)}\n checked={ordersSelected.includes(index)}\n onOrderUpdate={(value) => onOrderUpdate(index, value)}\n />\n ;\n })\n }\n \n \n \n \n 餐點總金額\n \n \n \n \n ${mealTotalPrice}\n \n \n \n \n 運費總金額\n \n \n \n {totalDeliveryStaffFee !== undefined ?\n \n ${totalDeliveryStaffFee}\n :\n \n 計算中\n }\n \n \n \n {appGroup !== undefined ?\n {\n setShowCompleteOrderDialog(true);\n }}\n disabled={isLoading || totalDeliveryStaffFee === undefined || !allRestaurantsAvailable}\n >\n 前往結賬\n :\n (\n \n 登入後結帳\n \n )}\n />}\n \n \n {orders && appGroup !== undefined &&\n {\n setShowCompleteOrderDialog(false);\n }}\n />}\n \n );\n};\n\nexport default Cart;\n\nCart.propTypes = {\n onGoPage: PropTypes.func,\n};\n","const orderItems = /* GraphQL */ `\n items {\n id\n clientId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n name\n }\n }\n`;\n\nexport const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${orderItems}\n nextToken\n }\n }\n`;\n\nexport const getOrdersByIndividualByDate = /* GraphQL */ `\n query GetOrdersByIndividualByDate(\n $individualId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByIndividualByDate(\n individualId: $individualId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${orderItems}\n nextToken\n }\n }\n`;\n\nexport const getDeliveryStaffOrdersByOrder = /* GraphQL */ `\n query GetDeliveryStaffOrdersByOrder(\n $orderId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByOrder(\n orderId: $orderId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n name\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n\nexport const getOrderEventsByOrderByCreatedAt = /* GraphQL */ `\n query GetOrderEventsByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrderEventsByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n orderId\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Card from '@material-ui/core/Card';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\n\nimport moment from 'moment';\nimport shortuuid from 'short-uuid';\n\nimport { formatTime, formatDatetime } from 'utilities/format';\n\nexport default function OrderCard({ order = {}, onClick }) {\n const { deliveryBy, createdAt, mealSlot, restaurant } = order;\n\n const mealItemsString = order.mealItems.map(({ name, quantity }) =>`${name} x ${quantity}`).join('、');\n\n const data = [\n {\n label: '外送日期',\n value: formatDatetime(deliveryBy, { hour: false, minute: false }),\n hightlight: true,\n },\n {\n label: '外送時間',\n value: `${mealSlot === 'lunch' ? '午餐' : '晚餐'} ${formatTime(deliveryBy)} - ${formatTime(moment(deliveryBy).add('60', 'minutes'))}`,\n },\n {\n label: '餐廳',\n value: restaurant.name,\n },\n {\n label: '餐點',\n value: mealItemsString,\n },\n {\n label: '訂單編號',\n value: shortuuid().fromUUID(order.id).slice(-6),\n },\n {\n label: '下單時間',\n value: formatDatetime(createdAt),\n },\n ];\n\n return (\n \n \n \n {data.map(({ label, value, hightlight=false }) => {\n return \n \n \n {label}\n \n \n \n \n {value}\n \n \n ;\n })}\n \n \n \n );\n}\n\nOrderCard.propTypes = {\n order: PropTypes.object,\n onClick: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Card from '@material-ui/core/Card';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport moment from 'moment';\nimport shortuuid from 'short-uuid';\nimport { formatTime, formatDatetime } from 'utilities/format';\nimport { orderStatus } from '@silvergatedelivery/constants';\n\nexport default function OrderCard({ order = {}, onClick }) {\n const { deliveryBy, mealSlot, restaurant, deliveryStaffFee, extraFee, platformFee,\n noteForMeal, status, total,\n } = order;\n\n const mealItemsString = order.mealItems.map(({ name, quantity }) =>`${name} x ${quantity}`).join('、');\n const { label: orderLabel } = orderStatus.find(({ value }) => value === status);\n\n const data = [\n {\n label: '外送日期',\n value: formatDatetime(deliveryBy, { hour: false, minute: false }),\n hightlight: true,\n },\n {\n label: '外送時間',\n value: `${mealSlot === 'lunch' ? '午餐' : '晚餐'} ${formatTime(deliveryBy)} - ${formatTime(moment(deliveryBy).add('60', 'minutes'))}`,\n },\n {\n label: '訂單編號',\n value: shortuuid().fromUUID(order.id).slice(-6),\n },\n {\n label: '訂單狀態',\n value: orderLabel,\n },\n {\n label: '餐廳',\n value: restaurant.name,\n },\n {\n label: '餐點內容',\n value: mealItemsString,\n },\n {\n label: '餐點費用',\n value: `$${total}`,\n },\n {\n label: '運費',\n value: `$${(deliveryStaffFee || 0) + (extraFee || 0) + (platformFee || 0)}`,\n },\n {\n label: '餐點備註',\n value: noteForMeal,\n },\n ];\n\n return (\n \n \n \n {data.map(({ label, value, hightlight=false }) => {\n return \n \n \n {label}\n \n \n \n \n {value}\n \n \n ;\n })}\n \n \n \n );\n}\n\nOrderCard.propTypes = {\n order: PropTypes.object,\n onClick: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Grid from '@material-ui/core/Grid';\nimport Card from '@material-ui/core/Card';\nimport Divider from '@material-ui/core/Divider';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport { formatAddress } from 'utilities/format';\nimport { request } from 'utilities/graph';\nimport { getTransaction } from 'graphql/queries';\nimport OrderDetail from './OrderDetail';\nimport Loading from 'components/Loading';\n\n// const formatInvoice = (invoice) => {\n// if (!invoice) {\n// return '';\n// }\n// switch (invoice.type) {\n// case 'individual':\n// return '個人';\n// case 'enterprise':\n// return '企業';\n// case 'donation':\n// return '捐贈給社團法人銀色大門老人福利組織';\n// default:\n// return '';\n// }\n// };\n\nconst formatReceiver = (receiver) => {\n if (!receiver) {\n return '';\n }\n let receiverDisplay = `${receiver.name}\\n電話:${receiver.phoneNumber}`;\n if (receiver.noteForDelivery) {\n receiverDisplay += `\\n備註:${receiver.noteForDelivery}`;\n }\n return receiverDisplay;\n};\n\nconst formatPayment = (payment) => {\n if (!payment) {\n return '';\n }\n switch (payment) {\n case 'linepay':\n return 'LINE Pay';\n case 'newebpay':\n return '信用卡或網路ATM(藍新金流)';\n default:\n return '';\n }\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n settingTitle: {\n fontWeight: 'bold',\n marginTop: 10,\n },\n settingBlock: {\n border: '1px solid #cecece',\n borderRadius: '10px',\n },\n price: {\n paddingLeft: 10,\n paddingRight: 10,\n },\n}));\n\nexport default function CompleteOrderDialog({\n onClose,\n hideCloseButton = false,\n fullScreen = false,\n maxWidth = 'md',\n open,\n transactionId,\n}) {\n const classes = useStyles();\n const [mealTotalPrice, setMealTotalPrice] = useState(0);\n const [totalDeliveryStaffFee, setTotalDeliveryStaffFee] = useState(0);\n const [isLoading, setIsLoading] = useState(true);\n const [orders, setOrders] = useState([]);\n const [orderInfo, setOrderInfo] = useState([]);\n\n useEffect(() => {\n if (transactionId) {\n (async () => {\n setIsLoading(true);\n const { data: { getTransaction: transaction } } = await request(getTransaction, { id: transactionId });\n setIsLoading(false);\n if (transaction?.orders?.items) {\n const orders = transaction?.orders?.items;\n setOrders(orders);\n if (orders[0]) {\n const { elder } = orders[0];\n setOrderInfo([\n {\n label: '外送地址',\n value: elder ? formatAddress(elder.address) : '',\n },\n {\n label: '取餐人資訊',\n value: elder ? formatReceiver(elder) : '',\n },\n // {\n // label: '發票類型',\n // value: invoice?.type ? formatInvoice(invoice) : '',\n // },\n {\n label: '付款方式',\n value: transaction.serviceProvider ? formatPayment(transaction.serviceProvider) : '',\n },\n ]);\n }\n }\n })();\n }\n }, [transactionId]);\n\n useEffect(() => {\n const { mealTotalPrice, totalDeliveryStaffFee } = orders.reduce((acc, order) => {\n const { mealItems, deliveryStaffFee, extraFee, platformFee } = order;\n acc.mealTotalPrice += mealItems.reduce(( acc, mealItem ) => {\n acc += mealItem.price * mealItem.quantity;\n return acc;\n }, 0);\n acc.totalDeliveryStaffFee += (deliveryStaffFee || 0) + (extraFee || 0) + (platformFee || 0);\n return acc;\n }, { mealTotalPrice: 0, totalDeliveryStaffFee: 0 });\n setMealTotalPrice(mealTotalPrice);\n setTotalDeliveryStaffFee(totalDeliveryStaffFee);\n }, [orders]);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n onClose && onClose();\n };\n\n return (\n \n \n \n {isLoading ?\n :\n \n \n \n 訂單列表\n \n \n {\n orders.map((order, index) => {\n return \n \n ;\n })\n }\n {orderInfo.map(({ label, value, hightlight=false }) => {\n return \n \n \n {label}\n \n \n \n \n {value}\n \n \n ;\n })}\n \n \n 費用詳情\n \n \n \n \n \n \n 餐點總金額\n \n \n { mealTotalPrice ? `$${mealTotalPrice}` : '計算中'}\n \n \n \n \n 運費總金額\n \n \n { totalDeliveryStaffFee ? `$${totalDeliveryStaffFee}` : '計算中'}\n \n \n \n \n \n 總付款金額\n \n \n { mealTotalPrice && totalDeliveryStaffFee ? `$${mealTotalPrice + totalDeliveryStaffFee}` : '計算中'}\n \n \n \n \n }\n \n \n \n \n );\n}\n\nCompleteOrderDialog.propTypes = {\n onClose: PropTypes.func,\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n open: PropTypes.bool,\n transactionId: PropTypes.string.isRequired,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Container from '@material-ui/core/Container';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport Loading from 'components/Loading';\nimport {\n getOrdersByIndividualByDate,\n} from './queries';\nimport OrderCard from './OrderCard';\nimport { asyncListAll } from 'utilities/graph';\nimport cache from 'utilities/cache';\nimport { useCache } from 'CacheProvider';\nimport CustomAuthDialog from 'components/Auth/CustomAuthDialog';\nimport TransactionDetailDialog from './TransactionDetailDialog';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nconst Order = ({ onGoPage }) => {\n const [orders, setOrders] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n const { appGroup } = useCache();\n const [showTransactionDetailDialog, setShowTransactionDetailDialog] = useState(false);\n const [transactionId, setTransactionId] = useState();\n const [tabValue, setTabValue] = useState(0);\n const [filteredOrders, setFilteredOrders] = useState([]);\n\n const tabLabels = ['進行中', '已完成', '已取消'];\n\n useEffect(() => {\n (async () => {\n const clientId = cache.get('app:clientId');\n if (clientId) {\n const from = moment().tz(TIME_ZONE).add(-60, 'days').format('YYYY-MM-DD');\n const to = moment().tz(TIME_ZONE).add(100, 'days').format('YYYY-MM-DD');\n const orders = await asyncListAll(getOrdersByIndividualByDate, {\n individualId: clientId,\n date: {\n between: [from, to],\n },\n });\n global.logger.debug(orders);\n setOrders(orders.reverse());\n setIsLoading(false);\n }\n })();\n }, []);\n\n useEffect(() => {\n switch (tabValue) {\n case 1: // 已完成\n setFilteredOrders(orders.filter((order) => order.status === 'completed' ));\n break;\n case 2: // 已取消\n setFilteredOrders(orders.filter((order) => order.status === 'cancelled' ));\n break;\n case 0: // 進行中\n default:\n setFilteredOrders(orders.filter((order) => order.status !== 'cancelled' && order.status !== 'comppleted' ));\n break;\n }\n }, [tabValue, orders]);\n\n if (!appGroup) {\n return (\n \n \n \n 請先登入或註冊帳號\n \n \n \n (\n \n 登入\n \n )}\n />\n  \n (\n \n 還不是會員?點此註冊\n \n )}\n />\n \n \n );\n }\n\n if (isLoading) {\n return ;\n }\n\n const onOrderClick = (order) => {\n setTransactionId(order.transactionId);\n setShowTransactionDetailDialog(true);\n };\n\n return (\n \n \n \n \n 所有訂單\n \n \n \n {\n setTabValue(newValue);\n }}\n indicatorColor='primary'\n textColor='primary'\n centered\n >\n \n \n \n \n \n {filteredOrders.length === 0 && <>\n \n \n 尚無{tabLabels[tabValue]}的訂單\n \n {tabValue === 0 && \n 快點擊下方綠色按鈕,探索健康營養的美食!我們會將餐點外送到您的大門口\n }\n \n {tabValue === 0 && \n \n }\n }\n {filteredOrders.map((order, index)=>(\n \n onOrderClick(order)}/>\n \n ))}\n \n {transactionId && {\n setTransactionId();\n setShowTransactionDetailDialog(false);\n }}\n />}\n \n );\n};\n\nexport default Order;\n\nOrder.propTypes = {\n onGoPage: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport Grid from '@material-ui/core/Grid';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport {\n formatNote,\n formatTime,\n formatDatetime,\n} from 'utilities/format';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: '100%',\n },\n imgContainer: {\n textAlign: 'center',\n },\n img: {\n minHeight: 150,\n height: 150,\n width: 'auto',\n cursor: 'pointer',\n },\n}));\n\nexport default function DeliveryStaffOrderDiaryCard({\n deliveryStaffOrder: inDeliveryStaffOrder,\n}) {\n const classes = useStyles();\n const { t } = useTranslation();\n const [deliveryStaffOrder, setDeliveryStaffOrder] = useState();\n\n\n useEffect(() => {\n setDeliveryStaffOrder(inDeliveryStaffOrder);\n }, [inDeliveryStaffOrder]);\n\n if (!deliveryStaffOrder) return null;\n\n const {\n deliveryStartedAt,\n deliveryDeliveredAt,\n deliveryStaff,\n diary,\n thumbnail,\n order,\n elderDementiaSurvey,\n deliveryBy,\n } = deliveryStaffOrder;\n const { name } = deliveryStaff;\n global.logger.debug(deliveryStaffOrder);\n const deliveryStaffName = name;\n const elderName = order.elder.name;\n\n const refreshImage = () => {\n global.logger.debug('refreshImage?', deliveryStaffOrder);\n };\n\n return (\n \n \n \n \n \n {formatDatetime(deliveryBy, { hour: false, minute: false })}\n \n \n \n
\n \n
\n
\n \n \n 取餐人\n \n \n \n \n {elderName}\n \n \n\n \n \n 送餐大使\n \n \n \n \n {deliveryStaffName}\n \n \n\n \n \n {t('送餐')}時間\n \n \n \n \n {formatTime(deliveryStartedAt)} - {formatTime(deliveryDeliveredAt)}\n \n \n
\n {elderDementiaSurvey && elderDementiaSurvey.items && elderDementiaSurvey.items.map(({ response, dementiaQuestionnaire }, index) => {\n const question = dementiaQuestionnaire.items[0].question;\n if (response === 'completed') {\n return (\n
\n
\n \n 失智友善宣導\n
\n {question}\n
\n );\n }\n })}\n \n 日誌\n \n {formatNote(diary || '無')}\n
\n
\n );\n}\n\nDeliveryStaffOrderDiaryCard.propTypes = {\n deliveryStaffOrder: PropTypes.object,\n};\n","const deliveryStaffOrderItems = /* GraphQL */ `\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n name\n }\n elderDementiaSurvey {\n items {\n id\n questionId\n response\n date\n dementiaQuestionnaire {\n items {\n id\n category\n type\n question\n }\n nextToken\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n orderId\n createdAt\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n`;\n\nexport const getDeliveryStaffOrdersByClientByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByClientByDate(\n $clientId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByClientByDate(\n clientId: $clientId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${deliveryStaffOrderItems}\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Container from '@material-ui/core/Container';\nimport { asyncListAll, request } from 'utilities/graph';\nimport { Storage } from 'aws-amplify';\nimport DeliveryStaffOrderDiaryCard from './DeliveryStaffOrderDiaryCard';\nimport cache from 'utilities/cache';\nimport { Semaphore } from 'async-mutex';\nimport Loading from 'components/Loading';\nimport { useCache } from 'CacheProvider';\nimport CustomAuthDialog from 'components/Auth/CustomAuthDialog';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport {\n getDeliveryStaffOrdersByClientByDate,\n} from './queries';\n\nconst DEFAULT_IMAGE_URL = '/images/default_delivery_diary.png';\n\nconst Diary = ({ onGoPage }) => {\n const [deliveryStaffOrders, setDeliveryStaffOrders] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n const { appGroup } = useCache();\n\n useEffect(() => {\n (async () => {\n const clientId = cache.get('app:clientId');\n if (!clientId) {\n return;\n }\n const from = moment().tz(TIME_ZONE).add(-60, 'days').toISOString();\n const to = moment().toISOString();\n const deliveryStaffOrders = await asyncListAll(getDeliveryStaffOrdersByClientByDate, {\n clientId,\n deliveryBy: {\n between: [from, to],\n },\n filter: {\n status: { eq: 'completed' },\n },\n });\n\n const s = new Semaphore(10);\n await Promise.all(deliveryStaffOrders.map((deliveryStaffOrder) =>\n s.runExclusive(async () => {\n if (!deliveryStaffOrder.order) {\n try {\n const { data: { getOrder: order } } = await request( /* GraphQL */ `\n query GetOrder($id: ID!) {\n getOrder(id: $id) {\n county\n category\n elder {\n name\n nickname\n }\n }\n }`, { id: deliveryStaffOrder.orderId });\n deliveryStaffOrder.order = order;\n } catch (e) {\n console.log(e);\n }\n }\n\n deliveryStaffOrder.photoS3Keys = deliveryStaffOrder.photoS3Keys || [];\n\n if (deliveryStaffOrder.photoS3Keys[0] && deliveryStaffOrder.thumbnail !== DEFAULT_IMAGE_URL) {\n deliveryStaffOrder.thumbnail = await Storage.get(deliveryStaffOrder.photoS3Keys[0]);\n } else {\n deliveryStaffOrder.thumbnail = DEFAULT_IMAGE_URL;\n }\n return deliveryStaffOrder;\n }),\n ));\n\n global.logger.debug(deliveryStaffOrders);\n setDeliveryStaffOrders(deliveryStaffOrders.reverse());\n setIsLoading(false);\n })();\n }, []);\n\n if (!appGroup) {\n return (\n \n \n \n 請先登入或註冊帳號\n \n \n \n (\n \n 登入\n \n )}\n />\n  \n (\n \n 還不是會員?點此註冊\n \n )}\n />\n \n \n );\n }\n\n if (isLoading) {\n return ;\n }\n\n if (deliveryStaffOrders.length === 0) {\n return (\n \n \n \n 尚無關懷日誌\n \n \n 快點擊下方綠色按鈕,探索健康營養的美食!我們會將餐點外送到您的大門口\n \n \n \n \n \n \n );\n }\n\n\n return (\n \n \n \n \n 關懷日誌\n \n \n {deliveryStaffOrders.map((deliveryStaffOrder, index)=> (\n \n \n \n ))}\n \n \n );\n};\n\nexport default Diary;\n\nDiary.propTypes = {\n onGoPage: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport { request } from 'utilities/graph';\nimport { updateClient } from 'graphql/mutations';\nimport { useCache } from 'CacheProvider';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n actionButton: {\n width: '80%',\n borderRadius: '20px',\n color: 'white',\n },\n}));\n\nexport default function InformationDialog({\n hideCloseButton = false,\n fullScreen = true,\n maxWidth = 'md',\n}) {\n const classes = useStyles();\n const [showDialog, setShowDialog] = useState(false);\n const [client, setClient] = useState();\n const { userGroupOptions } = useCache();\n\n useEffect(() => {\n let clientOption;\n if (userGroupOptions?.length > 0) {\n clientOption = userGroupOptions.find(({ userGroupName }) => userGroupName === 'Clients');\n setClient(JSON.parse(JSON.stringify(clientOption.clientData)));\n }\n }, []);\n\n const handleClose = (e, reason) => {\n if (reason === 'backdropClick') return;\n setShowDialog(false);\n };\n\n const updateInformation = (toUpdateProps = {}) => {\n const updatedClient = Object.assign(client, toUpdateProps);\n setClient({ ...updatedClient });\n };\n\n const submitClient = async () => {\n const data = {\n id: client.id,\n type: client.type,\n isActive: client.isActive,\n county: client.county,\n name: client.name,\n address: client.address,\n phoneNumber: client.phoneNumber,\n email: client.email,\n usersLimit: client.usersLimit,\n eldersLimit: client.eldersLimit,\n useDedicatedDeliveryStaffs: client.useDedicatedDeliveryStaffs,\n };\n // update cache\n // if (userGroupOptions?.length > 0) {\n // const newUserGroupOptions = JSON.parse(JSON.stringify(userGroupOptions));\n // const clientOption = newUserGroupOptions.find(({ userGroupName }) => userGroupName === 'Clients');\n // clientOption.clientData = JSON.parse(JSON.stringify(client));\n // // setUserGroupOptions 會讓menu.js把畫面切回首頁\n // // setUserGroupOptions(newUserGroupOptions);\n // }\n\n await request(updateClient, { input: data });\n };\n\n if (!client) {\n return <>;\n }\n\n return (\n \n {\n setShowDialog(true);\n }}\n spacing={2}\n >\n \n \n 個人資料\n \n \n \n \n \n \n \n \n \n \n \n \n \n updateInformation({ name: e.target.value })}\n fullWidth\n error={client.name.length === 0}\n helperText={ client.name?.length === 0 ? '必填' : '' }\n placeholder='請填寫姓名'\n />\n \n \n updateInformation({ email: e.target.value })}\n fullWidth\n error={client.email.length === 0}\n helperText={ client.email?.length === 0 ? '必填' : '' }\n placeholder='請填寫電子信箱'\n />\n \n \n updateInformation({ phoneNumber: e.target.value })}\n fullWidth\n placeholder='請填電話'\n />\n \n \n \n \n \n \n \n \n \n {\n await submitClient();\n setShowDialog(false);\n }}\n >\n 確認\n \n \n \n \n \n \n );\n}\n\nInformationDialog.propTypes = {\n fullScreen: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n maxWidth: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport InformationDialog from './InformationDialog';\n// import ResetPasswordDialog from './ResetPasswordDialog';\n// import AddressDialog from './AddressDialog';\nimport { useCache } from 'CacheProvider';\nimport CustomAuthDialog from 'components/Auth/CustomAuthDialog';\n\nconst useStyles = makeStyles((theme) => ({\n settingTitle: {\n fontWeight: 'bold',\n marginTop: 10,\n },\n settingBlock: {\n marginBottom: '20px',\n },\n}));\n\nconst Member = ({ onGoPage }) => {\n const classes = useStyles();\n const { appGroup } = useCache();\n\n const memberSettings = [\n {\n key: 'information',\n editComponent: InformationDialog,\n },\n // {\n // key: 'resetPassword',\n // editComponent: ResetPasswordDialog,\n // },\n ];\n\n // const orderSettings = [\n // {\n // key: 'address',\n // editComponent: AddressDialog,\n // },\n // ];\n\n // const support = [\n // ];\n\n if (!appGroup) {\n return (\n \n \n \n 請先登入或註冊帳號\n \n \n \n (\n \n 登入\n \n )}\n />\n  \n (\n \n 還不是會員?點此註冊\n \n )}\n />\n \n \n );\n }\n\n return (\n \n \n \n 會員中心\n \n \n \n \n 會員設定\n \n \n {\n memberSettings.map((item) => {\n const { key } = item;\n return (\n
\n \n \n \n
);\n })\n }\n {/* \n \n 訂餐資訊\n \n \n {\n orderSettings.map((item) => {\n const { key } = item;\n return (\n
\n \n \n \n
);\n })\n }\n \n \n 支援\n \n \n {\n support.map((item) => {\n const { key } = item;\n return (\n
\n \n \n \n
);\n })\n } */}\n
\n );\n};\n\nexport default Member;\n\nMember.propTypes = {\n onGoPage: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Typography from '@material-ui/core/Typography';\nimport {\n counties, countiesDistricts,\n} from '@silvergatedelivery/constants';\nimport { getDistrictsInCounty, getZipCode } from 'utilities/address';\n\nconst AddressSettings = ({ onUpdate, defaultValue = {} }) => {\n const [county, setCounty] = useState();\n const [district, setDistrict] = useState();\n const [districts, setDistricts] = useState();\n const [street, setStreet] = useState();\n const [note, setNote] = useState();\n\n const onCountyChange = (newCounty) => {\n if (newCounty !== county) {\n setCounty(newCounty);\n const newDistricts = getDistrictsInCounty(newCounty);\n setDistricts(newDistricts);\n setDistrict(newDistricts[0]);\n }\n };\n\n useEffect(() => {\n if (defaultValue?.county) {\n setCounty(defaultValue.county);\n if (defaultValue.district) {\n setDistrict(defaultValue.district);\n } else {\n setDistrict(getDistrictsInCounty(defaultValue.county)[0]);\n }\n setDistricts(getDistrictsInCounty(defaultValue.county));\n } else {\n setCounty(counties[0]);\n setDistrict(countiesDistricts[0].districts[0]);\n setDistricts(getDistrictsInCounty(counties[0]));\n }\n setStreet(defaultValue?.street || '');\n setNote(defaultValue?.note || '');\n }, []);\n\n useEffect(() => {\n if (county) {\n const zipCode = getZipCode(county, district);\n onUpdate && onUpdate({ county, district, street, note, zipCode });\n }\n }, [county, district, street, note]);\n\n if (!county) {\n return <>;\n }\n\n return (\n \n \n \n 設定外送地址\n \n \n \n \n \n \n 縣市\n onCountyChange(e.target.value)}\n label=\"縣市\"\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n \n 鄉鎮市區\n setDistrict(e.target.value)}\n label=\"鄉鎮市區\"\n >\n {districts.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n setStreet(e.target.value)}\n />\n \n \n setNote(e.target.value)}\n />\n \n \n \n \n );\n};\n\nexport default AddressSettings;\n\nAddressSettings.propTypes = {\n onUpdate: PropTypes.func,\n defaultValue: PropTypes.any,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport MealDateSelector from 'components/Date/MealDateSelector';\n\nconst DateSettings = ({ onUpdate, defaultValue }) => {\n return (\n \n \n \n 您想訂購哪天的餐點?\n \n \n 為了維持優良的餐點品質,訂餐皆採預約制,謝謝您的體諒與配合!\n \n \n \n {\n onUpdate({ days: items });\n }}\n dateOnly\n />\n \n \n );\n};\n\nexport default DateSettings;\n\nDateSettings.propTypes = {\n onUpdate: PropTypes.func,\n defaultValue: PropTypes.any,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nconst TIME_OPTIONS_LUNCH = [\n '不需要午餐',\n '10:00-11:00',\n '11:00-12:00',\n '12:00-13:00',\n '13:00-14:00',\n];\n\nconst TIME_OPTIONS_DINNER = [\n '不需要晚餐',\n '16:00-17:00',\n '17:00-18:00',\n '18:00-19:00',\n];\n\nconst TimeSettings = ({ onUpdate, defaultValue }) => {\n const [lunch, setLunch] = useState(defaultValue?.lunch || TIME_OPTIONS_LUNCH[0]);\n const [dinner, setDinner] = useState(defaultValue?.dinner || TIME_OPTIONS_DINNER[0]);\n\n useEffect(() => {\n if (lunch && dinner) {\n onUpdate && onUpdate({ lunch, dinner });\n }\n }, [lunch, dinner]);\n\n if (!lunch || !dinner) {\n return <>;\n }\n\n return (\n \n \n \n 選擇午餐送達時間\n \n \n \n \n \n 午餐時間\n \n {\n const { value } = e.target;\n setLunch(value);\n }}\n >\n {TIME_OPTIONS_LUNCH.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n \n 選擇晚餐送達時間\n \n \n \n \n \n 晚餐時間\n \n {\n const { value } = e.target;\n setDinner(value);\n }}\n >\n {TIME_OPTIONS_DINNER.map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n );\n};\n\nexport default TimeSettings;\n\nTimeSettings.propTypes = {\n onUpdate: PropTypes.func,\n defaultValue: PropTypes.any,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepButton from '@material-ui/core/StepButton';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport cache from 'utilities/cache';\nimport { formatAddress } from 'utilities/format';\nimport { request } from 'utilities/graph';\nimport { queryAddress } from 'graphql/mutations';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\nimport AddressSettings from './AddressSettings';\nimport DateSettings from './DateSettings';\nimport TimeSettings from './TimeSettings';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n actionButton: {\n width: '80%',\n borderRadius: '20px',\n // backgroundColor: '#00913A',\n color: 'white',\n },\n}));\n\nexport default function AddressDateTimeSettingsDialog({\n onClose,\n open,\n}) {\n const classes = useStyles();\n const [activeStep, setActiveStep] = useState(0);\n const [activeStepData, setActiveStepData] = useState();\n const [errorMsg, setErrorMsg] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n const addressValidator = async (address) => {\n setIsLoading(true);\n const params = {\n input: {\n address: formatAddress(address, { includeZipCode: false, ignoreNote: true }),\n },\n };\n try {\n const {\n data: {\n queryAddress: {\n success, data,\n },\n },\n } = await request(queryAddress, params);\n if (!success) {\n setErrorMsg('無法定位地址,請重新確認輸入的地址');\n setIsLoading(false);\n return false;\n } else {\n address.lat = data.lat;\n address.lng = data.lng;\n setErrorMsg();\n }\n } catch (e) {\n console.log(e);\n setErrorMsg('無法定位地址,請重新確認輸入的地址');\n setIsLoading(false);\n return false;\n }\n setIsLoading(false);\n\n return true;\n };\n\n const dateValidator = (date) => {\n if (!date?.days || date?.days.length === 0) {\n setErrorMsg('請選擇送餐日期');\n return false;\n }\n setErrorMsg();\n return true;\n };\n\n const timeValidator = (time) => {\n if (!time || (time.lunch === '不需要午餐' && time.dinner === '不需要晚餐')) {\n setErrorMsg('請選擇送餐時間');\n return false;\n }\n setErrorMsg();\n return true;\n };\n\n const steps = [\n {\n key: 'address',\n label: '地址',\n component: AddressSettings,\n validator: addressValidator,\n },\n {\n key: 'date',\n label: '日期',\n component: DateSettings,\n validator: dateValidator,\n },\n {\n key: 'time',\n label: '時間',\n component: TimeSettings,\n validator: timeValidator,\n },\n ];\n\n const getStepData = (stepIndex) => cache.get(`public:menu2-${steps[stepIndex].key}`) || {};\n\n useEffect(() => {\n setActiveStepData(getStepData(0));\n setActiveStep(0);\n }, []);\n\n const handleClose = async (e, reason) => {\n if (reason === 'backdropClick') return;\n setActiveStepData(getStepData(0));\n setActiveStep(0);\n setErrorMsg();\n onClose && onClose();\n };\n\n if (!activeStepData) {\n return <>;\n }\n\n return (\n \n \n \n \n {steps.map(({ label }, index) => {\n const stepProps = {};\n return (\n \n \n {label}\n \n \n );\n })}\n \n {steps.map((item, index) => {\n if (activeStep !== index) return null;\n\n return (
\n {\n setActiveStepData(data);\n }}\n />\n {errorMsg &&\n \n {errorMsg}\n \n }\n
);\n })}\n
\n \n \n {activeStep !== 0 &&\n \n {\n let dataValid = true;\n if (steps[activeStep].validator) {\n dataValid = await steps[activeStep].validator(activeStepData);\n }\n if (dataValid) {\n cache.remove('public:menu2-orders');\n cache.set(`public:menu2-${steps[activeStep].key}`, activeStepData);\n setActiveStepData(getStepData(activeStep - 1));\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n }\n }}\n >\n 上一步\n \n }\n {activeStep !== steps.length - 1 &&\n \n {\n let dataValid = true;\n if (steps[activeStep].validator) {\n dataValid = await steps[activeStep].validator(activeStepData);\n }\n if (dataValid) {\n cache.remove('public:menu2-orders');\n cache.set(`public:menu2-${steps[activeStep].key}`, activeStepData);\n setActiveStepData(getStepData(activeStep + 1));\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n }}\n >\n 下一步\n {isLoading && \n \n }\n \n }\n {activeStep === steps.length - 1 &&\n \n {\n let dataValid = true;\n if (steps[activeStep].validator) {\n dataValid = await steps[activeStep].validator(activeStepData);\n }\n if (dataValid) {\n cache.remove('public:menu2-orders');\n cache.set(`public:menu2-${steps[activeStep].key}`, activeStepData);\n handleClose();\n }\n }}\n >\n 開始訂餐\n \n }\n \n \n \n
\n );\n}\n\nAddressDateTimeSettingsDialog.propTypes = {\n onClose: PropTypes.func,\n open: PropTypes.bool,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport EditIcon from '@material-ui/icons/Edit';\nimport AddressDateTimeSettingsDialog from './AddressDateTimeSettingsDialog';\n\nconst AddressDateTimeSettings = ({ onUpdate }) => {\n const [showDialog, setShowDialog] = useState(false);\n\n return (\n <>\n {\n setShowDialog(true);\n }}\n >\n \n \n {\n setShowDialog(false);\n onUpdate && onUpdate();\n }}\n />\n \n );\n};\n\nexport default AddressDateTimeSettings;\n\nAddressDateTimeSettings.propTypes = {\n onUpdate: PropTypes.func,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TagChip from 'components/TagChip';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport AutoSizeDialog from 'components/AutoSizeDialog';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n}));\n\nexport default function MealItemDialog({ restaurant, meal, onClose, quantity: inQuantity = 1, open }) {\n const classes = useStyles();\n const [quantity, setQuantity] = useState(inQuantity);\n\n const {\n name,\n imageUrl,\n price,\n tags,\n description,\n } = meal;\n const restaurantName = restaurant.name;\n\n const handleAddMealItem = async () => {\n global.logger.debug('handleAddMealItem', meal);\n\n onClose({\n meal,\n quantity,\n });\n };\n\n return (\n onClose()}\n >\n \n \n \n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n \n \n \n \n {name}\n \n \n ${price}\n \n \n \n \n \n {restaurantName}\n \n \n \n {tags.items.map(({ tag }, index)=>(\n \n ))}\n \n \n \n \n \n 餐點簡介\n \n \n \n \n {description}\n \n \n \n \n \n \n \n {\n setQuantity(quantity - 1 >= 0 ? quantity - 1 : 0);\n }}\n >\n \n \n \n \n \n \n 數量\n \n {\n const { value } = e.target;\n setQuantity(value);\n }}\n >\n {Array.from(Array(16).keys()).map((item) => (\n \n {item}\n \n ))}\n \n \n \n \n {\n setQuantity(quantity + 1 <= 15 ? quantity + 1 : 15);\n }}\n >\n \n \n \n \n \n \n \n {quantity === 0 ? '移出購物車' : `加入購物車`}\n \n \n \n \n \n );\n}\n\nMealItemDialog.propTypes = {\n restaurant: PropTypes.object.isRequired,\n meal: PropTypes.object.isRequired,\n onClose: PropTypes.func.isRequired,\n quantity: PropTypes.number,\n open: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Divider from '@material-ui/core/Divider';\nimport Badge from '@material-ui/core/Badge';\nimport { makeStyles } from '@material-ui/core/styles';\nimport OpeningHoursDialog from '../components/OpeningHoursDialog';\nimport TagChip from 'components/TagChip';\n\nconst useStyles = makeStyles({\n mediaContainer: {\n position: 'relative',\n },\n media: {\n height: 150,\n opacity: 0.1,\n },\n imageContainer: {\n position: 'absolute',\n top: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n },\n img: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n },\n card: {\n cursor: 'pointer',\n height: '100%',\n borderRadius: '20px',\n },\n});\n\nexport default function RestaurantMeals({ restaurant, onMealClick, filters, addedMeals = [] }) {\n const classes = useStyles();\n const [filteredMeals, setFilteredMeals] = useState([]);\n\n useEffect(() => {\n global.logger.debug('filters', filters);\n\n const filtered = restaurant.meals.filter((meal) => {\n let shouldDisplay = true;\n Object.keys(filters).forEach((key) => {\n if (key === 'text') {\n shouldDisplay = [\n meal.name, meal.description,\n meal.tagsString,\n ].some((value) => {\n return value ? value.toLowerCase().includes(filters[key]) : false;\n });\n return;\n }\n const targetValues = filters[key].filter((x) => x);\n if (targetValues.length === 0) {\n return;\n }\n global.logger.debug('key', key, targetValues);\n // compare key to subcategory\n const result = meal.tags.items.some((item) => {\n const tagItem = item[Object.keys(item)[0]];\n if (tagItem.subcategory === key) {\n return targetValues.includes(tagItem.label);\n } else {\n return false;\n }\n });\n if (!result) {\n shouldDisplay = false;\n }\n });\n\n return shouldDisplay;\n });\n\n setFilteredMeals(filtered);\n }, [filters]);\n\n if (filteredMeals.length === 0) {\n return
;\n }\n\n return \n \n \n \n {restaurant.name}\n \n \n \n \n \n \n \n \n \n {\n filteredMeals.map((meal) => {\n const { id, imageUrl, name, price, tags } = meal;\n const imgSrc = imageUrl || '/images/meal.webp';\n const quantity = (addedMeals.find((addedMeal) => addedMeal.meal.id === id) || {}).quantity;\n return (\n \n \n \n onMealClick(meal, restaurant)}>\n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n
\n \n \n \n \n {name}\n \n \n \n \n ${price}\n \n \n
\n\n {tags.items.map(({ tag }, index)=>(\n \n ))}\n \n \n
\n
\n );\n })}\n ;\n}\nRestaurantMeals.propTypes = {\n restaurant: PropTypes.object.isRequired,\n onMealClick: PropTypes.func.isRequired,\n filters: PropTypes.object,\n addedMeals: PropTypes.array,\n};\n\n","import React, { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport AddressDateTimeSettings from '../AddressDateTimeSettings';\nimport { formatAddress } from 'utilities/format';\nimport { Storage } from 'aws-amplify';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport RoomOutlinedIcon from '@material-ui/icons/RoomOutlined';\n// import Autocomplete from '@material-ui/lab/Autocomplete';\n// import Chip from '@material-ui/core/Chip';\nimport Button from '@material-ui/core/Button';\nimport distance from '@turf/distance';\nimport { point } from '@turf/helpers';\nimport moment from 'moment';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nimport {\n // counties,\n countiesGeoJson,\n} from '@silvergatedelivery/constants';\n\nimport { asyncListAll } from 'utilities/graph';\nimport { getRestaurantsByClientByIsActive, getRestaurantHolidayByRestaurantByYear } from 'graphql/queries';\nimport {\n getRestaurantsByCountyByIsActive,\n getRestaurantMealsByRestaurantByIsActive,\n} from './queries';\n// import DataJoinEditorInput from 'components/DataJoinEditor/DataJoinEditorInput';\nimport Loading from 'components/Loading';\nimport { sortBy } from 'utilities/sorting';\nimport MealItemDialog from './MealItemDialog';\nimport cache from 'utilities/cache';\nimport RestaurantMeals from './RestaurantMeals';\nimport { compareObjects } from 'utilities/sorting';\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n backgroundColor: '#00913A',\n width: '100%',\n marginBottom: 10,\n },\n body: {\n maxHeight: 'calc(100% - 62px)',\n padding: 16,\n overflow: 'auto',\n },\n}));\n\nconst addNeighbors = (county) => {\n const uniqueNeighbors = new Set();\n\n const { neighbors } = countiesGeoJson.features.find((x) => x.properties.name === county);\n neighbors.forEach((neighbor) => uniqueNeighbors.add(neighbor));\n uniqueNeighbors.add(county);\n\n return [...uniqueNeighbors];\n};\n\nconst getDateTimeLabel = () => {\n const { days } = cache.get('public:menu2-date') || {};\n const time = cache.get('public:menu2-time');\n if (days?.length > 0 && time) {\n if (time.lunch !== '不需要午餐' && time.dinner !== '不需要晚餐') {\n return `預定${days.length}天的午餐與晚餐`;\n } else if (time.lunch !== '不需要午餐') {\n return `預定${days.length}天的午餐`;\n } else if (time.dinner !== '不需要晚餐') {\n return `預定${days.length}天的晚餐`;\n }\n }\n};\n\nexport default function RestaurantMealList() {\n const classes = useStyles();\n const [restaurants, setRestaurants] = useState([]);\n const [meals, setMeals] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [filters, setFilters] = useState({});\n const [selectedMeal, setSelectedMeal] = useState();\n const [selectedRestaurant, setSelectedRestaurant] = useState();\n const [selectedQuantity, setSelectedQuantity] = useState(1);\n const [address, setAddress] = useState(cache.get('public:menu2-address'));\n const [addedMeals, setAddedMeals] = useState(cache.get('public:menu2-meals') || []); // TODO: 處理餐廳和餐點不一致的問題\n const [dateTimeLabel, setDateTimeLabel] = useState(getDateTimeLabel());\n\n const handleFilter = (key) => (values) => {\n global.logger.debug({ key, values });\n\n const newFilters = {\n ...filters,\n [key]: Array.isArray(values) ? values.map(({ label }) => label) : values,\n };\n setFilters(newFilters);\n };\n\n const handleAddMeal = (data) => {\n if (!data) {\n return;\n }\n const { meal, quantity } = data;\n const existingAddedMealIndex = addedMeals.findIndex((addedMeal) => addedMeal.meal.id === meal.id);\n if (existingAddedMealIndex !== -1) {\n const newAddedMeals = JSON.parse(JSON.stringify(addedMeals));\n if (quantity === 0) {\n newAddedMeals.splice(existingAddedMealIndex, 1);\n } else {\n newAddedMeals[existingAddedMealIndex].quantity = quantity;\n }\n setAddedMeals(newAddedMeals);\n cache.remove('public:menu2-orders');\n cache.set('public:menu2-meals', newAddedMeals);\n } else {\n setAddedMeals([...addedMeals, data]);\n cache.remove('public:menu2-orders');\n cache.set('public:menu2-meals', [...addedMeals, data]); // TODO: 用cache會不會有偷改的風險?\n }\n };\n\n const onMealClick = (meal, restaurant) => {\n global.logger.debug('handleAddMeal', meal, restaurant);\n let openMealItemDialog = false;\n if (addedMeals.length !== 0) {\n const existingAddedMeal = addedMeals.find((addedMeal) => addedMeal.meal.id === meal.id);\n openMealItemDialog = true;\n if (existingAddedMeal) {\n setSelectedQuantity(existingAddedMeal.quantity);\n } else {\n setSelectedQuantity(1);\n }\n // }\n } else {\n openMealItemDialog = true;\n setSelectedQuantity(1);\n }\n\n if (openMealItemDialog) {\n setSelectedMeal(meal);\n setSelectedRestaurant(restaurant);\n }\n };\n\n useEffect(() => {\n if (!address) {\n setRestaurants([]);\n setMeals([]);\n return;\n }\n\n (async () => {\n setIsLoading(true);\n let restaurants = [];\n let meals = [];\n // const { address: elderAddress } = cache.get('public:menu2-elder') || {};\n const locationsAndNeighbors = addNeighbors(address.county);\n const targetClientId = cache.get('public:menu2-target-client-id');\n if (targetClientId) {\n restaurants = await asyncListAll(getRestaurantsByClientByIsActive, {\n clientId: targetClientId,\n isActive: {\n eq: 1,\n },\n filter: {\n isPublic: {\n eq: true,\n },\n },\n });\n } else {\n await Promise.all(locationsAndNeighbors.map(async (county) => {\n const countyRestaurants = await asyncListAll(getRestaurantsByCountyByIsActive, {\n county,\n isActive: {\n eq: 1,\n },\n filter: {\n isPublic: {\n eq: true,\n },\n },\n });\n restaurants = [...restaurants, ...countyRestaurants];\n }));\n }\n\n const elderAddress = cache.get('public:menu2-address');\n const nearbyRestaurants = restaurants.filter((restaurant) => {\n if (restaurant.serviceAreas && restaurant.serviceAreas.length !== 0) {\n if (restaurant.serviceAreas.some((area) => compareObjects(area, {\n county: elderAddress.county,\n district: elderAddress.district,\n zipCode: elderAddress.zipCode,\n }))) {\n return true;\n }\n return false;\n }\n const from = point([restaurant.address.lat, restaurant.address.lng]);\n const to = point([elderAddress.lat, elderAddress.lng]);\n const distanceInKm = distance(from, to);\n return distanceInKm <= 8; // 顯示方圓8KM之內的餐廳\n });\n\n const start = moment().tz(TIME_ZONE).year();\n const end = start + 1;\n await Promise.all(nearbyRestaurants.map(async (restaurant) => {\n const restaurantId = restaurant.id;\n const [restaurantMeals, restaurantHolidays] = await Promise.all([\n asyncListAll(getRestaurantMealsByRestaurantByIsActive, {\n restaurantId,\n isActive: {\n eq: 1,\n },\n filter: {\n isPublic: {\n eq: true,\n },\n },\n }),\n asyncListAll(getRestaurantHolidayByRestaurantByYear, {\n restaurantId,\n year: {\n between: [start, end],\n },\n }),\n ]);\n await Promise.all(restaurantMeals.map(async (item) => {\n if (item.imageS3Keys && item.imageS3Keys[0]) {\n item.imageUrl = await Storage.get(item.imageS3Keys[0]);\n }\n item.tagsString = item.tags.items.map((item) => item.tag.label).join(', ');\n item.restaurant = {\n address: restaurant.address,\n name: restaurant.name,\n openingHours: restaurant.openingHours,\n holidays: restaurantHolidays,\n };\n }));\n restaurant.meals = restaurantMeals.sort(sortBy('updatedAt', true));\n restaurant.holidays = restaurantHolidays;\n meals = [...meals, ...restaurantMeals];\n }));\n\n setRestaurants(nearbyRestaurants);\n setMeals(meals.sort(sortBy('updatedAt', true)));\n\n setIsLoading(false);\n })();\n }, [address]);\n\n global.logger.debug('restaurants & meals', { restaurants, meals });\n\n const onAddressDateTimeSettingsUpdated = () => {\n setAddress(cache.get('public:menu2-address'));\n setDateTimeLabel(getDateTimeLabel());\n };\n\n return (\n
\n \n \n \n \n \n {dateTimeLabel || '請設定日期與時間'}\n \n \n \n \n \n {address ? formatAddress(address) : '請設定外送地址'}\n \n \n \n \n \n \n \n \n {/* \n \n 今天想來點什麼? (filter)\n \n */}\n {meals.length !== 0 && \n \n {\n handleFilter('text')(e.target.value.toLowerCase());\n }}\n fullWidth\n disabled={isLoading}\n />\n \n }\n {/* \n \n 精選推薦專區?\n \n \n 牙齒不好免擔心?\n \n */}\n \n {selectedMeal &&\n {\n handleAddMeal(data);\n setSelectedMeal();\n setSelectedRestaurant();\n setSelectedQuantity(1);\n }}\n />\n }\n {isLoading ? : restaurants.map((restaurant) => {\n return meal.restaurantId === restaurant.id) || undefined}\n onMealClick={onMealClick}\n filters={filters}\n />;\n })}\n {!isLoading && meals.length === 0 &&\n \n

\n 目前尚未開放此區域或是已超出配送範圍,請加入銀色大門詢問客服人員申請。
\n Line:@oqm7360u
\n
\n \n 官方Line好友連結\n \n

\n
}\n
\n \n
\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Location from './Location';\nimport Cart from './Cart';\nimport Order from './Order';\nimport Diary from './Diary';\nimport Member from './Member';\nimport RestaurantMealList from './RestaurantMealList';\nimport cache from 'utilities/cache';\nimport Grid from '@material-ui/core/Grid';\nimport BottomNavigation from '@material-ui/core/BottomNavigation';\nimport BottomNavigationAction from '@material-ui/core/BottomNavigationAction';\nimport HomeIcon from '@material-ui/icons/Home';\nimport ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder';\nimport PersonOutlineOutlinedIcon from '@material-ui/icons/PersonOutlineOutlined';\nimport { useCache } from 'CacheProvider';\nimport { asyncListAll } from 'utilities/graph';\nimport { getEldersByClientByStatus } from 'graphql/queries';\nimport querystring from 'query-string';\nimport { sortBy } from 'utilities/sorting';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: 0,\n overflowX: 'hidden',\n backgroundColor: 'white',\n width: '100%',\n height: 'calc(100vh - 116px)',\n },\n}));\n\nconst pages = [\n {\n key: 'address',\n label: '地址',\n component: Location,\n showNavigtion: false,\n nextPage: 'meals',\n },\n {\n key: 'meals',\n label: '首頁',\n component: RestaurantMealList,\n showNavigtion: true,\n icon: ,\n },\n {\n key: 'cart',\n label: '購物車',\n component: Cart,\n showNavigtion: true,\n icon: ,\n },\n {\n key: 'order',\n label: '所有訂單',\n component: Order,\n showNavigtion: true,\n icon: ,\n },\n {\n key: 'diary',\n label: '關懷日誌',\n component: Diary,\n showNavigtion: true,\n icon: ,\n },\n {\n key: 'member',\n label: '會員中心',\n component: Member,\n showNavigtion: true,\n icon: ,\n },\n];\n\nexport default function Menu2() {\n const classes = useStyles();\n const [activePage, setActivePage] = useState(pages[0]);\n const { appGroup, userGroupOptions } = useCache();\n\n const goPage = (pageKey) => {\n const page = pages.find(({ key }) => key === pageKey);\n if (page) {\n setActivePage(page);\n }\n };\n\n useEffect(() => {\n let clientOption;\n if (userGroupOptions?.length > 0) {\n clientOption = userGroupOptions.find(({ userGroupName }) => userGroupName === 'Clients');\n }\n const address = cache.get('public:menu2-address');\n const receiver = cache.get('public:menu2-receiver');\n const { transactionId } = querystring.parse(window.location.search);\n if (transactionId) {\n goPage('cart');\n return;\n }\n const defaultPage = cache.get('public:menu2-active-page') || 'meals';\n if (!address || !receiver) {\n if (clientOption?.clientId) {\n const { clientId } = clientOption;\n (async () => {\n const existingElders = (await asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n })).sort(sortBy('updatedAt'));\n if (existingElders.length !== 0) {\n const { address: elderAddress, name, phoneNumber, phoneNumber2, phoneNumber3, noteForDelivery } = existingElders[existingElders.length - 1];\n if (!address) {\n cache.set('public:menu2-address', elderAddress);\n }\n if (!receiver) {\n cache.set('public:menu2-receiver', {\n name,\n phoneNumber,\n phoneNumber2,\n phoneNumber3,\n noteForDelivery,\n });\n }\n goPage(defaultPage);\n }\n })();\n } if (address) {\n goPage(defaultPage);\n }\n } else {\n goPage(defaultPage);\n }\n }, [appGroup, userGroupOptions]);\n\n useEffect(() => {\n window.scrollTo({ top: 0 });\n }, [activePage]);\n\n const cacheKey = `public:menu2-${activePage.key}`;\n const formData = cache.get(cacheKey) || {};\n\n return (\n
\n \n \n goPage(page)}\n />\n \n \n {activePage.showNavigtion ?\n {\n const newActivePage = pages.find(({ key }) => key === newValue);\n if (newActivePage) {\n setActivePage(newActivePage);\n cache.set('public:menu2-active-page', newValue);\n }\n }}\n showLabels\n >\n {pages.filter(({ showNavigtion }) => showNavigtion).map(({ label, key, icon }) => (\n \n ))}\n :\n
}\n \n \n
\n );\n}\n","export const getRestaurantMealsByRestaurantByIsActive = /* GraphQL */ `\n query GetRestaurantMealsByRestaurantByIsActive(\n $restaurantId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantMealFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantMealsByRestaurantByIsActive(\n restaurantId: $restaurantId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n previewS3Keys\n imageS3Keys\n createdAt\n # createdBy\n updatedAt\n # updatedBy\n tags {\n items {\n tag {\n category\n subcategory\n color\n label\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getRestaurantsByCountyByIsActive = /* GraphQL */ `\n query GetRestaurantsByCountyByIsActive(\n $county: String\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByCountyByIsActive(\n county: $county\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n # restaurantOwnerId\n isActive\n isPublic\n county\n # clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n # isAddedToPandago\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # tags {\n # items {\n # id\n # restaurantId\n # tagId\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # restaurant {\n # id\n # owner\n # restaurantOwnerId\n # isActive\n # county\n # clientId\n # category\n # name\n # description\n # phoneNumber\n # notes\n # previewS3Keys\n # imageS3Keys\n # isAddedToPandago\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # }\n # tag {\n # id\n # category\n # subcategory\n # color\n # label\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # }\n # }\n # nextToken\n # }\n }\n nextToken\n }\n }\n`;\n","import React from 'react';\nimport clsx from 'clsx';\nimport i18n from 'i18next';\nimport i18nInit from './i18n/i18n';\nimport { hydrate, render } from 'react-dom';\nimport { createBrowserHistory } from 'history';\nimport { Router, Route, Switch } from 'react-router';\nimport { Amplify, Auth, Hub } from 'aws-amplify';\nimport { Analytics } from '@aws-amplify/analytics';\nimport to from 'await-to-js';\nimport { createTheme } from '@material-ui/core/styles';\nimport { ThemeProvider } from '@material-ui/styles';\nimport { makeStyles } from '@material-ui/core/styles';\nimport 'react-redux-toastr/lib/css/react-redux-toastr.min.css';\nimport { Provider } from 'react-redux';\nimport ReduxToastr from 'react-redux-toastr';\nimport Leaflet from 'leaflet';\nimport { HelmetProvider } from 'react-helmet-async';\nimport { AmplifyProvider } from '@aws-amplify/ui-react';\nimport querystring from 'query-string';\n// import TagManager from 'react-gtm-module';\n\nimport './global';\nimport awsconfig from './aws-exports.js';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport CustomAppBar from 'components/CustomAppBar';\nimport IndividualClientAppBar from 'components/IndividualClientAppBar';\nimport Loading from 'components/Loading';\nimport { Colors, DRAWER_WIDTH, SHOP_PREFIX, GROUP_ORDER_PREFIX, liffIds } from '@silvergatedelivery/constants';\nimport Winbox from 'components/Winbox/Winbox';\nimport { routes as publicRoutes } from 'views/Public/routes';\nimport store from './App.reducer';\nimport Footer from './Footer';\nimport UserGroupSelector from 'components/Auth/UserGroupSelector';\nimport cache from 'utilities/cache';\nimport appConfig from '../package.json';\nimport Reset from 'components/Reset';\nimport useCustomAuth from 'hooks/useCustomAuth';\nimport PublicOrder from 'components/Order/PublicOrder';\nimport { CacheProvider, useCache } from 'CacheProvider';\nimport { getUserGroupOptions } from 'components/Auth/helpers';\nimport IndividualClientLandingPage from 'views/Public/Menu2/Menu';\nimport liff from '@line/liff';\n\n// CSS\nimport './index.css';\nimport 'leaflet/dist/leaflet.css';\nimport 'winbox-react/dist/index.css';\n\n// // Google Tag Manager\n// // https://www.npmjs.com/package/react-gtm-module\n// const tagManagerArgs = process.env.NODE_ENV === 'development' ? {\n// // local development\n// gtmId: 'GTM-PFQFKG8Q',\n// auth: '42SR7kw4tRK8p02hxCgNjQ',\n// preview: 'env-4',\n// } : {\n// // live\n// gtmId: 'GTM-PFQFKG8Q',\n// auth: 'Pkcz1Ep3TdKboXO0uZwA6w',\n// preview: 'env-1',\n// };\n\n// TagManager.initialize(tagManagerArgs);\n\n// Leaflet\nLeaflet.Icon.Default.imagePath = '../node_modules/leaflet';\ndelete Leaflet.Icon.Default.prototype._getIconUrl;\nLeaflet.Icon.Default.mergeOptions({\n iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),\n iconUrl: require('leaflet/dist/images/marker-icon.png'),\n shadowUrl: require('leaflet/dist/images/marker-shadow.png'),\n});\n\n// eslint-disable-next-line no-undef\nconst browserChannel = new BroadcastChannel('silvergate');\n\n// Disable oauth for web\ndelete awsconfig.oauth;\n\nconst { origin } = window.location;\n\nconst envName = awsconfig.aws_cloud_logic_custom[0].endpoint.split('/').pop();\n\nawsconfig.oauth = {\n domain: `oauth-${envName}.auth.ap-southeast-1.amazoncognito.com`,\n scope: ['email', 'openid', 'profile'],\n redirectSignIn: `${origin}/`,\n redirectSignOut: `${origin}/`,\n responseType: 'code', // token\n};\n\nAmplify.configure(awsconfig);\nAnalytics.disable();\n\nconst history = createBrowserHistory();\n\n// https://material-ui.com/customization/default-theme/\nconst theme = createTheme({\n palette: {\n primary: {\n light: Colors.primaryLight,\n main: Colors.primary,\n dark: Colors.primaryDark,\n contrastText: '#fff',\n },\n },\n overrides: {\n MuiTab: {\n root: {\n minWidth: `100px !important`,\n },\n },\n },\n});\n\nconst amplifyTheme = {\n name: 'amplify-theme',\n // https://github.com/aws-amplify/amplify-ui/tree/main/packages/ui/src/theme/tokens/components\n tokens: {\n components: {\n authenticator: {\n modal: {\n backgroundColor: {\n value: Colors.background.light,\n },\n },\n },\n },\n colors: {\n font: {\n primary: { value: Colors.primary },\n },\n brand: {\n primary: {\n // 10: { value: Colors.primary },\n // 20: { value: Colors.primary },\n // 30: { value: Colors.primary },\n // 40: { value: Colors.primary },\n // 50: { value: Colors.primary },\n 60: { value: Colors.primary },\n 70: { value: Colors.primary },\n 80: { value: Colors.primary },\n 90: { value: Colors.primary },\n 100: { value: Colors.primary },\n },\n },\n },\n },\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n marginTop: 64,\n overflow: 'auto',\n flexGrow: 1,\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n backgroundColor: Colors.background.light,\n marginLeft: DRAWER_WIDTH,\n height: 'calc(100vh - 64px)',\n },\n contentShift: {\n flexGrow: 1,\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: 0,\n },\n root: {\n display: 'flex',\n [theme.breakpoints.up('md')]: {\n overflow: 'auto',\n },\n [theme.breakpoints.down('md')]: {\n overflowX: 'hidden',\n },\n // height: 'calc(100vh - 116px)', // 64px appbar + 52px footer\n },\n}));\n\nfunction ReactApp() {\n const classes = useStyles();\n\n const [isSignedIn, setIsSignedIn] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [user, setUser] = React.useState();\n const [filteredRoutes, setFilteredRoutes] = React.useState([]);\n const [open, setOpen] = React.useState(false);\n const { signOut, recordEvent } = useCustomAuth();\n const [i18nReady, setI18nReady] = React.useState(false);\n const [needToGetUserGroupOptions, setNeedToGetUserGroupOptions] = React.useState(true);\n const [shopClientMode, setShopClientMode] = React.useState(\n window.location.hostname.startsWith(SHOP_PREFIX));\n const [orderClientMode, setOrderClientMode] = React.useState(\n window.location.hostname.startsWith(GROUP_ORDER_PREFIX));\n const { setUserGroupOptions, setAppGroup, selectedUserGroupParams, setSelectedUserGroupParams } = useCache();\n const oldInstanceFound = React.useRef(false);\n\n const checkAppVersion = async () => {\n const version = appConfig.version;\n const versionInCache = cache.get('app:version');\n if (!versionInCache || version !== versionInCache) {\n await signOut();\n return false;\n }\n return true;\n };\n const publicOrderPathRegex = /^\\/order\\/([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n\n React.useEffect(() => {\n (async () => {\n await i18nInit();\n setI18nReady(true);\n })();\n if (shopClientMode) {\n liff\n .init({\n liffId: liffIds[window.location.hostname] || liffIds.default,\n })\n .then(() => {\n console.log('LIFF init successed');\n // (async () => {\n // console.log(liff.isLoggedIn());\n // if (liff.isLoggedIn()) {\n // console.log('get line id token');\n // const token = liff.getIDToken();\n // const decodedToken = liff.getDecodedIDToken();\n // console.log(token);\n // console.log(decodedToken);\n\n // const profile = await liff.getProfile();\n // console.log(profile);\n // const cred = await Auth.federatedSignIn('access.line.me', {\n // token,\n // expires_at: decodedToken.exp,\n // }, {\n // // email: 'ccfang@gmail.com',\n // name: profile.displayName,\n // sub: profile.userId,\n // });\n // console.log(cred);\n // }\n // })();\n })\n .catch((e) => {\n console.log('LIFF init failed...');\n console.log(`code: ${e.code}, message: ${e.message}`);\n });\n }\n }, []);\n\n React.useEffect(() => {\n (async () => {\n if (!await checkAppVersion()) {\n return;\n }\n const initialPath = history.location;\n global.logger.debug(`initialPath`, initialPath);\n\n const [err, cognitoUser] = await to(Auth.currentAuthenticatedUser({ bypassCache: true }));\n // global.logger.debug('cognitoUser', { err, cognitoUser, initialPath });\n\n if (err) {\n if (!publicRoutes.some((route) => route.path === initialPath.pathname)) {\n const match = initialPath.pathname.match(publicOrderPathRegex);\n if (initialPath.pathname !== '/reset' && !match) {\n history.push('/');\n }\n }\n } else {\n setUser(cognitoUser);\n }\n\n if (initialPath.pathname === '/') {\n const { clientId } = querystring.parse(window.location.search);\n if (clientId) {\n cache.set('public:menu-target-client-id', clientId);\n } else {\n // TODO\n // cache.remove('public:menu-target-client-id');\n }\n }\n\n setIsLoading(false);\n })();\n\n Hub.listen('auth', ({ payload: { event, data } }) => {\n // global.logger.debug({ event, data });\n switch (event) {\n case 'signIn':\n setUser(data);\n break;\n case 'user':\n setUser(data);\n break;\n case 'signOut':\n setUser();\n setOpen(false);\n setIsSignedIn(false);\n break;\n default:\n }\n });\n\n const unlisten = history.listen((location) => {\n setShopClientMode(window.location.hostname.startsWith(SHOP_PREFIX));\n setOrderClientMode(window.location.hostname.startsWith(GROUP_ORDER_PREFIX));\n });\n\n return () => {\n unlisten();\n };\n }, []);\n\n React.useEffect(() => {\n (async () => {\n if (!user) {\n return;\n }\n // 當用line login時,重新導向回來會同時有兩個setUser,造成這個useEffect同時跑兩次,會create兩個client\n if (!needToGetUserGroupOptions) {\n return;\n }\n setNeedToGetUserGroupOptions(false);\n const userGroupOptions = await getUserGroupOptions(user, orderClientMode, shopClientMode);\n\n setUserGroupOptions(userGroupOptions);\n const isAdmin = userGroupOptions.some(({ userGroupName }) => userGroupName === 'Admins');\n // validate selectedUserGroupParams\n if (selectedUserGroupParams) {\n if (!isAdmin) {\n if (selectedUserGroupParams.userGroupName === 'Admins') {\n setSelectedUserGroupParams();\n } else if (selectedUserGroupParams.userGroupName === 'OrgAdmins') {\n const organization = userGroupOptions.find(({ organizationId }) => organizationId === selectedUserGroupParams.organizationId);\n if (!organization) {\n console.error('organization not found');\n setSelectedUserGroupParams();\n }\n } else if (selectedUserGroupParams.userGroupName === 'FacilityAdmins') {\n const facility = userGroupOptions.find(({ clientId }) => clientId === selectedUserGroupParams.clientId);\n if (!facility) {\n console.error('facility not found');\n setSelectedUserGroupParams();\n }\n }\n }\n if (selectedUserGroupParams.userGroupName === 'OrgAdmins') {\n const organization = userGroupOptions.find(({ organizationId }) => organizationId === selectedUserGroupParams.organizationId);\n if (organization && organization.organizationData.updatedAt !== selectedUserGroupParams.organizationData.updatedAt) {\n console.error('organization modified');\n setSelectedUserGroupParams();\n }\n } else if (selectedUserGroupParams.userGroupName === 'FacilityAdmins') {\n const facility = userGroupOptions.find(({ clientId }) => clientId === selectedUserGroupParams.clientId);\n if (facility && facility.clientData.updatedAt !== selectedUserGroupParams.clientData.updatedAt) {\n console.error('facility modified');\n setSelectedUserGroupParams();\n }\n }\n }\n\n // #1057 紀錄關閉網頁時間\n window.addEventListener('beforeunload', async () => {\n // 不一定會成功\n await recordEvent('關閉網頁');\n });\n })();\n }, [user]);\n\n React.useEffect(() => {\n (async () => {\n if (!user || !user.signInUserSession) {\n setFilteredRoutes([]);\n return;\n }\n\n if (isSignedIn) {\n return;\n }\n\n setIsSignedIn(true);\n\n setIsLoading(false);\n })();\n }, [isSignedIn, user]);\n\n React.useEffect(() => {\n (async () => {\n if (!isSignedIn || !user || !selectedUserGroupParams || !i18nReady) return;\n\n setIsLoading(true);\n\n // Solve the issue for group permissions\n const cognitoUser = await Auth.currentAuthenticatedUser();\n await new Promise((resolve) => {\n const { refreshToken } = cognitoUser.getSignInUserSession();\n cognitoUser.refreshSession(refreshToken, (err, session) => {\n resolve();\n });\n });\n\n const {\n userGroupName,\n clientId,\n clientData,\n organizationId,\n organizationData,\n } = selectedUserGroupParams;\n\n // // GTM trigger\n // TagManager.dataLayer({\n // dataLayerName: userGroupName,\n // dataLayer: {\n // event: '登入',\n // username: cognitoUser.username,\n // clientId,\n // organizationId,\n // },\n // });\n\n // clear old values\n cache.remove('app:organizationId');\n // cache.remove('app:name');\n cache.remove('app:facilityId');\n cache.remove('app:phoneNumber');\n cache.remove('app:clientId');\n\n // TODO: put all cache into CacheProvider\n switch (userGroupName) {\n case 'Admins':\n setAppGroup('Admins');\n cache.set('app:pathPrefix', 'admin');\n break;\n case 'OrgAdmins':\n setAppGroup('OrgAdmins');\n cache.set('app:pathPrefix', 'organization');\n\n cache.set('app:organizationId', organizationId);\n cache.set('app:name', organizationData.name);\n break;\n case 'FacilityAdmins':\n setAppGroup('FacilityAdmins');\n cache.set('app:pathPrefix', 'facility');\n\n cache.set('app:facilityId', clientId);\n cache.set('app:name', clientData.name);\n cache.set('app:location', clientData.county);\n cache.set('app:phoneNumber', clientData.phoneNumber);\n break;\n case 'Clients':\n default:\n setAppGroup('Clients');\n cache.set('app:pathPrefix', 'client');\n\n cache.set('app:clientId', clientId);\n cache.set('app:name', clientData.name);\n cache.set('app:location', clientData.county);\n cache.set('app:phoneNumber', clientData.phoneNumber);\n }\n\n cache.set('app:selectedUserGroupParams', selectedUserGroupParams);\n\n if (clientData && clientData.translation) {\n await i18n.changeLanguage(clientData.translation);\n }\n\n const userGroups = [userGroupName];\n\n // load routes here for translation\n const { appRoutes } = require('./routes');\n let filteredRoutes = appRoutes.filter(({ roles }) => {\n return (roles) ? userGroups && userGroups.some((group) => roles.includes(group)) : true;\n });\n if (window.location.hostname !== 'develop.silvergatedelivery.com' && window.location.hostname !== 'demo.silvergatedelivery.com') {\n filteredRoutes = filteredRoutes.filter(({ demoOnly }) => !demoOnly);\n }\n setFilteredRoutes(filteredRoutes);\n\n const initialPath = history.location;\n global.logger.debug(`initialPath`, initialPath);\n\n history.push(initialPath);\n\n const username = cache.get('app:username');\n\n browserChannel.onmessage = (event) => {\n if (event.data.type === 'echo') {\n browserChannel.postMessage({\n type: 'response',\n userGroupName,\n clientId,\n organizationId,\n username,\n });\n } else if (event.data.type === 'response') {\n if (event.data.userGroupName === userGroupName &&\n event.data.clientId === clientId &&\n event.data.organizationId === organizationId &&\n event.data.username === username\n ) {\n oldInstanceFound.current = true;\n }\n }\n };\n\n const { type: navigationType } = window.performance.getEntriesByType('navigation')[0];\n if (navigationType !== 'reload') {\n browserChannel.postMessage({ type: 'echo' });\n setTimeout(async () => {\n if (!oldInstanceFound.current) {\n await recordEvent('登入');\n } else {\n await recordEvent('開新網頁');\n }\n }, 1000);\n }\n\n setIsLoading(false);\n })();\n }, [isSignedIn, selectedUserGroupParams, user, i18nReady]);\n\n if (window.location.pathname === '/reset') {\n return ;\n }\n\n const match = window.location.pathname.match(publicOrderPathRegex);\n if (match && match[1]) {\n return ;\n }\n\n if (isLoading || !i18nReady) {\n return ();\n }\n\n if (user && !selectedUserGroupParams) {\n return (\n );\n }\n\n const getCustomComponent = (path, component) => {\n if (path === '/' && shopClientMode) {\n component = IndividualClientLandingPage;\n }\n return component;\n };\n\n return (\n \n {shopClientMode ?\n :\n }\n \n
\n \n \n {user ?\n \n { shopClientMode ? : }\n :\n \n {/* \n */}\n {/* */}\n {/* */}\n {publicRoutes.map(({ path, exact, component }, index) => {\n const customComponent = getCustomComponent(path, component);\n return ;\n })}\n }\n \n
\n {!shopClientMode &&\n
}\n
\n \n );\n}\n\nconst RootApp = () => (\n // \n \n \n \n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n);\n\nconst rootElement = document.getElementById('root');\nif (rootElement.hasChildNodes()) {\n hydrate(, rootElement);\n} else {\n render(, rootElement);\n}\n\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import React, { useState, useEffect } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport { Auth } from 'aws-amplify';\nimport { useCache } from 'CacheProvider';\n// import Loading from 'components/Loading';\n\nconst ProtectedRoute = ({ component: Component, render, roles, user: inUser, ...args }) => {\n const [user, setUser] = useState(null);\n const [isAuthenticated, setIsAuthenticated] = useState(undefined);\n const [isAuthorized, setIsAuthorized] = useState(undefined);\n const { appGroup } = useCache();\n\n useEffect(() => {\n if (!isAuthenticated) return;\n if (roles) {\n let userGroups = user.signInUserSession.accessToken.payload['cognito:groups'];\n if ((userGroups.includes('Admins') || userGroups.includes('OrgAdmins')) && appGroup === 'FacilityAdmins') {\n userGroups = ['FacilityAdmins'];\n }\n if (userGroups.includes('Admins') && appGroup === 'OrgAdmins') {\n userGroups = ['OrgAdmins'];\n }\n\n const isAuthorized = userGroups && userGroups.some((group) => roles.includes(group)) ? true : false;\n setIsAuthorized(isAuthorized);\n } else {\n setIsAuthorized(true);\n }\n }, [user, roles, isAuthenticated]);\n\n useEffect(() => {\n (async () => {\n if (!user) {\n try {\n const user = inUser || await Auth.currentAuthenticatedUser({\n bypassCache: true,\n });\n if (user) {\n setUser(user);\n setIsAuthenticated(true);\n } else {\n setIsAuthenticated(false);\n }\n } catch (e) {\n if (e === 'not authenticated') {\n setIsAuthenticated(false);\n }\n }\n }\n })();\n }, [user, inUser]);\n\n if (isAuthenticated === false) {\n return ();\n }\n\n if (isAuthorized === false) {\n return ();\n }\n\n // if (!user || isAuthorized === undefined || isAuthenticated === undefined) {\n // return (\n // \n // );\n // }\n\n return render ? render({ user, ...args }) : ();\n};\n\nProtectedRoute.propTypes = {\n render: PropTypes.func,\n component: PropTypes.elementType,\n roles: PropTypes.array,\n user: PropTypes.object,\n};\n\nexport default ProtectedRoute;\n","/* eslint-disable quotes, comma-dangle */\nexport default {\n \"title\": \"用戶權限\",\n \"type\": \"object\",\n \"required\": [\n \"username\", \"isActive\"\n ],\n \"properties\": {\n \"username\": {\n \"type\": \"string\",\n \"title\": \"ID\"\n },\n \"email\": {\n 'type': ['string', 'null'],\n \"title\": \"Email\"\n },\n \"ownedFacilityName\": {\n \"type\": \"string\",\n \"title\": \"私有機構\",\n },\n \"isActive\": {\n \"type\": \"number\",\n \"title\": \"狀態\",\n \"enum\": [0, 1],\n \"enumNames\": [\"已停用\", \"使用中\"]\n },\n // \"isClient\": {\n // 'type': \"boolean\",\n // \"title\": \"客戶 Clients\",\n // \"default\": false,\n // },\n // \"clientId\": {\n // 'type': ['string', 'null'],\n // \"title\": \"Client ID\"\n // },\n // \"isRestaurantOwner\": {\n // 'type': \"boolean\",\n // \"title\": \"餐廳負責人 RestaurantOwners\",\n // \"default\": false,\n // },\n // \"restaurantOwnerId\": {\n // 'type': ['string', 'null'],\n // \"title\": \"Restaurant Owner ID\"\n // },\n // \"isDeliveryStaff\": {\n // 'type': \"boolean\",\n // \"title\": \"送餐大使 DeliveryStaffs\",\n // \"default\": false,\n // },\n // \"deliveryStaffId\": {\n // 'type': ['string', 'null'],\n // \"title\": \"Delivery Staff ID\"\n // },\n \"isAdmin\": {\n 'type': \"boolean\",\n \"title\": \"系統管理員 Admins\",\n \"default\": false,\n },\n \"isFacilityAdmin\": {\n 'type': \"boolean\",\n \"title\": \"機構管理員 FacilityAdmins\",\n \"default\": false,\n },\n // \"adminId\": {\n // 'type': ['string', 'null'],\n // \"title\": \"Admin ID\",\n // },\n // \"isOrgAdmin\": {\n // 'type': \"boolean\",\n // \"title\": \"組織負責人 OrgAdmins\",\n // \"default\": false,\n // },\n \"organizationId\": {\n 'type': ['string', 'null'],\n \"title\": \"選擇組織\"\n },\n }\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\n\nimport DataForm from 'forms/DataForm';\nimport { request, asyncListAll } from 'utilities/graph';\nimport {\n getClientOrganizationByOrganization,\n} from 'graphql/queries';\nimport {\n adminUpdateUserGroup,\n} from 'graphql/mutations';\nimport schema from './schema.js';\nimport uiSchema from './uiSchema';\n\nexport default function UserForm({ formData: inFormData, ...props }) {\n const [facilityOptions, setFacilityOptions] = useState([]);\n const [formData, setFormData] = useState();\n const [organizationId, setOrganizationId] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [dirty, setDirty] = useState(false);\n\n const updateFacilityOptions = async (organizationId, facilityIds = []) => {\n if (!organizationId) {\n setFacilityOptions([]);\n }\n const clientOrganization = await asyncListAll(getClientOrganizationByOrganization, {\n organizationId,\n });\n const newFacilityOptions = clientOrganization.reduce((accumulator, currentValue) => {\n if (currentValue.client && currentValue.client.type === 'facility') {\n accumulator.push({\n id: currentValue.client.id,\n name: currentValue.client.name,\n isSelected: facilityIds.includes(currentValue.client.id),\n });\n }\n return accumulator;\n }, []);\n setFacilityOptions(newFacilityOptions);\n };\n\n useEffect(() => {\n (async () => {\n setOrganizationId(inFormData.organizationId);\n if (inFormData.organizationId) {\n await updateFacilityOptions(inFormData.organizationId, inFormData.facilityIds);\n }\n setFormData({\n ...inFormData,\n ownedFacilityName: (inFormData.ownedFacilityName || []).join(', '),\n });\n })();\n }, [inFormData]);\n\n const updateFunc = async (data) => {\n setIsLoading(true);\n const {\n username,\n isActive,\n organizationId,\n deliveryStaffId,\n restaurantOwnerId,\n clientId,\n isAdmin = false,\n isClient = false,\n isRestaurantOwner = false,\n isDeliveryStaff = false,\n ownedFacilityName,\n isFacilityAdmin: newIsFacilityAdmin = false,\n } = data;\n\n const facilityIds = facilityOptions.filter(({ isSelected }) => isSelected).map(({ id }) => id);\n const isOrgAdmin = !!organizationId && organizationId !== 'N/A';\n const isFacilityAdmin = facilityIds.length !== 0 || (ownedFacilityName && ownedFacilityName.length !== 0) || newIsFacilityAdmin;\n await request(adminUpdateUserGroup, {\n input: {\n username,\n isActive,\n organizationId,\n facilityIds,\n deliveryStaffId,\n restaurantOwnerId,\n clientId,\n isAdmin,\n isOrgAdmin,\n isFacilityAdmin,\n isClient,\n isRestaurantOwner,\n isDeliveryStaff,\n },\n });\n\n setIsLoading(false);\n\n return {\n ...data,\n facilityIds,\n isOrgAdmin,\n isFacilityAdmin,\n };\n };\n\n const onChange = async (data) => {\n const {\n organizationId: newOrganizationId,\n } = data;\n\n setDirty(true);\n if (!newOrganizationId) {\n setFacilityOptions([]);\n return;\n }\n\n if (newOrganizationId !== organizationId) {\n updateFacilityOptions(newOrganizationId);\n setOrganizationId(newOrganizationId);\n }\n };\n\n if (!formData) {\n return null;\n }\n\n return (\n \n { facilityOptions.length > 0 &&\n
\n 選擇機構:\n {\n facilityOptions.map((facility, index) => (\n {\n const newFacilityOptions = JSON.parse(JSON.stringify(facilityOptions));\n const facilityChanged = newFacilityOptions.find(({ id }) => id === facility.id);\n facilityChanged.isSelected = (e.target.checked);\n setFacilityOptions(newFacilityOptions);\n setDirty(true);\n }}\n disabled={isLoading}\n />}\n label={facility.name}\n />\n ))\n }\n
\n }\n \n );\n}\n\nUserForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport EditButton from '../components/EditButton';\nimport Form from './UserForm';\n\nexport default function UserFormEditButton({ ...props }) {\n if (props.mode === 'add') {\n return null;\n }\n return (\n );\n}\n\nUserFormEditButton.propTypes = {\n mode: PropTypes.string,\n};\n","import { Auth, API } from 'aws-amplify';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nconst LIMIT = 60;\nconst apiName = 'AdminQueries';\n\nconst getHeaders = async () => {\n const token = (await Auth.currentSession()).getAccessToken().getJwtToken();\n return {\n 'Content-Type': 'application/json',\n 'Authorization': token,\n };\n};\n\nconst normalizeCognitoUserData = (inCognitoUser) => {\n const { Username, UserStatus, Enabled, UserCreateDate, UserLastModifiedDate, Attributes } = inCognitoUser;\n\n const user = {\n username: Username,\n status: UserStatus,\n enabled: Enabled,\n createdAt: moment(UserCreateDate).tz(TIME_ZONE).format('YYYY-MM-DD'),\n updatedAt: moment(UserLastModifiedDate).tz(TIME_ZONE).format('YYYY-MM-DD'),\n };\n\n Attributes.forEach(({ Name, Value }) => {\n user[Name] = Value;\n });\n\n return user;\n};\n\nexport async function listUsers(listAll = false, limit = LIMIT, inNextToken, inResults = []) {\n const path = '/listUsers';\n const params = {\n queryStringParameters: {\n limit,\n token: inNextToken,\n },\n headers: await getHeaders(),\n };\n const { NextToken: nextToken, ...rest } = await API.get(apiName, path, params);\n const { Users: users } = rest;\n\n const results = users.map(normalizeCognitoUserData);\n\n if (listAll && nextToken) {\n return listUsers(listAll, limit, nextToken, results);\n }\n\n return {\n nextToken,\n data: [...inResults, ...results],\n };\n}\n\nexport async function listUsersInGroup(groupname, listAll = false, limit = LIMIT, inNextToken, inResults = []) {\n const path = '/listUsersInGroup';\n const params = {\n queryStringParameters: {\n groupname,\n limit,\n token: inNextToken,\n },\n headers: await getHeaders(),\n };\n const { NextToken: nextToken, Users: users } = await API.get(apiName, path, params);\n\n const results = users.map(normalizeCognitoUserData);\n\n if (listAll && nextToken) {\n return listUsersInGroup(groupname, listAll, limit, nextToken, results);\n }\n\n return {\n nextToken,\n data: [...inResults, ...results],\n };\n}\n\nexport async function getUserGroup(username) {\n const path = '/listGroupsForUser';\n const params = {\n queryStringParameters: {\n username,\n },\n headers: await getHeaders(),\n };\n const { Groups } = await API.get(apiName, path, params);\n return Groups\n .map(({ GroupName }) => GroupName);\n}\n\nexport async function updateUserAttributes(username, attributes = {}) {\n const path = '/updateUserAttributes';\n const params = {\n body: {\n username,\n attributes,\n },\n headers: await getHeaders(),\n };\n return API.post(apiName, path, params);\n}\n\nexport async function addUserToGroup(username, groupname) {\n const path = '/addUserToGroup';\n const params = {\n body: {\n username,\n groupname,\n },\n headers: await getHeaders(),\n };\n return API.post(apiName, path, params);\n}\n\nexport async function removeUserFromGroup(username, groupname) {\n const path = '/removeUserFromGroup';\n const params = {\n body: {\n username,\n groupname,\n },\n headers: await getHeaders(),\n };\n return API.post(apiName, path, params);\n}\n\nexport async function disableUser(username) {\n const path = '/disableUser';\n const params = {\n body: {\n username,\n },\n headers: await getHeaders(),\n };\n return API.post(apiName, path, params);\n}\n\nexport async function enableUser(username) {\n const path = '/enableUser';\n const params = {\n body: {\n username,\n },\n headers: await getHeaders(),\n };\n return API.post(apiName, path, params);\n}\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\n\nimport Table from 'components/Table/Table';\n\nimport {\n listUsersInGroup,\n removeUserFromGroup,\n addUserToGroup,\n disableUser,\n enableUser,\n} from 'utilities/cognito';\nimport { sortBy } from 'utilities/sorting';\nimport { cognitoGroups } from '@silvergatedelivery/constants';\n// import { userOperation } from 'graphql/mutations';\n// import { request } from 'utilities/graph';\n\nconst title = '軟體用戶列表';\nconst description = '';\n\nexport default function UserTable() {\n const { t } = useTranslation();\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n const [selectedCognitoGroupIndex, setSelectedCognitoGroupIndex] = useState(0);\n const options = {};\n\n const columns = [\n {\n name: 'enabled',\n label: '登入權限',\n type: 'checkbox',\n edit: {\n type: 'checkbox',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'group:Admins',\n label: '管理員',\n type: 'checkbox',\n edit: {\n type: 'checkbox',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'group:OrgAdmins',\n label: '組織負責人',\n type: 'checkbox',\n edit: {\n type: 'checkbox',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'group:FacilityAdmins',\n label: '機構管理員',\n type: 'checkbox',\n edit: {\n type: 'checkbox',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'group:DeliveryStaffs',\n label: t('送餐大使'),\n type: 'checkbox',\n edit: {\n type: 'checkbox',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'group:RestaurantOwners',\n label: `${t('餐廳')}負責人`,\n type: 'checkbox',\n edit: {\n type: 'checkbox',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'group:Clients',\n label: '客戶',\n type: 'checkbox',\n edit: {\n type: 'checkbox',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'username',\n label: 'ID',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'name',\n label: '名字',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'email_verified',\n label: 'Email認證',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n ];\n\n const onUpate = async (item, dataIndex) => {\n const input = {};\n columns.forEach(({ name, edit }) => {\n if (edit) {\n input[name] = item[name];\n }\n });\n const {\n enabled: newEnabled,\n } = input;\n const sourceData = data[dataIndex];\n const {\n username,\n enabled,\n } = sourceData;\n\n const updateGroupPromises = cognitoGroups.map(async ({ value }) => {\n const key = `group:${value}`;\n\n if (!input[key] && sourceData[key]) {\n await removeUserFromGroup(username, value);\n } else\n if (input[key] && !sourceData[key]) {\n await addUserToGroup(username, value);\n }\n });\n\n await Promise.all(updateGroupPromises);\n\n // if (cognitoGroup !== newCognitoGroup || facilityId !== newOrgId) {\n // // await removeUserFromGroup(username, role);\n // // await addUserToGroup(username, input.role);\n // const user = {\n // username,\n // facilityId: newOrgId,\n // name,\n // email,\n // role: newCognitoGroup,\n // idNumber: 'N/A',\n // };\n\n // await request(userOperation, {\n // input: {\n // force: true,\n // users: [user],\n // },\n // });\n // }\n\n if (enabled !== newEnabled) {\n if (newEnabled === true) {\n await enableUser(username);\n } else {\n await disableUser(username);\n }\n }\n\n setLastUpdatedAt(Date.now());\n };\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n const groups = [cognitoGroups[selectedCognitoGroupIndex]].map(({ value }) => value);\n const results = await Promise.all(groups.map((group) => listUsersInGroup(group, true)));\n\n const allUsers = [];\n results.forEach(({ data: groupUsers }, index) => {\n const groupName = groups[index];\n groupUsers.forEach((user) => {\n const matched = allUsers.find(({ username }) => username === user.username);\n if (matched) {\n matched[`group:${groupName}`] = true;\n } else {\n user[`group:${groupName}`] = true;\n allUsers.push(user);\n }\n });\n });\n\n setData(allUsers\n .sort(sortBy('name'))\n .sort(sortBy('username')),\n );\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [lastUpdatedAt, selectedCognitoGroupIndex]);\n\n return (\n \n \n {\n setSelectedCognitoGroupIndex(e.target.value);\n }}\n >\n {cognitoGroups.map((item, index) => {\n return ({t(item.label)});\n })}\n \n \n setLastUpdatedAt(Date.now())}\n />\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport CognitoUsersTable from 'components/CognitoUsersTable';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n flex: 1,\n padding: theme.spacing(2),\n },\n}));\n\nexport default function AppUsers() {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n","import {\n formatAddress,\n formatGender,\n formatBirthday,\n getDisadvantagedType,\n} from 'utilities/format';\n\nexport const getFormFieldsValueMapping = (elder) => {\n if (!elder) return [];\n return [\n {\n fieldName: 'elderName',\n value: elder.name,\n },\n {\n fieldName: 'elderIdentificationCardId',\n value: elder.identificationCardId,\n },\n {\n fieldName: 'elderBirthday',\n value: formatBirthday(elder.birthday),\n },\n {\n fieldName: 'elderGender',\n value: formatGender(elder.gender),\n },\n {\n fieldName: 'elderPhoneNumber',\n value: elder.phoneNumber || '',\n },\n {\n fieldName: 'elderAddress',\n value: formatAddress(elder.address) || '',\n },\n {\n fieldName: 'elderEmergencyContactName',\n value: elder.emergencyContact?.name || '',\n },\n {\n fieldName: 'elderEmergencyContactRelationship',\n value: elder.emergencyContact?.relationship || '',\n },\n {\n fieldName: 'elderEmergencyContactPhoneNumber',\n value: elder.emergencyContact?.phoneNumber || '',\n },\n {\n fieldName: 'elderDisadvantagedType',\n value: getDisadvantagedType(elder.disadvantagedTypesHistory) || '',\n },\n ];\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Storage } from 'aws-amplify';\nimport Button from '@material-ui/core/Button';\nimport { Document, Page } from 'react-pdf';\nimport { PDFDocument } from 'pdf-lib';\nimport fontkit from 'pdf-fontkit'; // https://github.com/Hopding/pdf-lib/issues/494#issuecomment-695818400\nimport { getFormFieldsValueMapping } from './utils';\n\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport 'react-pdf/dist/esm/Page/AnnotationLayer.css';\nimport { toastr } from 'react-redux-toastr';\n\nexport default function InteractivePdfViewer({ fileS3Key, onSaveForm, elder }) {\n const [fileUrl, setFileUrl] = useState();\n const [annotations, setAnnotations] = useState({});\n const [pageDimensions, setPageDimensions] = useState({});\n const [numPages, setNumPages] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n const renderPdf = async () => {\n if (!fileS3Key) return;\n\n const url = await Storage.get(fileS3Key);\n setFileUrl(url);\n };\n\n renderPdf();\n }, [fileS3Key]);\n\n const onDocumentLoadSuccess = ({ numPages }) => {\n setNumPages(numPages);\n };\n\n const onPageLoadSuccess = (pageNumber, { width, height }) => {\n setPageDimensions((prev) => ({\n ...prev,\n [pageNumber]: { width, height },\n }));\n };\n\n const onGetAnnotationsSuccess = (pageNumber, annotationsOnPage) => {\n const filteredAnnotations = annotationsOnPage.filter(\n (annotation) => annotation.fieldType === 'Btn' || annotation.fieldType === 'Tx',\n );\n const formFieldsValueMapping = getFormFieldsValueMapping(elder);\n\n const initializedAnnotations = filteredAnnotations.map((annotation) => {\n if (annotation.fieldType === 'Tx') {\n let value = annotation.fieldValue || '';\n if (elder) {\n const mapping = formFieldsValueMapping.find(({ fieldName }) => fieldName === annotation.fieldName);\n if (mapping) {\n value = mapping.value;\n }\n }\n return {\n ...annotation,\n value,\n };\n } else {\n return {\n ...annotation,\n value: annotation.fieldValue !== 'Off',\n };\n }\n });\n setAnnotations((prevAnnotations) => ({\n ...prevAnnotations,\n [pageNumber]: initializedAnnotations,\n }));\n };\n\n const handleCheckboxChange = (pageNumber, id) => {\n setAnnotations((prev) => ({\n ...prev,\n [pageNumber]: prev[pageNumber].map((annotation) =>\n annotation.id === id ? { ...annotation, value: !annotation.value } : annotation,\n ),\n }));\n };\n\n const handleTextChange = (pageNumber, id, newValue) => {\n setAnnotations((prev) => ({\n ...prev,\n [pageNumber]: prev[pageNumber].map((annotation) =>\n annotation.id === id ? { ...annotation, value: newValue } : annotation,\n ),\n }));\n };\n\n const saveForm = async () => {\n setIsLoading(true);\n const existingPdfBytes = await fetch(fileUrl).then((res) => res.arrayBuffer());\n const pdfDoc = await PDFDocument.load(existingPdfBytes);\n const form = pdfDoc.getForm();\n\n let fontBytes;\n try {\n const response = await fetch('/fonts/NotoSansTC-Regular.ttf');\n if (!response.ok) {\n throw new Error(`Failed to fetch font: ${response.status} ${response.statusText}`);\n }\n fontBytes = await response.arrayBuffer();\n } catch (e) {\n console.log(e);\n toastr.error('檔案儲存失敗,請檢查網路連線後再重新嘗試');\n setIsLoading(false);\n return;\n }\n pdfDoc.registerFontkit(fontkit);\n const font = await pdfDoc.embedFont(fontBytes, { subset: true });\n\n // https://github.com/Hopding/pdf-lib/issues/1152 workaround: WinAnsi cannot encode....\n const rawUpdateFieldAppearances = form.updateFieldAppearances.bind(form);\n form.updateFieldAppearances = function() {\n return rawUpdateFieldAppearances(font);\n };\n\n Object.keys(annotations).forEach((key) => annotations[key].forEach((annotation) => {\n if (annotation.fieldType === 'Btn') {\n const field = form.getCheckBox(annotation.fieldName);\n if (annotation.value) {\n field.check();\n } else {\n field.uncheck();\n }\n } else if (annotation.fieldType === 'Tx') {\n const field = form.getTextField(annotation.fieldName);\n if (field) {\n field.setText(annotation.value || '');\n }\n }\n }));\n\n const pdfBytes = await pdfDoc.save();\n\n const blob = new Blob([pdfBytes], { type: 'application/pdf' });\n onSaveForm && await onSaveForm(blob);\n setIsLoading(false);\n };\n\n if (!fileUrl) {\n return <>;\n }\n\n return (\n
\n
\n \n {numPages &&\n Array.from({ length: numPages }, (_, index) => {\n const pageNumber = index + 1;\n const pageDimension = pageDimensions[pageNumber];\n return (\n
\n onPageLoadSuccess(pageNumber, page)}\n onGetAnnotationsSuccess={(annotationsOnPage) =>\n onGetAnnotationsSuccess(pageNumber, annotationsOnPage)\n }\n />\n {pageDimension && annotations[pageNumber]?.map((annotation) => {\n const height = annotation.rect[3] - annotation.rect[1];\n return (\n \n {annotation.fieldType === 'Btn' ? (\n // Checkbox\n handleCheckboxChange(pageNumber, annotation.id)}\n style={{ width: '100%' }}\n />\n ) : annotation.fieldType === 'Tx' ? (\n // Text input\n handleTextChange(pageNumber, annotation.id, e.target.value)}\n style={{\n width: '100%',\n height: '100%',\n fontSize: height < 14 ? '8px' : (height < 16 ? '10px' : '12px'),\n padding: '2px',\n }}\n />\n ) : null}\n
);\n })}\n
\n );\n })}\n \n
\n \n 送出\n \n
\n );\n}\n\nInteractivePdfViewer.propTypes = {\n fileS3Key: PropTypes.string,\n onSaveForm: PropTypes.func,\n elder: PropTypes.object,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { pdfjs } from 'react-pdf';\nimport Button from '@material-ui/core/Button';\nimport { Storage } from 'aws-amplify';\n\nexport default function PdfViewer({ fileS3Key }) {\n const [pdf, setPdf] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n const renderPDF = async () => {\n if (!fileS3Key) return;\n\n const url = await Storage.get(fileS3Key);\n\n const loadingTask = pdfjs.getDocument(url);\n const pdf = await loadingTask.promise;\n setPdf(pdf);\n };\n\n renderPDF();\n }, [fileS3Key]);\n\n const renderPage = async (pageNumber, canvas) => {\n if (!pdf) return;\n const page = await pdf.getPage(pageNumber);\n const viewport = page.getViewport({ scale: 1 });\n const context = canvas.getContext('2d');\n\n canvas.width = viewport.width;\n canvas.height = viewport.height;\n\n const renderContext = {\n canvasContext: context,\n viewport,\n };\n await page.render(renderContext).promise;\n };\n\n const printForm = async () => {\n setIsLoading(true);\n const url = await Storage.get(fileS3Key);\n const pdfBytes = await fetch(url).then((res) => res.arrayBuffer());\n\n const blob = new Blob([pdfBytes], { type: 'application/pdf' });\n const blobUrl = URL.createObjectURL(blob);\n\n const printWindow = window.open(blobUrl);\n printWindow.onload = function() {\n printWindow.focus();\n printWindow.print();\n };\n\n // const iframe = document.createElement('iframe');\n // iframe.style.position = 'absolute';\n // iframe.style.width = '0';\n // iframe.style.height = '0';\n // iframe.style.border = 'none';\n // iframe.src = blobUrl;\n\n // document.body.appendChild(iframe);\n\n // iframe.onload = () => {\n // iframe.contentWindow.focus();\n // iframe.contentWindow.print();\n // };\n\n setIsLoading(false);\n };\n\n return (\n
\n {pdf && Array.from({ length: pdf.numPages }, (_, i) => (\n
\n {\n if (canvas) renderPage(i + 1, canvas);\n }}\n style={{ border: '1px solid black' }}\n />\n
\n ))}\n \n 列印\n \n
\n );\n}\n\nPdfViewer.propTypes = {\n fileS3Key: PropTypes.string,\n};\n","// import streamSaver from 'streamsaver';\nimport { saveAs } from 'file-saver';\n\nexport const download = (filename, blob) => {\n // // const uInt8 = new TextEncoder().encode('StreamSaver is awesome');\n // const fileStream = streamSaver.createWriteStream(filename, {});\n // const writer = fileStream.getWriter();\n // writer.write(content);\n // writer.close();\n saveAs(blob, filename);\n};\n","const uiSchema = {\n};\n\nexport default uiSchema;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useDropzone } from 'react-dropzone';\nimport { Storage } from 'aws-amplify';\nimport IconButton from '@material-ui/core/IconButton';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport { toastr } from 'react-redux-toastr';\n\nexport default function FileUploader({\n s3Prefix,\n s3Key: inS3Key,\n onUpdateS3Key,\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [file, setFile] = useState();\n\n const {\n getRootProps,\n getInputProps,\n } = useDropzone({\n async onDrop(newFiles) {\n global.logger.debug('onDrop', newFiles);\n\n if (newFiles.length !== 1) return;\n setIsLoading(true);\n const file = newFiles[0];\n\n const s3Key = `${s3Prefix}/${file.name}`;\n try {\n await Storage.put(s3Key, file, {\n contentType: file.type,\n });\n setFile({\n s3Key,\n url: URL.createObjectURL(file),\n });\n onUpdateS3Key && onUpdateS3Key(s3Key);\n } catch (e) {\n console.error(e);\n toastr.error('檔案上傳失敗');\n }\n setIsLoading(false);\n },\n maxFiles: 1,\n maxSize: 10 * 1024 * 1024,\n accept: 'application/pdf',\n });\n\n const onRemoveFile = async (s3Key) => {\n setIsLoading(true);\n await Storage.remove(s3Key);\n setFile();\n onUpdateS3Key && onUpdateS3Key();\n setIsLoading(false);\n };\n\n useEffect(() => {\n (async () => {\n if (inS3Key) {\n const file = {\n s3Key: inS3Key,\n url: await Storage.get(inS3Key),\n };\n setFile(file);\n }\n })();\n }, [inS3Key]);\n\n const fileName = file?.s3Key?.split('/').pop();\n\n return (\n \n {!file &&\n \n
\n
\n \n {isLoading &&

}\n {!isLoading &&

點此或拖曳上傳檔案(10MB以內)

}\n
\n
\n
}\n {fileName &&\n \n {fileName}\n onRemoveFile(file.s3Key)}\n disabled={isLoading}\n >\n \n \n }\n
\n );\n}\n\nFileUploader.propTypes = {\n s3Prefix: PropTypes.string,\n s3Key: PropTypes.string,\n onUpdateS3Key: PropTypes.func,\n};\n","import React, { useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport {\n createElderForm,\n} from 'graphql/mutations';\nimport uiSchema from './uiSchema';\nimport FileUploader from 'views/FacilityAdmin/components/Forms/FileUploader';\nimport cache from 'utilities/cache';\nimport { toastr } from 'react-redux-toastr';\nimport moment from 'moment-timezone';\n\nexport default function ElderFormUploader({ formData: inFormData, onUpdate, elderId, ...props }) {\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n const [currentFileS3Key, setCurrentFileS3Key] = useState();\n const [newFileS3Key, setNewFileS3Key] = useState();\n\n const createFunc = async (newData) => {\n console.log(newData);\n console.log(newFileS3Key);\n if (!newFileS3Key) {\n toastr.error('請選擇要上傳的檔案');\n throw new Error('abort');\n }\n const now = moment().toISOString();\n const username = cache.get('app:username');\n const input = {\n elderId,\n name: newData.name,\n fileS3Key: newFileS3Key,\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n const { data: { createElderForm: data } } = await request(createElderForm, { input });\n onUpdate && onUpdate(data);\n };\n\n const updateFunc = async (data) => {\n };\n\n useEffect(() => {\n if (inFormData && inFormData.id) {\n setCurrentFileS3Key(inFormData.fileS3Key);\n setNewFileS3Key(inFormData.fileS3Key);\n }\n }, [inFormData]);\n\n const now = moment().toISOString();\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n\nElderFormUploader.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onUpdate: PropTypes.func,\n elderId: PropTypes.string,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport AddIcon from '@material-ui/icons/Add';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTheme } from '@material-ui/core/styles';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormDialog from 'components/FormDialog';\nimport InteractivePdfViewer from 'views/FacilityAdmin/components/Forms/InteractivePdfViewer';\nimport PdfViewer from 'views/FacilityAdmin/components/Forms/PdfViewer';\nimport { request } from 'utilities/graph';\nimport { createElderForm, updateElderForm, deleteElderForm } from 'graphql/mutations';\nimport moment from 'moment-timezone';\nimport { download } from 'utilities/file';\nimport { Storage } from 'aws-amplify';\nimport { toastr } from 'react-redux-toastr';\nimport ElderFormUploader from './ElderFormUploader';\n\nimport cache from 'utilities/cache';\n\nexport default function ElderFormFormEditButton({\n mode = 'edit',\n item,\n forms,\n onUpdate,\n elder,\n}) {\n const [anchorEl, setAnchorEl] = useState(null);\n const [openEdit, setOpenEdit] = useState(false);\n const [openPreview, setOpenPreview] = useState(false);\n const [openUpload, setOpenUpload] = useState(false);\n const [editItem, setEditItem] = useState({});\n\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\n\n const handleButtonClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handelFormUpload = () => {\n setOpenUpload(true);\n };\n\n const handleMenuClick = (id, fileS3Key, name) => () => {\n setEditItem({ form: { id, fileS3Key, name } });\n setOpenEdit(true);\n setAnchorEl(null);\n };\n\n const handleFormUpdate = () => {\n setEditItem(item);\n setOpenEdit(true);\n };\n\n const onSaveForm = async (blob) => {\n const now = moment().toISOString();\n if (editItem.id) {\n await Storage.put(editItem.fileS3Key, blob, {\n contentType: blob.type,\n });\n\n const username = cache.get('app:username');\n const input = {\n id: editItem.id,\n updatedAt: now,\n updatedBy: username,\n };\n const { data: { updateElderForm: data } } = await request(updateElderForm, { input });\n onUpdate && onUpdate(data);\n } else {\n const s3Key = `elders/${elder.id}/${now}/${editItem.name}`;\n await Storage.put(s3Key, blob, {\n contentType: blob.type,\n });\n\n const username = cache.get('app:username');\n const input = {\n elderId: elder.id,\n formId: editItem.form.id,\n name: editItem.form.name,\n fileS3Key: s3Key,\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n const { data: { createElderForm: data } } = await request(createElderForm, { input });\n onUpdate && onUpdate(data);\n }\n setEditItem({});\n setOpenEdit(false);\n };\n\n const openFilePreview = () => {\n setOpenPreview(true);\n };\n\n const fileDownload = async (fileS3Key, name) => {\n try {\n const url = await Storage.get(fileS3Key);\n const fileResponse = await fetch(url);\n if (!fileResponse.ok) {\n throw new Error('下載檔案失敗');\n }\n const blob = await fileResponse.blob();\n download(`${elder.name}-${name}.pdf`, blob);\n } catch (e) {\n console.error(e.message);\n toastr.error(e.message);\n }\n };\n\n const handleDeleteForm = async () => {\n if (window.confirm('您確定要刪除此表單嗎?')) {\n try {\n await Storage.remove(item.fileS3Key);\n await request(deleteElderForm, { input: { id: item.id } });\n onUpdate && onUpdate(); // force refresh\n } catch (e) {\n console.error(e.message);\n toastr.error(e.message);\n }\n }\n };\n\n return (\n \n {mode === 'edit' ?\n <>\n \n {\n await fileDownload(item.fileS3Key, item.name);\n }}\n >\n {}\n \n \n \n {\n openFilePreview();\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n :\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n {\n setAnchorEl(null);\n }}\n >\n {forms.map(({ id, name, fileS3Key }) => (\n {name}\n ))}\n \n {openPreview &&\n {\n setOpenPreview(false);\n }}\n fullScreen={fullScreen}\n >\n \n }\n {openEdit &&\n {\n setEditItem({});\n setOpenEdit(false);\n }}\n fullScreen={fullScreen}\n exitConfirm\n >\n \n }\n {openUpload &&\n {\n setOpenUpload(false);\n }}\n fullScreen={fullScreen}\n exitConfirm\n >\n {\n onUpdate && onUpdate(data);\n setOpenUpload(false);\n }}\n elderId={elder.id}\n />\n }\n \n );\n}\n\nElderFormFormEditButton.propTypes = {\n mode: PropTypes.string,\n item: PropTypes.object,\n forms: PropTypes.array,\n onUpdate: PropTypes.func,\n elder: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DataTable from 'components/Table/DataTable';\nimport { getElderFormsByElderByCreatedAt, getFormsByClientByStatus } from 'graphql/queries';\nimport { asyncListAll } from 'utilities/graph';\nimport ElderFormFormEditButton from 'forms/ElderFormForm/ElderFormFormEditButton';\nimport cache from 'utilities/cache';\n\nexport default function ElderFormTable({\n title = '送餐對象表單',\n elder,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [forms, setForms] = useState([]);\n\n const clientId = cache.get('app:facilityId') || elder.clientId;\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '表單名稱',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'fileS3Key',\n label: 'fileS3Key',\n options: {\n display: 'excluded',\n filter: false,\n sort: false,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n const forms = await asyncListAll(getFormsByClientByStatus, {\n clientId: clientId,\n status: { eq: '使用中' },\n });\n setForms(forms);\n })();\n\n setIndexes([\n {\n name: 'getElderFormsByElderByCreatedAt',\n label: '按長輩查詢',\n partitionKey: 'elderId',\n sortKey: 'createdAt',\n fields: [{\n label: '長輩',\n key: 'elderId',\n type: 'select',\n options: [{ value: elder.id, label: elder.name }],\n disabled: true,\n }],\n operation: getElderFormsByElderByCreatedAt,\n },\n ]);\n setQueryParams({\n elderId: elder.id,\n });\n }, []);\n\n const editButton = (props) => {\n return ;\n };\n\n if (!indexes || !queryParams) return null;\n\n return (\n \n \n );\n}\n\nElderFormTable.propTypes = {\n title: PropTypes.string,\n elder: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\n\nimport CustomTimeline from 'components/CustomTimeline';\n\nexport default function IssueTimeline({ issue, comments = [] }) {\n if (!issue) return null;\n\n const render = (item, index) => {\n if (index === 0) {\n return (\n \n {issue.description}\n \n \n {issue.reportedBy}\n \n );\n } else {\n return (\n \n {item.content}\n \n \n {item.username}\n \n );\n }\n };\n\n return (\n \n );\n}\n\nIssueTimeline.propTypes = {\n issue: PropTypes.object,\n comments: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport { asyncListAll } from 'utilities/graph';\nimport {\n getIssueCommentsByIssueByCreatedAt,\n} from 'graphql/queries';\n\nimport IssueTimeline from './IssueTimeline';\nimport { issueStatus as allIssueStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n actionContainer: {\n width: 400,\n },\n timeline: {\n flex: 1,\n },\n}));\n\nexport default function Issue({ issue, onUpdateComment, onUpdateIssueStatus, timelineOnly=false }) {\n const classes = useStyles();\n const [comments, setComments] = useState([]);\n const [commentText, setCommentText] = useState('');\n const [issueStatus, setIssueStatus] = useState(issue.status);\n\n useEffect(() => {\n if (!issue || !issue.id) return;\n if (issue.comments?.items?.length > 0) {\n setComments(issue.comments.items);\n return;\n }\n (async () => {\n const data = await asyncListAll(getIssueCommentsByIssueByCreatedAt, { issueId: issue.id });\n setComments(data);\n })();\n }, [issue]);\n\n if (!issue) return null;\n\n return (\n \n \n
\n \n
\n {!timelineOnly && \n \n \n 狀態\n {\n setIssueStatus(event.target.value);\n onUpdateIssueStatus(event.target.value);\n }}\n >\n {allIssueStatus.map(({ label, value }) => (\n \n {label}\n \n ))}\n \n \n \n {\n setCommentText(event.target.value);\n onUpdateComment(event.target.value);\n }}\n style={{ marginBottom: 16 }}\n />\n }\n
\n
\n );\n}\n\nIssue.propTypes = {\n issue: PropTypes.object,\n onUpdateComment: PropTypes.func,\n onUpdateIssueStatus: PropTypes.func,\n timelineOnly: PropTypes.bool,\n};\n","import React, { useState, Fragment, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport AddIcon from '@material-ui/icons/Add';\nimport EditIcon from '@material-ui/icons/Edit';\nimport Grid from '@material-ui/core/Grid';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { request } from 'utilities/graph';\nimport Issue from 'views/Admin/DeliveryDiary/Issue';\nimport {\n createIssue,\n createIssueComment,\n updateIssue,\n} from 'graphql/mutations';\nimport { getIssue } from 'graphql/queries';\nimport cache from 'utilities/cache';\nimport { issueStatus as allIssueStatus } from '@silvergatedelivery/constants';\n\nexport default function SocialWorkerDiaryEditButton({\n mode = 'edit',\n elders,\n defaultElder,\n item: inIssue,\n onUpdate,\n disabled = false,\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [issue, setIssue] = useState(inIssue);\n const [issueDescription, setIssueDescription] = useState('');\n const [commentText, setCommentText] = useState('');\n const [issueStatus, setIssueStatus] = useState(allIssueStatus[0].value);\n const [elder, setElder] = useState(defaultElder);\n\n useEffect(() => {\n if (!inIssue) return;\n\n if (inIssue.elderId) {\n const elder = elders.find((e) => e.id === inIssue.elderId);\n setElder(elder);\n }\n\n setIssue(inIssue);\n setIssueStatus(inIssue.status);\n }, [inIssue, elders]);\n\n const handleCreateIssue = async () => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const userName = cache.get('app:userName');\n if (!elder) {\n return;\n }\n\n const issueInput = {\n priority: 1,\n status: issueStatus,\n reportedBy: userName,\n county: elder.county,\n orderId: undefined,\n elderId: elder.id,\n clientId: elder.clientId,\n deliveryStaffId: undefined,\n deliveryStaffOrderId: undefined,\n type: '社工日誌',\n summary: '社工日誌',\n createdBy: username,\n updatedBy: username,\n expirationUnixTime: Math.round(Date.now() / 1000) + 365 * 86400 * 3, // TODO: 存三年?\n description: issueDescription,\n };\n\n const { data: { createIssue: updatedIssue } } = await request(createIssue, { input: issueInput });\n\n onUpdate(updatedIssue);\n\n setIsLoading(false);\n handleClose();\n };\n\n const handleUpdateIssue = async () => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const userName = cache.get('app:userName');\n const now = new Date().toISOString();\n\n let content = commentText || '';\n if (issueStatus !== issue.status) {\n const oldstatus = allIssueStatus.find((item)=>item.value === issue.status);\n const newStatus = allIssueStatus.find((item)=>item.value === issueStatus);\n if (content) {\n content = `${content} (狀態:${oldstatus.label} => ${newStatus.label})`;\n } else {\n content = `狀態:${oldstatus.label} => ${newStatus.label}`;\n }\n }\n if (content) {\n const comment = {\n issueId: issue.id,\n username: userName,\n content,\n expirationUnixTime: Math.round(Date.now() / 1000) + 365 * 86400 * 3, // TODO: 存三年?\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n\n await request(createIssueComment, { input: comment });\n }\n if (issueStatus !== issue.status) {\n const now = new Date().toISOString();\n const updatedIssue = {\n id: issue.id,\n status: issueStatus,\n updatedAt: now,\n updatedBy: username,\n };\n await request(updateIssue, { input: updatedIssue });\n }\n const { data: { getIssue: updatedIssue } } =await request(getIssue, { id: issue.id });\n onUpdate(updatedIssue);\n setIsLoading(false);\n handleClose();\n };\n\n const handleClose = () => {\n setCommentText('');\n setIssueDescription('');\n setIssueStatus(allIssueStatus[0].value);\n setOpen(false);\n };\n\n const tooltipTitle = () => issue ? '編輯社工日誌' : '新增社工日誌';\n return (\n \n \n setOpen(true)}\n disabled={disabled}\n >\n {mode === 'edit' ? : }\n \n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n 社工日誌\n \n \n {issue ?\n \n \n setCommentText(commentText)}\n onUpdateIssueStatus={(issueStatus) => setIssueStatus(issueStatus)}\n />\n \n :\n \n {!defaultElder &&\n \n \n {\n if (typeof newValue === 'string') {\n const existingElder = elders.find(({ name }) => name === newValue);\n setElder(existingElder);\n } else {\n setElder(newValue);\n }\n }}\n selectOnFocus\n clearOnBlur\n options={elders?.sort((a, b) => a.name.localeCompare(b.name)) || []}\n getOptionLabel={(option) => {\n if (typeof option === 'string') {\n return option;\n }\n return option.name;\n }}\n renderOption={(elder) => elder.name}\n freeSolo\n renderInput={(params) => }\n />\n \n \n }\n \n \n 狀態\n setIssueStatus(event.target.value)}\n >\n {allIssueStatus.map(({ label, value }) => (\n \n {label}\n \n ))}\n \n \n \n \n setIssueDescription(e.target.value) }\n style={{ width: 360 }}\n />\n \n \n }\n \n \n \n {issue ?\n :\n \n }\n \n \n \n );\n}\n\nSocialWorkerDiaryEditButton.propTypes = {\n defaultElder: PropTypes.object,\n elders: PropTypes.array,\n item: PropTypes.object,\n buttonSize: PropTypes.string,\n onUpdate: PropTypes.func,\n disabled: PropTypes.bool,\n mode: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DataTable from 'components/Table/DataTable';\nimport Chip from '@material-ui/core/Chip';\nimport { getIssuesByElderByCreatedAt, getIssuesByClientByCreatedAt } from 'graphql/queries';\nimport SocialWorkerDiaryEditButton from 'forms/SocialWorkerDiaryForm/SocialWorkerDiaryEditButton';\nimport moment from 'moment-timezone';\nimport { issueStatus, TIME_ZONE } from '@silvergatedelivery/constants';\nimport { formatComments } from 'utilities/format';\nimport cache from 'utilities/cache';\nimport { getEldersByClientByStatus } from 'graphql/queries';\nimport { asyncListAll } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\n\nconst lastMonth = moment().tz(TIME_ZONE).add(-30, 'days').format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function SocialWorkerDiaryTable({\n title = '社工日誌',\n elder,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [elders, setElders] = useState([]);\n const clientName = cache.get('app:name');\n const clientId = cache.get('app:facilityId');\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elderId',\n label: '送餐對象',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender: (value) => {\n if (elders?.length) {\n return elders?.find((e) => e.id === value)?.name || value;\n }\n return value;\n },\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n display: true,\n filter: true,\n sort: true,\n customBodyRender: (value) => {\n const matchedStatus = issueStatus.find((item)=>item.value === value);\n const label = matchedStatus ? matchedStatus.label : value;\n const backgroundColor = matchedStatus ? matchedStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n },\n filterOptions: {\n renderValue: (v) => (issueStatus.find(({ value }) => value === v) || {}).label,\n },\n customFilterListOptions: {\n render: (v) => (issueStatus.find(({ value }) => value === v) || {}).label,\n },\n },\n },\n {\n name: 'type',\n label: '類別',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '追蹤事項',\n options: {\n display: true,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'comments',\n label: '處理筆記',\n options: {\n display: false,\n filter: false,\n sort: false,\n customBodyRender: formatComments,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n ];\n\n useEffect(() => {\n if (elder) {\n setIndexes([\n {\n name: 'getIssuesByElderByCreatedAt',\n label: '按長輩查詢',\n partitionKey: 'elderId',\n sortKey: 'createdAt',\n fields: [{\n label: '長輩',\n key: 'elderId',\n type: 'select',\n options: [{ value: elder?.id, label: elder?.name }],\n disabled: true,\n }, {\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getIssuesByElderByCreatedAt,\n },\n ]);\n setQueryParams({\n elderId: elder.id,\n createdAt: {\n from: lastMonth,\n to: todayDate,\n },\n });\n setElders([elder]);\n } else if (clientId) {\n (async () => {\n const existingElders = await asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n });\n setElders(existingElders);\n })();\n setIndexes([\n {\n name: 'getIssuesByClientByCreatedAt',\n label: '按創建時間查詢',\n partitionKey: 'clientId',\n sortKey: 'createdAt',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n }, {\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getIssuesByClientByCreatedAt,\n },\n ]);\n setQueryParams({\n clientId,\n createdAt: {\n from: lastMonth,\n to: todayDate,\n },\n });\n }\n }, [elder]);\n\n const editButton = (props) => {\n return ;\n };\n\n const customDownloadData = (columns, data) => {\n const statusIndex = columns.findIndex(({ name }) => name === 'status');\n const commentIndex = columns.findIndex(({ name }) => name === 'comments');\n return data.map((value) => {\n if (statusIndex !== -1 && value?.data[statusIndex]) {\n const matchedStatus = issueStatus.find((item)=>item.value === value.data[statusIndex]);\n value.data[statusIndex] = matchedStatus ? matchedStatus.label : '';\n }\n if (commentIndex !== -1 && value?.data[commentIndex]) {\n value.data[commentIndex] = value.data[commentIndex].items.sort(sortBy('createdAt')).map(\n (c) => `${c.username}(${moment(c.createdAt).format('YYYY-MM-DD HH:mm')}): ${c.content}`,\n ).join('\\n');\n }\n return value;\n });\n };\n\n if (!indexes || !queryParams) return null;\n\n return (\n \n \n );\n}\n\nSocialWorkerDiaryTable.propTypes = {\n title: PropTypes.string,\n elder: PropTypes.object,\n};\n","const deliveryStaffOrderItems = /* GraphQL */ `\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n hasIssue\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n name\n }\n elderDementiaSurvey {\n items {\n id\n questionId\n response\n date\n dementiaQuestionnaire {\n items {\n id\n category\n type\n question\n }\n nextToken\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n orderId\n createdAt\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n`;\n\nexport const getDeliveryStaffOrdersByStaffByStatus = /* GraphQL */ `\n query GetDeliveryStaffOrdersByStaffByStatus(\n $deliveryStaffId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByStaffByStatus(\n deliveryStaffId: $deliveryStaffId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${deliveryStaffOrderItems}\n nextToken\n }\n }\n`;\n\nexport const getDeliveryStaffOrdersByStatusByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByStatusByDate(\n $status: DeliveryStaffOrderStatus\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByStatusByDate(\n status: $status\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPosition {\n accuracy\n altitude\n altitudeAccuracy\n heading\n latitude\n longitude\n speed\n }\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n name\n nickname\n identificationCardId\n birthday\n gender\n phoneNumber\n emergencyContact {\n name\n relationship\n phoneNumber\n phoneNumber2\n }\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n email\n jobOccupation\n bankAccount {\n name\n number\n }\n whyDoYouWantToJoin\n experience\n selfInfroduction\n howDoYouKnowUs\n deliveryArea {\n county\n district\n street\n zipCode\n lat\n lng\n rangeInKilometer\n }\n documents {\n name\n s3Key\n uploadedAt\n note\n }\n interestedCounties\n tier\n totalEarnedSToken\n completedOrderCount\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n\nexport const getDeliveryStaffOrdersByCountyByDeliveryBy = /* GraphQL */ `\n query GetDeliveryStaffOrdersByCountyByDeliveryBy(\n $county: String\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByCountyByDeliveryBy(\n county: $county\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${deliveryStaffOrderItems}\n nextToken\n }\n }\n`;\n\nexport const listDeliveryStaffOrders = /* GraphQL */ `\n query ListDeliveryStaffOrders(\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDeliveryStaffOrders(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${deliveryStaffOrderItems}\n nextToken\n }\n }\n`;\n\nexport const getDeliveryStaffOrdersByElderByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByElderByDate(\n $elderId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByElderByDate(\n elderId: $elderId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${deliveryStaffOrderItems}\n nextToken\n }\n }\n`;\nexport const getDeliveryStaffOrdersByClientByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByClientByDate(\n $clientId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByClientByDate(\n clientId: $clientId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${deliveryStaffOrderItems}\n nextToken\n }\n }\n`;\n","import React, { useState, Fragment, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport EditIcon from '@material-ui/icons/Edit';\nimport Grid from '@material-ui/core/Grid';\nimport { request } from 'utilities/graph';\nimport {\n updateDeliveryStaffOrder,\n} from 'graphql/mutations';\nimport cache from 'utilities/cache';\n\nexport default function DeliveryStaffOrderDiaryCardDialog({\n data: inData,\n buttonStyle = {},\n buttonSize = 'medium',\n onUpdate,\n}) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [data, setData] = useState(inData);\n\n useEffect(() => {\n setData(inData);\n }, [inData]);\n\n const handleSubmit = async () => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const {\n id,\n diary,\n } = data;\n const input = {\n id,\n diary,\n updatedBy: username,\n };\n const { data: { updateDeliveryStaffOrder: result } } = await request(updateDeliveryStaffOrder, { input });\n Object.assign(result, {\n order: inData.order,\n photoS3Keys: inData.photoS3Keys,\n thumbnail: inData.thumbnail,\n } );\n onUpdate(result);\n\n setIsLoading(false);\n handleClose();\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n \n \n setOpen(true)}\n size={buttonSize}\n >\n \n \n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {t('送餐關懷')}\n \n \n \n \n setData({ ...data, diary: e.target.value }) }\n style={{ width: 360 }}\n />\n \n \n \n \n \n \n \n \n \n );\n}\n\nDeliveryStaffOrderDiaryCardDialog.propTypes = {\n data: PropTypes.object,\n buttonStyle: PropTypes.object,\n buttonSize: PropTypes.string,\n onUpdate: PropTypes.func,\n};\n","import React, { useState, Fragment, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport BookmarkBorderIcon from '@material-ui/icons/BookmarkBorder';\nimport BookmarkIcon from '@material-ui/icons/Bookmark';\nimport Grid from '@material-ui/core/Grid';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport { request } from 'utilities/graph';\nimport Issue from './Issue';\nimport {\n createIssue,\n createIssueComment,\n updateIssue,\n updateDeliveryStaffOrder,\n} from 'graphql/mutations';\nimport cache from 'utilities/cache';\nimport { issueStatus as allIssueStatus } from '@silvergatedelivery/constants';\n\nexport default function DeliveryStaffOrderIssueDialog({\n data: inData,\n buttonStyle = {},\n buttonSize = 'medium',\n onUpdate,\n disabled = false,\n}) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [issue, setIssue] = useState(inData.issue.items[0]);\n const [issueDescription, setIssueDescription] = useState('');\n const [commentText, setCommentText] = useState('');\n const [issueStatus, setIssueStatus] = useState(allIssueStatus[0].value);\n\n useEffect(() => {\n setIssue(inData.issue.items[0]);\n if (inData.issue.items[0]) {\n setIssueStatus(inData.issue.items[0].status);\n }\n }, [inData]);\n\n const handleCreateIssue = async () => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const userName = cache.get('app:userName');\n\n const issueInput = {\n priority: 1,\n status: issueStatus,\n reportedBy: userName,\n county: inData.county,\n orderId: inData.orderId,\n elderId: inData.elderId,\n clientId: inData.clientId,\n deliveryStaffId: inData.deliveryStaffId,\n deliveryStaffOrderId: inData.id,\n type: '送餐關懷追蹤',\n summary: '送餐關懷追蹤',\n createdBy: username,\n updatedBy: username,\n expirationUnixTime: Math.round(Date.now() / 1000) + 365 * 86400 * 3, // TODO: 存三年?\n description: issueDescription,\n };\n\n const input = {\n id: inData.id,\n hasIssue: true,\n updatedBy: username,\n };\n\n const [{ data: { createIssue: updatedIssue } }] = await Promise.all([\n request(createIssue, { input: issueInput }),\n request(updateDeliveryStaffOrder, { input }),\n ]);\n\n onUpdate({ ...inData, hasIssue: true, issue: { items: [updatedIssue] } });\n\n setIsLoading(false);\n handleClose();\n };\n\n const handleUpdateIssue = async () => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const userName = cache.get('app:userName');\n const now = new Date().toISOString();\n\n let content = commentText || '';\n if (issueStatus !== issue.status) {\n const oldstatus = allIssueStatus.find((item)=>item.value === issue.status);\n const newStatus = allIssueStatus.find((item)=>item.value === issueStatus);\n if (content) {\n content = `${content} (狀態:${oldstatus.label} => ${newStatus.label})`;\n } else {\n content = `狀態:${oldstatus.label} => ${newStatus.label}`;\n }\n }\n if (content) {\n const comment = {\n issueId: issue.id,\n username: userName,\n content,\n expirationUnixTime: Math.round(Date.now() / 1000) + 365 * 86400 * 3, // TODO: 存三年?\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n\n await request(createIssueComment, { input: comment });\n }\n if (issueStatus !== issue.status) {\n const now = new Date().toISOString();\n const updatedIssue = {\n id: issue.id,\n status: issueStatus,\n updatedAt: now,\n updatedBy: username,\n };\n await request(updateIssue, { input: updatedIssue });\n\n const newIssue = Object.assign(issue, updatedIssue);\n onUpdate({ ...inData, issue: { items: [newIssue] } });\n }\n setIsLoading(false);\n handleClose();\n };\n\n const handleClose = () => {\n setCommentText('');\n setIssueDescription('');\n setIssueStatus(allIssueStatus[0].value);\n setOpen(false);\n };\n\n const issueColor = ({ status }) => (allIssueStatus.find(({ value }) => value === status) || {}).color;\n const tooltipTitle = () => {\n let label;\n if (issue) {\n label = (allIssueStatus.find(({ value }) => value === issue.status) || {}).label;\n }\n return label ? `追蹤(${label})`: '追蹤';\n };\n\n return (\n \n \n setOpen(true)}\n size={buttonSize}\n disabled={disabled}\n >\n { issue ?\n :\n \n }\n \n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {t('送餐關懷')}\n \n \n \n {issue ?\n \n setCommentText(commentText)}\n onUpdateIssueStatus={(issueStatus) => setIssueStatus(issueStatus)}\n />\n :\n <>\n \n \n 狀態\n setIssueStatus(event.target.value)}\n >\n {allIssueStatus.map(({ label, value }) => (\n \n {label}\n \n ))}\n \n \n \n \n setIssueDescription(e.target.value) }\n style={{ width: 360 }}\n />\n \n \n }\n \n \n \n \n {issue ?\n :\n \n }\n \n \n \n );\n}\n\nDeliveryStaffOrderIssueDialog.propTypes = {\n data: PropTypes.object,\n buttonStyle: PropTypes.object,\n buttonSize: PropTypes.string,\n onUpdate: PropTypes.func,\n disabled: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n// import { Storage } from 'aws-amplify';\n// import { v1 as uuidv1 } from 'uuid';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\n// import Tooltip from '@material-ui/core/Tooltip';\n// import CardMedia from '@material-ui/core/CardMedia';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardActions from '@material-ui/core/CardActions';\nimport Collapse from '@material-ui/core/Collapse';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport { red } from '@material-ui/core/colors';\nimport Grid from '@material-ui/core/Grid';\nimport MotorcycleIcon from '@material-ui/icons/Motorcycle';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport FavoriteIcon from '@material-ui/icons/Favorite';\nimport FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder';\n// import ShareIcon from '@material-ui/icons/Share';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n// import MoreVertIcon from '@material-ui/icons/MoreVert';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\n// import { Colors } from '@silvergatedelivery/constants';\nimport PersonPinIcon from '@material-ui/icons/PersonPin';\n// import PersonIcon from '@material-ui/icons/Person';\n// import PublicIcon from '@material-ui/icons/Public';\n// import OpenInBrowserIcon from '@material-ui/icons/OpenInBrowser';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport UserAvatar from 'components/UserAvatar';\nimport LinkButton from 'components/Table/LinkButton';\nimport {\n formatDatetime,\n formatNote,\n formatTime,\n} from 'utilities/format';\nimport { updateDeliveryStaffOrder } from 'graphql/mutations';\nimport { request } from 'utilities/graph';\nimport DeliveryStaffOrderPhoto from 'components/DeliveryStaffOrderPhoto';\nimport DeliveryStaffOrderDiaryCardDialog from './DeliveryStaffOrderDiaryCardDialog';\nimport DeliveryStaffOrderIssueDialog from './DeliveryStaffOrderIssueDialog';\nimport { deliveryResult } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport Issue from './Issue';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: '100%',\n },\n media: {\n height: 0,\n paddingTop: '56.25%', // 16:9\n },\n imgContainer: {\n textAlign: 'center',\n // backgroundColor: Colors.background.light,\n },\n img: {\n minHeight: 150,\n height: 150,\n width: 'auto',\n cursor: 'pointer',\n },\n expand: {\n transform: 'rotate(0deg)',\n marginLeft: 'auto',\n // marginRight: 'auto',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest,\n }),\n },\n expandOpen: {\n transform: 'rotate(180deg)',\n },\n avatar: {\n backgroundColor: red[500],\n },\n}));\n\nexport default function DeliveryStaffOrderDiaryCard({\n deliveryStaffOrder: inDeliveryStaffOrder,\n hideNames = false,\n onUpdate,\n}) {\n const classes = useStyles();\n const { t } = useTranslation();\n const [expanded, setExpanded] = useState(false);\n const [deliveryStaffOrder, setDeliveryStaffOrder] = useState();\n const visitorMode = !!deliveryStaffOrder?.visitorMode;\n\n const { deliveryResult: inDeliveryResult } = deliveryStaffOrder || {};\n const result = (deliveryResult.find(({ value }) => value === inDeliveryResult) || {}).label;\n const checklists = [\n {\n label: `${t('送餐')}完成${result ? '(' + result + ')' : ''}`,\n key: 'checkListIsComplete',\n },\n {\n label: t('生活提醒(氣候、保暖、補充水份)'),\n key: 'checkListReminder',\n },\n {\n label: t('跟長輩聊天關心(身體、生活)'),\n key: 'checkListChat',\n },\n ];\n\n const handleExpandClick = () => {\n setExpanded(!expanded);\n };\n\n // const handlePublish = async () => {\n // if (!window.confirm(`確定要公開發布此篇${t('送餐關懷')}?`)) return;\n\n // const username = cache.get('app:username');\n // const now = new Date().toISOString();\n\n // const {\n // id: deliveryStaffOrderId,\n // deliveryStaffId,\n // photoS3Keys,\n // diary: content,\n // checkListIsComplete,\n // checkListReminder,\n // checkListTransfer,\n // checkListChat,\n // } = deliveryStaffOrder;\n\n // const {\n // county,\n // elder,\n // } = order;\n\n // const id = uuidv1();\n\n // const newPhotoS3Keys = photoS3Keys;\n\n // const blogData = {\n // id,\n // status: 'published',\n // title: `${county}${t('送餐關懷')} - ${elder.nickname || (elder.name[0] + 'XX')}`,\n // content,\n // url: `/blogs/${deliveryStaffOrderId}`,\n // photoS3Keys: newPhotoS3Keys,\n // deliveryStaffId,\n // deliveryStaffOrderId,\n // checkListIsComplete,\n // checkListReminder,\n // checkListTransfer,\n // checkListChat,\n // createdAt: now,\n // createdBy: username,\n // updatedAt: now,\n // updatedBy: username,\n // };\n\n // await request(createBlog, { input: blogData });\n\n // const toUpdateDeliveryStaffOrderData = {\n // id: deliveryStaffOrderId,\n // isPublished: true,\n // blogId: id,\n // };\n\n // await request(updateDeliveryStaffOrder, {\n // input: toUpdateDeliveryStaffOrderData,\n // });\n\n // setDeliveryStaffOrder({\n // ...deliveryStaffOrder,\n // ...toUpdateDeliveryStaffOrderData,\n // });\n // };\n\n useEffect(() => {\n setDeliveryStaffOrder(inDeliveryStaffOrder);\n }, [inDeliveryStaffOrder]);\n\n if (!deliveryStaffOrder) return null;\n\n const updateFavorite = async () => {\n const newDeliverStaffOrder = JSON.parse(JSON.stringify(deliveryStaffOrder));\n newDeliverStaffOrder.favorite = !deliveryStaffOrder.favorite;\n const username = cache.get('app:username');\n\n const { id, favorite } = newDeliverStaffOrder;\n const input = {\n id,\n favorite,\n updatedBy: username,\n };\n\n // update deliveryStaffOrder\n await request(updateDeliveryStaffOrder, { input });\n setDeliveryStaffOrder(newDeliverStaffOrder);\n onUpdate && onUpdate(newDeliverStaffOrder);\n };\n\n const {\n deliveryStartedAt,\n deliveryDeliveredAt,\n deliveryCompletedAt,\n deliveryStaff,\n deliveryStaffId,\n diary,\n orderId,\n elderId,\n // clientId,\n // isPublished,\n photoS3Keys,\n // populated field\n thumbnail,\n order,\n elderDementiaSurvey,\n favorite,\n issue,\n } = deliveryStaffOrder;\n const { username, name } = deliveryStaff;\n global.logger.debug(deliveryStaffOrder);\n const deliveryStaffName = hideNames ? (name[0] + `姓${t('送餐大使')}`) : name;\n const elderName = hideNames ? (order.elder.name[0] + '姓長輩') : order.elder.name;\n\n const refreshImage = () => {\n global.logger.debug('refreshImage?', deliveryStaffOrder);\n };\n\n return (\n \n \n }\n action={\n
\n {!visitorMode && }\n \n \n {favorite ?\n :\n \n }\n \n \n {\n setDeliveryStaffOrder(newDeliverStaffOrder);\n onUpdate && onUpdate(newDeliverStaffOrder);\n }}\n disabled={visitorMode}\n />\n
\n }\n title={deliveryStaffName}\n subheader={formatDatetime(deliveryCompletedAt)}\n style={{ maxHeight: 72 }}\n />\n
\n \n
\n {/* */}\n \n \n {order.county} - {elderName}\n \n \n {t('送餐')}時間 {formatTime(deliveryStartedAt)} - {formatTime(deliveryDeliveredAt)}\n \n {checklists.map(({ label, key })=>(\n
\n {deliveryStaffOrder[key] ? :\n }\n {label}\n
\n ))}\n {elderDementiaSurvey && elderDementiaSurvey.items && elderDementiaSurvey.items.map(({ response, dementiaQuestionnaire }, index) => {\n const question = dementiaQuestionnaire.items[0].question;\n if (response === 'completed') {\n return (\n
\n
\n \n 失智友善宣導\n
\n {question}\n
\n );\n }\n })}\n \n 日誌\n \n {formatNote(diary || '無')}\n
\n {!visitorMode &&\n \n }\n size=\"medium\"\n />\n }\n size=\"medium\"\n />\n }\n size=\"medium\"\n />\n {/* }\n size=\"large\"\n /> */}\n {/* \n \n {isPublished ? : }\n \n */}\n \n \n \n }\n \n \n {\n expanded && (photoS3Keys || []).map((s3Key)=>(\n \n \n \n ))\n }\n { issue.items[0] &&\n \n \n \n }\n \n \n
\n );\n}\n\nDeliveryStaffOrderDiaryCard.propTypes = {\n deliveryStaffOrder: PropTypes.object,\n hideNames: PropTypes.bool,\n onUpdate: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport moment from 'moment-timezone';\nimport ReactToPrint from 'react-to-print';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport { Storage } from 'aws-amplify';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n// import FormControl from '@material-ui/core/FormControl';\nimport Checkbox from '@material-ui/core/Checkbox';\n// import ButtonGroup from '@material-ui/core/ButtonGroup';\n// import IconButton from '@material-ui/core/IconButton';\nimport { makeStyles } from '@material-ui/core/styles';\n// import ListIcon from '@material-ui/icons/List';\n// import AppsIcon from '@material-ui/icons/Apps';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { Semaphore } from 'async-mutex';\n\nimport {\n getDeliveryStaffOrdersByStaffByStatus,\n getDeliveryStaffOrdersByStatusByDate,\n getDeliveryStaffOrdersByCountyByDeliveryBy,\n listDeliveryStaffOrders,\n getDeliveryStaffOrdersByElderByDate,\n getDeliveryStaffOrdersByClientByDate,\n} from './queries';\nimport QueryGenerator from 'components/QueryGenerator';\nimport DeliveryStaffOrderDiaryCard from './DeliveryStaffOrderDiaryCard';\nimport { TIME_ZONE, counties } from '@silvergatedelivery/constants';\nimport { request } from 'utilities/graph';\nimport cache from 'utilities/cache';\n\n// const pastThreeDays = moment().tz(TIME_ZONE).add(-3, 'days').startOf('day').format('YYYY-MM-DD');\nconst today = moment().tz(TIME_ZONE).endOf('day').format('YYYY-MM-DD');\n\nlet componentRef;\n\nconst DEFAULT_IMAGE_URL = '/images/default_delivery_diary.png';\nconst INFINITE_DATA_SHOW_PER_REQUEST = 12;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n // display: 'flex',\n // overflow: 'visible',\n // height: 'calc(100vh - 64px)',\n padding: theme.spacing(2),\n width: '100%',\n },\n}));\n\nexport default function DeliveryDiary({\n deliveryStaffId,\n elderId,\n clientId,\n showFavorite: inShowFavorite = false,\n showIssue: inShowIssue = false,\n}) {\n const classes = useStyles();\n const { t } = useTranslation();\n const [data, setData] = useState([]);\n const [showedData, setShowedData] = useState([]);\n const [hideNames, setHideNames] = useState(false);\n const [showTransferOnly, setShowTransferOnly] = useState(false);\n const [showNotAtHome, setShowNotAtHome] = useState(false);\n const [showFavorite, setShowFavorite] = useState(inShowFavorite);\n const [showIssue, setShowIssue] = useState(inShowIssue);\n const [filteredData, setFilteredData] = useState([]);\n const [itemCount, setItemCount] = useState(0);\n const [orderCount, setOrderCount] = useState(0);\n // const [viewMode, setViewMode] = useState('grid');\n\n let indexes = [\n {\n name: 'getDeliveryStaffOrdersByCountyByDeliveryBy',\n label: '按地區查詢',\n partitionKey: 'county',\n sortKey: 'deliveryBy',\n fields: [\n {\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n },\n {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n },\n {\n label: '狀態',\n key: 'status',\n type: 'select',\n disabled: true,\n options: [{ value: 'completed', label: t('完成 (送餐日誌)') }],\n },\n ],\n operation: getDeliveryStaffOrdersByCountyByDeliveryBy,\n },\n {\n name: 'getDeliveryStaffOrdersByStatusByDate',\n label: `按${t('送餐')}時間查詢`,\n partitionKey: 'status',\n sortKey: 'deliveryBy',\n fields: [\n {\n label: '狀態',\n key: 'status',\n type: 'select',\n disabled: true,\n options: [{ value: 'completed', label: t('完成 (送餐日誌)') }],\n },\n {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n },\n ],\n operation: getDeliveryStaffOrdersByStatusByDate,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n disabled: true,\n options: [{ value: 'completed', label: t('完成 (送餐日誌)') }],\n }],\n operation: listDeliveryStaffOrders,\n },\n ];\n\n useEffect(() => {\n let newFilteredData = data;\n if (showTransferOnly) {\n newFilteredData = newFilteredData.filter((data) => data.checkListTransfer ||\n (data.order && (data.order.category === '送物資' || data.order.category === '送餐和物資')));\n }\n if (showNotAtHome) {\n newFilteredData = newFilteredData.filter(({ deliveryResult }) => deliveryResult === 'leftThere' || deliveryResult === 'receivedByRelative');\n }\n if (showFavorite) {\n newFilteredData = newFilteredData.filter(({ favorite }) => !!favorite);\n }\n if (showIssue) {\n newFilteredData = newFilteredData.filter(({ hasIssue }) => hasIssue);\n }\n setFilteredData(newFilteredData);\n setShowedData([...newFilteredData.filter((x, index) => index < INFINITE_DATA_SHOW_PER_REQUEST)]);\n }, [data, showTransferOnly, showNotAtHome, showFavorite, showIssue]);\n\n if (clientId) {\n indexes = [{\n name: 'getDeliveryStaffOrdersByClientByDate',\n label: '按客戶查詢',\n partitionKey: 'clientId',\n sortKey: 'deliveryBy',\n fields: [\n {\n label: '客戶ID',\n key: 'clientId',\n type: 'select',\n disabled: true,\n options: [{ value: clientId, label: clientId }],\n },\n {\n label: '狀態',\n key: 'status',\n type: 'select',\n disabled: true,\n options: [{ value: 'completed', label: t('完成 (送餐日誌)') }],\n },\n {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n },\n ],\n operation: getDeliveryStaffOrdersByClientByDate,\n }];\n }\n\n if (elderId) {\n indexes = [{\n name: 'getDeliveryStaffOrdersByElderByDate',\n label: `按${t('送餐對象')}查詢`,\n partitionKey: 'elderId',\n sortKey: 'deliveryBy',\n fields: [\n {\n label: `${t('送餐對象')}ID`,\n key: 'elderId',\n type: 'select',\n disabled: true,\n options: [{ value: elderId, label: elderId }],\n },\n {\n label: '狀態',\n key: 'status',\n type: 'select',\n disabled: true,\n options: [{ value: 'completed', label: t('完成 (送餐日誌)') }],\n },\n {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n },\n ],\n operation: getDeliveryStaffOrdersByElderByDate,\n }];\n if (inShowFavorite) {\n indexes[0].fields.push({\n label: '收藏',\n key: 'favorite',\n type: 'select',\n disabled: true,\n options: [{ value: true, label: '已收藏' }],\n });\n }\n if (inShowIssue) {\n indexes[0].fields.push({\n label: '追蹤',\n key: 'hasIssue',\n type: 'select',\n disabled: true,\n options: [{ value: true, label: '已追蹤' }],\n });\n }\n }\n\n const filterClientId = clientId || cache.get('app:facilityId');\n if (deliveryStaffId) {\n indexes = [{\n name: 'getDeliveryStaffOrdersByStaffByStatus',\n label: `按${t('送餐大使')}查詢`,\n partitionKey: 'deliveryStaffId',\n sortKey: 'status',\n fields: [\n {\n label: `${t('送餐大使')}ID`,\n key: 'deliveryStaffId',\n type: 'select',\n disabled: true,\n options: [{ value: deliveryStaffId, label: deliveryStaffId }],\n },\n {\n label: '狀態',\n key: 'status',\n type: 'select',\n disabled: true,\n options: [{ value: 'completed', label: t('完成 (送餐日誌)') }],\n },\n {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n },\n ],\n operation: getDeliveryStaffOrdersByStaffByStatus,\n }];\n if (filterClientId) {\n indexes[0].fields.push({\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: filterClientId, label: filterClientId }],\n disabled: true,\n });\n }\n }\n\n const queryDefaultParams = {\n status: 'completed',\n deliveryStaffId,\n clientId,\n elderId,\n deliveryBy: {\n from: today,\n to: today,\n },\n county: cache.get('app:location') || counties[0],\n };\n if (deliveryStaffId && filterClientId) {\n queryDefaultParams.clientId = filterClientId;\n }\n if (inShowFavorite) {\n queryDefaultParams.favorite = true;\n }\n if (inShowIssue) {\n queryDefaultParams.hasIssue = true;\n }\n\n const handleUpdate = async (items) => {\n setItemCount(items.length);\n setOrderCount(0);\n const s = new Semaphore(10);\n const updatedItems = await Promise.all(items.map((deliveryStaffOrder) =>\n s.runExclusive(async () => {\n if (!deliveryStaffOrder.order) {\n try {\n const { data: { getOrder: order } } = await request( /* GraphQL */ `\n query GetOrder($id: ID!) {\n getOrder(id: $id) {\n county\n category\n elder {\n name\n nickname\n }\n }\n }\n `, { id: deliveryStaffOrder.orderId });\n deliveryStaffOrder.order = order;\n } catch (e) {\n console.log(e);\n }\n }\n\n deliveryStaffOrder.photoS3Keys = deliveryStaffOrder.photoS3Keys || [];\n\n if (deliveryStaffOrder.photoS3Keys[0] && deliveryStaffOrder.thumbnail !== DEFAULT_IMAGE_URL) {\n deliveryStaffOrder.thumbnail = await Storage.get(deliveryStaffOrder.photoS3Keys[0]);\n } else {\n deliveryStaffOrder.thumbnail = DEFAULT_IMAGE_URL;\n }\n setOrderCount((prevCounter) => prevCounter + 1);\n return deliveryStaffOrder;\n }),\n ));\n // global.logger.debug('updatedItems', updatedItems);\n\n const allData = updatedItems.filter((x) => x);\n setData([...allData]);\n };\n\n global.logger.debug('data', {\n data: data.length,\n showedData: showedData.length,\n hasMore: showedData.length < data.length,\n });\n\n return (\n {\n global.logger.debug('next', args);\n if (showedData.length === filteredData.length) return;\n setShowedData([...filteredData.filter((x, index) => index < showedData.length + INFINITE_DATA_SHOW_PER_REQUEST)]);\n }}\n height='calc(100vh - 116px)' // 64px appbar + 52px footer\n hasMore={showedData.length < filteredData.length}\n loader={\n

\n

載入中...

\n

}\n endMessage={\n

\n

\n }\n >\n \n \n \n \n {(data.length > 0) &&\n \n {/* \n \n setViewMode('grid')}>\n \n \n setViewMode('table')}>\n \n \n \n */}\n {orderCount !== itemCount &&\n \n {`下載資料(${orderCount}/${itemCount})`}\n }\n {\n setHideNames(e.target.checked);\n }}\n name={'hideNames'}\n color=\"primary\"\n />\n }\n label=\"隱藏姓名\"\n />\n {\n setShowTransferOnly(e.target.checked);\n }}\n name={'showTransferOnly'}\n color=\"primary\"\n />\n }\n label=\"只顯示轉贈愛心物資\"\n />\n {\n setShowNotAtHome(e.target.checked);\n }}\n name={'showNotAtHome'}\n color=\"primary\"\n />\n }\n label=\"只顯示個案未遇\"\n />\n {!inShowFavorite && !inShowIssue &&\n <>\n {\n setShowFavorite(e.target.checked);\n }}\n name={'showFavorite'}\n color=\"primary\"\n />\n }\n label=\"只顯示收藏\"\n />\n {\n setShowIssue(e.target.checked);\n }}\n name={'showIssue'}\n color=\"primary\"\n />\n }\n label=\"只顯示追蹤\"\n />\n }\n {\n // NOTE: could just as easily return . Do NOT pass an `onClick` prop\n // to the root node of the returned component as it will be overwritten.\n return ;\n }}\n content={() => {\n const printContents = componentRef.cloneNode(true);\n const noPrintElements = printContents.getElementsByClassName('no-print');\n Array.from(noPrintElements).forEach((element) => element.remove());\n return printContents;\n }}\n />\n }\n componentRef = el }>\n {showedData.map((item, index)=>(\n \n {\n // const newData = data.map((item) => item.id === newDeliveryStaffOrder.id ? newDeliveryStaffOrder : item);\n // setData(newData);\n const index = data.findIndex((item) => item.id === newDeliveryStaffOrder.id);\n if (index !== -1) {\n data[index] = newDeliveryStaffOrder;\n // 這個方式setData不會造成重新render,避免畫面閃爍的問題\n setData(data);\n }\n }}\n />\n {(index + 1) % 6 === 0 && index + 1 !== showedData.length &&
}\n \n ))}\n \n \n \n );\n}\n\nDeliveryDiary.propTypes = {\n deliveryStaffId: PropTypes.string,\n elderId: PropTypes.string,\n clientId: PropTypes.string,\n showFavorite: PropTypes.bool,\n showIssue: PropTypes.bool,\n};\n","// import React from 'react';\nimport { Colors, orderStatus } from '@silvergatedelivery/constants';\nimport { getStartEndForDeliveryTime } from 'utilities/format';\nimport { getTranslatedMealSlots } from 'utilities/translate';\n\nconst getOrderStatusProps = (status) => {\n return orderStatus.find(({ value }) => value === status);\n};\n\nconst getDeliveryScheduleStatusProps = (status) => {\n switch (status) {\n case 'available':\n return { label: '可接單', color: Colors.active };\n case 'cancelled':\n return { label: '取消', color: Colors.light };\n default:\n return { label: status, color: Colors.dark };\n }\n};\n\nconst getMealName = (mealSlot) => {\n return getTranslatedMealSlots().find(({ value }) => value === mealSlot).label;\n};\n\n// event obj\n// https://fullcalendar.io/docs/event-object\n\nexport const sortOrder = (a, b) => {\n if (a.deliveryBy > b.deliveryBy) return 1;\n if (a.deliveryBy < b.deliveryBy) return -1;\n if (a.deliveryGroupId && b.deliveryGroupId) {\n if (a.deliveryGroupId > b.deliveryGroupId) return 1;\n if (a.deliveryGroupId < b.deliveryGroupId) return -1;\n if (a.deliveryGroupSortOrder > b.deliveryGroupSortOrder) return 1;\n if (a.deliveryGroupSortOrder < b.deliveryGroupSortOrder) return -1;\n }\n if (a.deliveryGroupId && !b.deliveryGroupId) return 1;\n if (!a.deliveryGroupId && b.deliveryGroupId) return -1;\n return a.elder.name > b.elder.name ? 1 : -1;\n};\n\n// // TODO: query based on the current view + status\nexport const getOrderEvents = (inOrders = [], elders = []) => {\n const events = inOrders.sort(sortOrder).map((item) => {\n const mealName = getMealName(item.mealSlot);\n const {\n color,\n // label: statusLabel,\n } = getOrderStatusProps(item.status);\n // const title = `[${statusLabel}] ${item.elder.name} (${item.restaurant.name})`;\n const elder = elders.find((elder) => elder.id === item.elderId);\n let elderName = elder?.name || item.elder.name;\n if (elder && item.elderId !== item.elder.id) {\n elderName += `-${elder.linkGroupName}`;\n }\n const title = `${elderName} (${item.restaurant.name})`;\n // item.mealName = mealName;\n\n const { start, end } = getStartEndForDeliveryTime(item.deliveryBy);\n return {\n title,\n start,\n end,\n // color,\n backgroundColor: color,\n extendedProps: {\n type: 'order',\n data: item,\n mealName,\n description: '',\n },\n };\n });\n\n return events;\n};\n\nexport const getRestaurantScheduleEvents = (inRestaurantSchedules = []) => {\n const events = inRestaurantSchedules.map((item) => {\n const mealName = getMealName(item.mealSlot);\n const { color, label: statusLabel } = getDeliveryScheduleStatusProps(item.status);\n const title = `[餐廳] [${statusLabel}] ${item.restaurant.name}`;\n item.mealName = mealName;\n\n return {\n title,\n start: item.start,\n end: item.end,\n backgroundColor: color,\n extendedProps: item,\n // display: 'background',\n };\n });\n\n return events;\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport listPlugin from '@fullcalendar/list';\nimport interactionPlugin from '@fullcalendar/interaction';\n// import resourceTimelinePlugin from '@fullcalendar/resource-timeline';\nimport zhLocale from '@fullcalendar/core/locales/zh-tw';\nimport momentTimezonePlugin from '@fullcalendar/moment-timezone';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';\nimport Typography from '@material-ui/core/Typography';\nimport OrderDialog from 'components/Order/OrderDialog';\nimport { getOrderEvents, getRestaurantScheduleEvents } from './helpers';\nimport cache from 'utilities/cache';\nimport moment from 'moment';\nimport { orderStatus } from '@silvergatedelivery/constants';\nimport { sortBy } from 'utilities/sorting';\nimport LinkButton from 'components/Table/LinkButton';\nimport { Colors } from '@silvergatedelivery/constants';\n\nimport './FullCalendar.css';\n\n// tutorial\n// https://github.com/fullcalendar/fullcalendar-example-projects/blob/master/react/src/DemoApp.jsx\n\nconst fullCalendarPlugins = [\n dayGridPlugin, timeGridPlugin, listPlugin,\n interactionPlugin,\n momentTimezonePlugin,\n // resourceTimelinePlugin, // https://fullcalendar.io/docs/premium\n];\n\n// event obj\n// https://fullcalendar.io/docs/event-object\nconst sampleEvents = [\n {\n title: '洛杉磯下午2點 台灣早上5點',\n date: '2020-10-02T21:00:00.000Z',\n },\n {\n title: 'event 1',\n date: '2020-10-05',\n extendedProps: {\n status: 'done',\n },\n },\n {\n title: 'event 2',\n date: '2020-10-08',\n display: 'background',\n },\n {\n title: 'event 3',\n date: '2020-10-15',\n backgroundColor: 'red',\n },\n];\n\nexport default function ScheduleCalendar({\n orders,\n elders = [],\n restaurantSchedules,\n onDateChange,\n orderCheckRules=[],\n checkDinner=false,\n checkLunch=false,\n}) {\n const [events, setEvents] = useState(sampleEvents);\n const [orderId, setOrderId] = useState();\n const [view, setView] = useState(cache.get('app:scheduleView') || 'listMonth');\n const [openOrderCheck, setOpenOrderCheck] = useState(false);\n const [popupContent, setPopupContent] = useState('');\n\n const handleEventClick = ({ event }) => {\n const { extendedProps } = event._def;\n if (extendedProps.type === 'order') {\n setOrderId(extendedProps.data.id);\n }\n };\n\n useEffect(() => {\n const orderEvents = getOrderEvents(orders, elders);\n const restaurantScheduleEvents = getRestaurantScheduleEvents(restaurantSchedules);\n\n setEvents([\n ...orderEvents,\n ...restaurantScheduleEvents,\n ]);\n }, [orders, restaurantSchedules]);\n\n const handlePopupOpen = (content) => {\n setPopupContent(content);\n setOpenOrderCheck(true);\n };\n\n const handlePopupClose = () => {\n setOpenOrderCheck(false);\n setPopupContent('');\n };\n\n const renderDayCellContent = (dayCellInfo) => {\n const date = moment(dayCellInfo.date).format('YYYY-MM-DD');\n const week = moment(dayCellInfo.date).day();\n const eventCountByStatus = {\n waitingForDeliveryStaff: 0,\n reMatchingDeliveryStaff: 0,\n ready: 0,\n readyForPickup: 0,\n delivering: 0,\n delivered: 0,\n completed: 0,\n cancelled: 0,\n };\n events.forEach((event) => {\n const eventStartDate = moment(event.start).format('YYYY-MM-DD');\n if (eventStartDate === date && event.extendedProps && event.extendedProps.data) {\n const orderStatus = event.extendedProps.data.status;\n eventCountByStatus[orderStatus] += 1;\n }\n });\n\n const isWithin30Days = (dateString) => {\n const targetDate = moment(dateString);\n const today = moment();\n return targetDate.isBetween(today.clone().subtract(1, 'days'), today.clone().add(30, 'days'), null, []);\n };\n\n const missingLunchOrder = [];\n const missingDinnerOrder = [];\n const duplicatedLunchOrder = [];\n const duplicatedDinnerOrder = [];\n const beyondPlanLunchOrder = [];\n const beyondPlanDinnerOrder = [];\n if (orderCheckRules.length !== 0 && isWithin30Days(date)) {\n const dateEvents = events.filter((event) => {\n return event.extendedProps?.data?.date === date &&\n event.extendedProps?.data?.status !== 'cancelled' &&\n ['送餐', '送餐和物資', '愛心餐', '自費餐'].includes(event.extendedProps?.data?.category);\n });\n elders.forEach(({ lunchRepeatOn, dinnerRepeatOn, status, id, name }) => {\n if (status !== '使用中') return;\n const lunchCount = dateEvents.filter((event) => (\n event.extendedProps?.data?.elderId === id &&\n event.extendedProps?.data?.mealSlot === 'lunch'\n )).length;\n const dinnerCount = dateEvents.filter((event) => (\n event.extendedProps?.data?.elderId === id &&\n event.extendedProps?.data?.mealSlot === 'dinner'\n )).length;\n if ((lunchRepeatOn && lunchRepeatOn.length !== 0) || (dinnerRepeatOn && dinnerRepeatOn.length !== 0)) {\n if (lunchRepeatOn?.includes(week) && lunchCount === 0 && checkLunch && orderCheckRules.includes('missing')) {\n missingLunchOrder.push({ id, name });\n }\n if (dinnerRepeatOn?.includes(week) && dinnerCount === 0 && checkDinner && orderCheckRules.includes('missing')) {\n missingDinnerOrder.push({ id, name });\n }\n if (!lunchRepeatOn?.includes(week) && lunchCount > 0 && checkLunch && orderCheckRules.includes('beyondPlan')) {\n beyondPlanLunchOrder.push({ id, name });\n }\n if (!dinnerRepeatOn?.includes(week) && dinnerCount > 0 && checkDinner && orderCheckRules.includes('beyondPlan')) {\n beyondPlanDinnerOrder.push({ id, name });\n }\n }\n if (lunchCount > 1 && checkLunch && orderCheckRules.includes('duplicated')) {\n duplicatedLunchOrder.push({ id, name });\n }\n if (dinnerCount > 1 && checkDinner && orderCheckRules.includes('duplicated')) {\n duplicatedDinnerOrder.push({ id, name });\n }\n });\n }\n\n const elderContent = (title, elders) => {\n if (elders.length === 0) return null;\n return <>\n {title}\n \n {elders.sort(sortBy('name')).map((elder) => {\n return (\n \n {elder.name}\n \n );\n })}\n
\n
\n ;\n };\n\n return (\n
\n {(missingLunchOrder.length !== 0 || missingDinnerOrder.length !== 0 ||\n beyondPlanLunchOrder.length !== 0 || beyondPlanDinnerOrder.length !== 0 ||\n duplicatedLunchOrder.length !== 0 || duplicatedDinnerOrder.length !== 0) &&\n <>\n {\n event.stopPropagation();\n event.preventDefault();\n handlePopupOpen(\n
\n {elderContent('午餐重複:', duplicatedLunchOrder)}\n {elderContent('晚餐重複:', duplicatedDinnerOrder)}\n {elderContent('非送餐週期內的午餐:', beyondPlanLunchOrder)}\n {elderContent('非送餐週期內的晚餐:', beyondPlanDinnerOrder)}\n {elderContent('缺少送餐週期內的午餐:', missingLunchOrder)}\n {elderContent('缺少送餐週期內的晚餐:', missingDinnerOrder)}\n
,\n );\n }}\n size='small'\n >\n \n \n \n }\n {['timeGridDay', 'listWeek', 'listDay'].includes(view) && moment(dayCellInfo.date).format('星期dd')}\n {['listMonth'].includes(view) && moment(dayCellInfo.date).format('YYYY年MM月DD日')}\n {['timeGridWeek'].includes(view) && moment(dayCellInfo.date).format('MM/DD (週dd)')}\n
\n {orderStatus.map(({ value, color }) => {\n if (eventCountByStatus[value] !== 0) {\n return  #{eventCountByStatus[value]} ;\n }\n })}\n
\n    {dayCellInfo.dayNumberText}\n
\n );\n };\n\n return (\n \n {orderId && setOrderId(null)} />}\n {\n cache.set('app:scheduleView', view.type);\n setView(view.type);\n }}\n // eventTimeFormat={{ hour: '2-digit', minute: '2-digit', hour12: true }}\n eventDisplay=\"block\" // https://github.com/fullcalendar/fullcalendar/issues/5533\n events={events}\n eventOrder={''}\n eventContent={renderEventContent}\n // select={handleDateSelect}\n eventClick={handleEventClick}\n // eventsSet={this.handleEvents} // called after events are initialized/added/changed/removed\n /* you can update a remote database when these fire:\n eventAdd={function(){}}\n eventChange={function(){}}\n eventRemove={function(){}}\n */\n datesSet={(dateInfo)=>{\n if (onDateChange) {\n onDateChange(dateInfo);\n }\n cache.set('app:scheduleView', dateInfo.view.type);\n setView(dateInfo.view.type);\n }}\n // 送餐時段 // https://fullcalendar.io/docs/businessHours\n businessHours={[\n {\n daysOfWeek: [0, 1, 2, 3, 4, 5, 6],\n startTime: '11:00',\n endTime: '15:00',\n },\n {\n daysOfWeek: [0, 1, 2, 3, 4, 5, 6],\n startTime: '17:00',\n endTime: '20:00',\n },\n ]}\n />\n \n 訂單檢查\n \n {popupContent}\n \n \n \n \n \n \n );\n}\n\nfunction renderEventContent(eventInfo) {\n // global.logger.debug(eventInfo);\n const mealName = eventInfo.event.extendedProps ? eventInfo.event.extendedProps.mealName : null;\n const style = {\n paddingLeft: 1,\n backgroundColor: eventInfo.backgroundColor,\n color: '#fff',\n };\n const timeText = eventInfo.timeText\n .split('-')[0]\n .replace(/上午/g, '')\n .replace(/下午/g, '')\n .replace(/ /g, '');\n\n return (\n
\n {mealName || ''} {timeText}\n  \n {eventInfo.event.title}\n {/*
\n {eventInfo.event.extendedProps.description} */}\n
\n );\n}\n\nScheduleCalendar.propTypes = {\n orders: PropTypes.array,\n elders: PropTypes.array,\n restaurantSchedules: PropTypes.array,\n onDateChange: PropTypes.func,\n orderCheckRules: PropTypes.array,\n checkDinner: PropTypes.bool,\n checkLunch: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\n// import List from '@material-ui/core/List';\n// import ListItem from '@material-ui/core/ListItem';\n// import ListItemIcon from '@material-ui/core/ListItemIcon';\n// // import ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\n// import ListItemText from '@material-ui/core/ListItemText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport Chip from '@material-ui/core/Chip';\nimport Button from '@material-ui/core/Button';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment';\nimport { asyncListAll, request } from 'utilities/graph';\nimport {\n getElder,\n getDeliveryStaff,\n listDeliveryStaffs,\n getDeliveryStaffsByCountyByIsActive,\n listElders,\n getEldersByCountyByCreatedAt,\n getOrdersByElderByDate,\n getOrdersByDeliveryStaffByDate,\n getOrdersByCountyByDate,\n getOrdersByStatusByDate,\n getElderDeliveryGroupsByClientByStatus,\n} from 'graphql/queries';\nimport { counties, TIME_ZONE } from '@silvergatedelivery/constants';\nimport { sortBy, sortOrdersByDeliveryGroups, sortOrder } from 'utilities/sorting';\nimport ScheduleCalendar from 'components/Schedule/ScheduleCalendar';\nimport OrderStatusChip from 'components/OrderStatusChip';\nimport AdminOrderEditButton from 'forms/AdminOrderForm/AdminOrderEditButton';\nimport cache from 'utilities/cache';\nimport { getTranslatedOrderStatus, getTranslatedMealSlots } from 'utilities/translate';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n chip: {\n margin: 2,\n },\n}));\n\nconst DATE_FORMAT = 'YYYY-MM-DD';\n\nconst getDates = (from, to) => {\n const dates = [moment(to).tz(TIME_ZONE).format(DATE_FORMAT)];\n\n while (dates[0] > from) {\n const prev = moment(dates[0]).tz(TIME_ZONE).add(-1, 'day').format(DATE_FORMAT);\n dates.unshift(prev);\n }\n return dates;\n};\n\nexport default function Schedule({\n deliveryStaffId,\n elderId,\n defaultLocations = [cache.get('app:location')].filter((x) => x),\n defaultOrderStatus = [\n 'waitingForDeliveryStaff',\n 'reMatchingDeliveryStaff',\n 'ready',\n 'readyForPickup',\n 'delivering',\n ],\n showLocationSelector = true,\n showDeliverStaffSelector = true,\n showElderSelector = true,\n}) {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const getTargetOrderStatus = () => cache.get('app:admin:schedule:targetOrderStatus') || defaultOrderStatus;\n const [isLoading, setIsLoading] = useState(false);\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [targetOrderStatus, setTargetOrderStatus] = useState(getTargetOrderStatus);\n const [targetCounties, setTargetCounties] = useState(defaultLocations);\n const [targetDeliveryStaffIds, setTargetDeliveryStaffIds] = useState([]);\n const [targetElderIds, setTargetElderIds] = useState([]);\n const [targetMealSlots, setTargetMealSlots] = useState(['lunch', 'dinner']);\n\n // const [allOrders, setAllOrders] = useState([]);\n const [orders, setOrders] = useState([]);\n const [filteredOrders, setFilteredOrders] = useState([]);\n const [deliveryStaffOptions, setDeliveryStaffOptions] = useState([]);\n const [elderOptions, setElderOptions] = useState([]);\n const [dateInfo, setDateInfo] = useState();\n const [orderMappings, setOrderMappings] = useState({});\n // const [restaurantSchedules, setRestaurantSchedules] = useState([]);\n\n const onDateChange = (newDateInfo) => {\n const newFromDate = moment(newDateInfo.startStr).tz(TIME_ZONE).format(DATE_FORMAT);\n const newToDate = moment(newDateInfo.endStr).tz(TIME_ZONE).format(DATE_FORMAT);\n\n const { fromDate, toDate } = dateInfo || {};\n\n if (newFromDate !== fromDate || newToDate !== toDate) {\n setDateInfo({\n fromDate: newFromDate,\n toDate: newToDate,\n dates: getDates(newFromDate, newToDate),\n });\n }\n };\n\n useEffect(() => {\n if (!dateInfo) return;\n\n (async () => {\n if (elderId && targetElderIds.length === 0) return;\n if (deliveryStaffId && targetDeliveryStaffIds.length === 0) return;\n\n setIsLoading(true);\n\n let orders = [];\n const { dates } = dateInfo;\n const clientId = cache.get('app:facilityId');\n let elderDeliveryGroups;\n\n global.logger.debug('Fetching orders', dateInfo);\n\n const queryPromsies = [];\n\n const asyncListAllWrapper = async (queryName, params) => {\n const key = JSON.stringify(params);\n\n if (orderMappings[key]) {\n // global.logger.debug(`${key} exists, use cache data`);\n return orderMappings[key];\n }\n\n const data = await asyncListAll(queryName, params);\n orderMappings[key] = data;\n\n setOrderMappings({ ...orderMappings });\n\n return data;\n };\n\n if (elderId && targetElderIds[0]) {\n targetElderIds.forEach((elderId) => {\n dates.forEach((date) => {\n queryPromsies.push(asyncListAllWrapper(getOrdersByElderByDate, {\n elderId,\n date: {\n eq: date,\n },\n }));\n });\n });\n } else\n if (deliveryStaffId && targetDeliveryStaffIds[0]) {\n const clientFilter = clientId ? {\n clientId: {\n eq: clientId,\n },\n } : null;\n targetDeliveryStaffIds.forEach((deliveryStaffId) => {\n dates.forEach((date) => {\n queryPromsies.push(asyncListAllWrapper(getOrdersByDeliveryStaffByDate, {\n deliveryStaffId,\n date: {\n eq: date,\n },\n filter: clientFilter,\n }));\n });\n });\n if (clientId) {\n elderDeliveryGroups = await asyncListAll(getElderDeliveryGroupsByClientByStatus, {\n clientId: clientId,\n status: { eq: '使用中' },\n limit: 1000,\n });\n }\n } else\n if (targetCounties.length > 0) {\n targetCounties.forEach((county) => {\n dates.forEach((date) => {\n queryPromsies.push(asyncListAllWrapper(getOrdersByCountyByDate, {\n county,\n date: {\n eq: date,\n },\n }));\n });\n });\n } else\n if (targetOrderStatus.length > 0) {\n targetOrderStatus.forEach((status) => {\n dates.forEach((date) => {\n queryPromsies.push(asyncListAllWrapper(getOrdersByStatusByDate, {\n status,\n date: {\n eq: date,\n },\n }));\n });\n });\n }\n\n const results = await Promise.all(queryPromsies);\n results.forEach((items) => {\n if (elderDeliveryGroups) {\n const sortedItems = sortOrdersByDeliveryGroups(items, elderDeliveryGroups);\n orders = [...orders, ...sortedItems];\n } else {\n orders = [...orders, ...items.sort(sortOrder)];\n }\n });\n\n setOrders(orders);\n\n setIsLoading(false);\n })();\n }, [\n lastUpdatedAt,\n targetCounties,\n targetOrderStatus,\n targetDeliveryStaffIds,\n targetElderIds,\n elderId,\n deliveryStaffId,\n dateInfo,\n ]);\n\n useEffect(() => {\n const filteredOrders = orders\n .filter((item) => {\n let shouldRender = true;\n if (targetCounties.length > 0 && !targetCounties.includes(item.county)) {\n shouldRender = false;\n }\n if (targetOrderStatus.length > 0 && !targetOrderStatus.includes(item.status)) {\n shouldRender = false;\n }\n if (targetMealSlots.length > 0 && !targetMealSlots.includes(item.mealSlot)) {\n shouldRender = false;\n }\n if (targetDeliveryStaffIds.length > 0 && !targetDeliveryStaffIds.includes(item.deliveryStaffId)) {\n shouldRender = false;\n }\n if (targetElderIds.length > 0 && !targetElderIds.includes(item.elderId)) {\n shouldRender = false;\n }\n // if (targetDeliveryStaffIds.length > 0 && !targetDeliveryStaffIds.includes(item.deliveryStaffId)) {\n // shouldRender = false;\n // }\n return shouldRender;\n });\n\n global.logger.debug('orders', { orders, filteredOrders });\n\n setFilteredOrders(filteredOrders);\n }, [orders, targetCounties, targetOrderStatus, targetMealSlots, targetElderIds, targetDeliveryStaffIds]);\n\n useEffect(() => {\n if (!showElderSelector) return;\n (async () => {\n let elders = [];\n if (elderId) {\n const { data: { getElder: data } } = await request(getElder, { id: elderId });\n elders = [data];\n } else\n if (targetCounties.length === 0) {\n elders = await asyncListAll(listElders);\n } else {\n await Promise.all(targetCounties.map(async (county) => {\n const data = await asyncListAll(getEldersByCountyByCreatedAt, {\n county,\n });\n elders = [...elders, ...data];\n }));\n }\n\n global.logger.debug('elders', elders);\n\n setElderOptions([\n ...elders.map(({ id, name }) => {\n return {\n label: name,\n value: id,\n };\n }).sort(sortBy('label'))]);\n\n if (elderId) {\n setTargetElderIds([elderId]);\n }\n })();\n }, [targetCounties, elderId, showElderSelector]);\n\n useEffect(() => {\n if (!showDeliverStaffSelector) {\n if (deliveryStaffId) {\n setTargetDeliveryStaffIds([deliveryStaffId]);\n }\n return;\n }\n\n (async () => {\n let deliveryStaffs = [];\n if (deliveryStaffId) {\n const { data: { getDeliveryStaff: data } } = await request(getDeliveryStaff, { id: deliveryStaffId });\n deliveryStaffs = [data];\n } else\n if (targetCounties.length === 0) {\n deliveryStaffs = await asyncListAll(listDeliveryStaffs);\n } else {\n await Promise.all(targetCounties.map(async (county) => {\n const data = await asyncListAll(getDeliveryStaffsByCountyByIsActive, {\n county,\n isActive: { eq: 1 },\n });\n deliveryStaffs = [...deliveryStaffs, ...data];\n }));\n }\n\n setDeliveryStaffOptions([\n { label: '尚無指派', value: null },\n ...deliveryStaffs.map(({ id, name }) => {\n return {\n label: name,\n value: id,\n };\n }).sort(sortBy('label'))]);\n\n if (deliveryStaffId) {\n setTargetDeliveryStaffIds([deliveryStaffId]);\n }\n })();\n }, [targetCounties, deliveryStaffId, showDeliverStaffSelector]);\n\n const renderChipValue = (selected) => (\n
\n {selected.map((value, index) => {\n return ();\n })}\n
\n );\n\n const renderDeliveryStaffChipValue = (selected) => (\n
\n {selected.map((value, index) => {\n return (item.value === value).label}\n />);\n })}\n
\n );\n\n const renderElderChipValue = (selected) => (\n
\n {selected.map((value, index) => {\n return (item.value === value).label}\n />);\n })}\n
\n );\n\n const renderStatusChipValue = (selected) => (\n
\n {selected.map((value) => {\n return ();\n })}\n
\n );\n const translatedMealSlots = getTranslatedMealSlots();\n const renderMealSlotValue = (selected) => (\n
\n {selected.map((value, index) => {\n return (item.value === value).label}\n />);\n })}\n
\n );\n\n return (\n
\n \n \n {showLocationSelector &&\n \n 縣市\n setTargetCounties(event.target.value)}\n input={}\n renderValue={renderChipValue}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n -1} />\n {item}\n \n ))}\n \n }\n \n 狀態\n {\n cache.set('app:admin:schedule:targetOrderStatus', event.target.value);\n setTargetOrderStatus(event.target.value);\n }}\n input={}\n renderValue={renderStatusChipValue}\n disabled={isLoading}\n >\n {getTranslatedOrderStatus().map((item) => (\n \n -1} />\n {item.label}\n \n ))}\n \n \n \n {`${t('午餐')}/${t('晚餐')}`}\n setTargetMealSlots(event.target.value)}\n input={}\n renderValue={renderMealSlotValue}\n disabled={isLoading}\n >\n {translatedMealSlots.map((item) => (\n \n -1} />\n {item.label}\n \n ))}\n \n \n\n {showDeliverStaffSelector &&\n \n {t('送餐大使')}\n setTargetDeliveryStaffIds(event.target.value)}\n input={}\n renderValue={renderDeliveryStaffChipValue}\n disabled={isLoading}\n >\n {deliveryStaffOptions.map((item) => (\n \n -1} />\n {item.label}\n \n ))}\n \n }\n {showElderSelector &&\n \n {t('送餐對象')}\n setTargetElderIds(event.target.value)}\n input={}\n renderValue={renderElderChipValue}\n disabled={isLoading}\n >\n {elderOptions.map((item) => (\n \n -1} />\n {item.label}\n \n ))}\n \n }\n {\n setOrderMappings({});\n setLastUpdatedAt(Date.now());\n }}\n disabled={isLoading}\n >\n {!isLoading &&\n \n \n 重新整理\n }\n {isLoading && }\n \n {\n setOrderMappings({});\n setLastUpdatedAt(Date.now());\n }}\n disabled={isLoading}\n />\n \n \n \n \n \n
\n );\n}\n\n\nSchedule.propTypes = {\n elderId: PropTypes.string,\n deliveryStaffId: PropTypes.string,\n defaultLocations: PropTypes.array,\n defaultOrderStatus: PropTypes.array,\n showLocationSelector: PropTypes.bool,\n showElderSelector: PropTypes.bool,\n showDeliverStaffSelector: PropTypes.bool,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport VerticalTabs from 'components/Tab/VerticalTabs';\nimport OrderTable from 'components/OrderTable';\nimport ElderFormTable from 'components/ElderFormTable';\nimport SocialWorkerDiaryTable from 'components/SocialWorkerDiaryTable';\nimport RecurringOrderTable from 'components/RecurringOrderTable';\nimport ElderCard from 'components/Card/ElderCard';\nimport ClientCard from 'components/Card/ClientCard';\nimport { request } from 'utilities/graph';\nimport { getElder, getElderDeliveryGroupByElder } from 'graphql/queries';\nimport DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\nimport Schedule from 'views/Admin/Schedule/Schedule';\nimport cache from 'utilities/cache';\n\nconst useStyles = makeStyles((theme) => ({\n collapsibleGrid: {\n 'width': 'auto',\n 'transition': 'width 0.3s ease-in-out',\n '&.collapsed': {\n 'width': theme.spacing(3),\n 'marginRight': 16,\n },\n },\n}));\n\nexport default function ElderDetails({ id: inId, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [data, setData] = useState();\n const [tabs, setTabs] = useState([]);\n const [isCardOpen, setIsCardOpen] = useState(true);\n const parentRef = useRef(null);\n const [containerWidth, setContainerWidth] = useState('100%');\n const classes = useStyles();\n const theme = useTheme();\n const isSm = useMediaQuery(theme.breakpoints.down('sm'));\n const cachedClientId = cache.get('app:facilityId');\n const isFacilityAdmins = cachedClientId ? true : false;\n\n useEffect(() => {\n const updateWidth = () => {\n if (parentRef.current) {\n setContainerWidth(`${parentRef.current.offsetWidth}px`);\n }\n };\n\n const resizeObserver = new ResizeObserver(updateWidth);\n\n if (parentRef.current) {\n resizeObserver.observe(parentRef.current);\n updateWidth();\n }\n\n return () => resizeObserver.disconnect();\n }, [parentRef.current]);\n\n useEffect(() => {\n if (id) return;\n\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id: urlId } } = computedMatch;\n setId(urlId);\n }\n }, [id, inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n (async () => {\n const [{ data: { getElder: data } }, { data: { getElderDeliveryGroupByElder: { items: deliveryGroups } } }] = await Promise.all([\n request(getElder, { id }),\n request(getElderDeliveryGroupByElder, { elderId: id }),\n ]);\n setData(data);\n const tabs = [\n {\n label: '客戶資料',\n component: ,\n adminsOnly: true,\n },\n {\n label: '行事曆',\n component: ,\n },\n {\n label: t('送餐紀錄'),\n component: ,\n },\n {\n label: '週期性排單紀錄',\n component: ,\n },\n {\n label: t('送餐關懷'),\n component: ,\n },\n {\n label: '關懷收藏',\n component: ,\n },\n {\n label: '關懷追蹤',\n component: ,\n },\n {\n label: '表單',\n component: ,\n },\n {\n label: '社工日誌',\n component: ,\n },\n ].filter(({ adminsOnly }) => adminsOnly && isFacilityAdmins ? false : true);\n setTabs(tabs);\n })();\n }, [id]);\n global.logger.debug({ id, data, computedMatch });\n if (!id || !data) {\n return null;\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nElderDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n};\n","import React, { useEffect, useState } from 'react';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport { WEEKDAYS_SHORT, elderDeactivationReason } from '@silvergatedelivery/constants';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listElders,\n // getEldersByClient,\n getEldersByCountyByStatus,\n getEldersByClientByStatus,\n} from 'graphql/queries';\nimport {\n formatAddress,\n formatAddressLatLng,\n formatTags,\n formatAge,\n formatGender,\n formatNote,\n getDisadvantagedType,\n} from 'utilities/format';\nimport ElderDetails from 'components/ElderDetails';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport ElderEditButton from 'forms/ElderForm/ElderEditButton';\nimport { counties } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { elderStatus } from '@silvergatedelivery/constants';\nimport { useCache } from 'CacheProvider';\nimport { sortBy } from 'utilities/sorting';\n\nexport default function ElderTable({\n title = i18n.t('送餐對象'),\n description = '',\n organizationId: inOrganizationId,\n clientId: inClientId,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [listQueries, setListQueries] = useState();\n const { appGroup, selectedUserGroupParams } = useCache();\n\n const organizationId = inOrganizationId || cache.get('app:organizationId');\n const adminMode = appGroup === 'Admins';\n const orgMode = appGroup === 'OrgAdmins';\n const facilityMode = appGroup === 'FacilityAdmins';\n\n const cachedClientId = cache.get('app:facilityId');\n const clientId = inClientId || cachedClientId;\n\n const options = {\n expandableRows: !orgMode,\n isRowExpandable: () => !orgMode,\n renderExpandableRow(rowData) {\n const groupKey = appGroup === 'FacilityAdmins' ? '' : appGroup;\n const cachedVisibleColumnKey = `app:table:${groupKey}${title}${description}:visibleColumns`;\n const cacheVisiableColumns = cache.get(cachedVisibleColumnKey) ? cache.get(cachedVisibleColumnKey).split(',') : undefined;\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n\n const renderRepeatOn = (repeatOn) => {\n if (!repeatOn || repeatOn.length === 0) {\n return '';\n }\n return repeatOn.sort((a, b) => {\n if (a === 0) return 1; // move 0 to the last possition\n if (b === 0) return -1;\n return a - b;\n }).map((day) => `${WEEKDAYS_SHORT[day]}`).join('、');\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'clientId',\n label: '客戶編號',\n options: {\n display: 'excluded',\n filter: false,\n sort: true,\n },\n hideInFacilityMode: true,\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'deactivationReason',\n label: '停用原因',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender: (value) => {\n const reason = elderDeactivationReason.find((reason) => reason.value === value);\n if (reason) {\n return reason.label;\n }\n return '';\n },\n },\n },\n {\n name: 'deactivationNote',\n label: '停用備註',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '帳號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInFacilityMode: true,\n hideInOrgMode: true,\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n // filterList: clientId ? [] : [cache.get('app:location')].filter((x) => x),\n filter: false,\n sort: true,\n },\n hideInFacilityMode: true,\n },\n {\n name: 'client.name',\n label: adminMode ? '機構名稱/客戶姓名' : '機構',\n options: {\n filter: true,\n sort: true,\n },\n hideInFacilityMode: true,\n },\n {\n name: 'name',\n label: '名字',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender(name, tableMeta) {\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (orgMode && organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n return name[0] + '姓長輩';\n }\n }\n return name;\n },\n },\n },\n {\n name: 'nickname',\n label: '暱稱',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'serviceCode',\n label: '服務代碼',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'identificationCardId',\n label: '身分證字號',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender(identificationCardId, tableMeta) {\n if (!identificationCardId) return '';\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (orgMode && organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n const prefix = identificationCardId.slice(0, 3);\n const maskedPart = identificationCardId.slice(3).replace(/./g, '*');\n return prefix + maskedPart;\n }\n }\n return identificationCardId;\n },\n },\n },\n {\n name: 'caseNumber',\n label: '案號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'birthday',\n label: '年齡',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender: (birthday) => formatAge(birthday),\n filterOptions: {\n names: ['大於等於65歲', '小於65歲'],\n logic(birthday, filterVal) {\n const age = formatAge(birthday);\n if (filterVal.includes('大於等於65歲') && filterVal.includes('小於65歲')) {\n return false;\n } else if (filterVal.includes('大於等於65歲')) {\n return age < 65;\n } else if (filterVal.includes('小於65歲')) {\n return age >= 65;\n }\n return false;\n },\n },\n },\n },\n {\n name: 'gender',\n label: '性別',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender: formatGender,\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender(phone, tableMeta) {\n if (!phone) return '';\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (orgMode && organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n const prefix = phone.slice(0, 3);\n const maskedPart = phone.slice(3).replace(/./g, '*');\n return prefix + maskedPart;\n }\n }\n return phone;\n },\n },\n },\n {\n name: 'phoneNumber2',\n label: '電話2',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'phoneNumber3',\n label: '電話3',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'address',\n label: '地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: (address, tableMeta) => {\n let value = formatAddress(address);\n if (!value) return '';\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (orgMode && organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n const prefix = value.slice(0, 7);\n const maskedPart = value.slice(7).replace(/./g, '*');\n value = prefix + maskedPart;\n }\n }\n return value;\n },\n sortCompare(order) {\n return (obj1, obj2) => {\n const addr1 = formatAddress(obj1.data);\n const addr2 = formatAddress(obj2.data);\n if (addr1 === addr2) {\n return (obj1.rowData[0] + obj1.rowData[1] > obj2.rowData[0] + obj2.rowData[1] ? 1 : -1) * (order === 'asc' ? 1 : -1);\n }\n return (addr1 > addr2 ? 1 : -1) * (order === 'asc' ? 1 : -1);\n };\n },\n },\n },\n {\n name: 'address',\n label: '地址經緯度',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddressLatLng,\n },\n hideInOrgMode: true,\n },\n {\n name: 'lunchRepeatOn',\n label: '午餐送餐週期',\n edit: {\n type: 'text',\n },\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: renderRepeatOn,\n },\n },\n {\n name: 'dinnerRepeatOn',\n label: '晚餐送餐週期',\n edit: {\n type: 'text',\n },\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: renderRepeatOn,\n },\n },\n {\n name: 'client.phoneNumber',\n label: adminMode ? '機構/客戶電話' : '機構電話',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n hideInFacilityMode: true,\n },\n {\n name: 'noteForHealth',\n label: '健康備註',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender: formatNote,\n },\n },\n {\n name: 'noteForDelivery',\n label: `${t('送餐')}備註`,\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatNote,\n },\n },\n {\n name: 'noteForMeal',\n label: `${t('餐點')}備註`,\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatNote,\n },\n },\n {\n name: 'note',\n label: '備註',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatNote,\n },\n },\n {\n name: 'govQualifiedCount',\n label: '政府核定量',\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'govQualifiedPrice',\n label: '政府核定單價',\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'supervisorId',\n label: '督導ID',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'linkGroupName',\n label: '家庭代碼',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'otherSocialServices',\n label: '其它社會資源協助',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatNote,\n },\n },\n {\n name: 'tags',\n label: '標籤',\n options: {\n filter: false,\n sort: false,\n customBodyRender: formatTags,\n },\n },\n {\n name: 'isDisadvantaged',\n label: '弱勢長輩(非自費戶)',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'isIndigenous',\n label: '原住民',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'isLivingAlone',\n label: '獨居',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n if (value === 1) return '是';\n if (value === 0) return '否';\n return '不詳';\n },\n },\n },\n // {\n // name: 'disadvantagedTypes',\n // label: '弱勢身份別(舊)',\n // options: {\n // display: false,\n // filter: false,\n // sort: true,\n // },\n // },\n {\n name: 'disadvantagedTypesHistory',\n label: '弱勢身份別',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return getDisadvantagedType(value);\n },\n sortCompare(order) {\n return ({ data: value1 }, { data: value2 }) => {\n const type1 = getDisadvantagedType(value1);\n const type2 = getDisadvantagedType(value2);\n return (type1 > type2 ? 1 : -1) * (order === 'asc' ? 1 : -1);\n };\n },\n },\n },\n {\n name: 'disabilityLevel',\n label: '身障等級',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'cmsLevel',\n label: '失能等級',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'isAllowedToEnterHome',\n label: '是否同意進入長輩家中',\n type: 'checkbox',\n options: {\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'fixedDeliveryStaffFee',\n label: '固定送餐費用',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return value || '';\n },\n },\n hideInOrgMode: true,\n },\n {\n name: 'paymentBankIndex',\n label: '匯款金融機構編號',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return value || '';\n },\n },\n hideInOrgMode: true,\n },\n {\n name: 'paymentMethod',\n label: '收費方式',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return value || '';\n },\n },\n hideInOrgMode: true,\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n hideInOrgMode: true,\n },\n ].filter(({ hideInFacilityMode, hideInOrgMode }) => !(facilityMode && hideInFacilityMode) && !(orgMode && hideInOrgMode));\n\n useEffect(() => {\n if (organizationId) {\n const { organizationClientIds } = selectedUserGroupParams;\n\n setListQueries(organizationClientIds.map((clientId) => {\n return {\n name: getEldersByClientByStatus,\n params: {\n clientId,\n status: { eq: '使用中' },\n },\n };\n }));\n\n setIndexes(undefined);\n\n return;\n }\n\n if (clientId) {\n setIndexes([\n {\n name: 'byClientByStatus',\n label: '按狀態查詢',\n partitionKey: 'clientId',\n sortKey: 'status',\n fields: [\n // {\n // label: '客戶編號',\n // key: 'clientId',\n // },\n {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: ['使用中', '已停用'].map((item) => {\n return { value: item, label: item };\n }),\n },\n ],\n operation: getEldersByClientByStatus,\n },\n ]);\n\n setQueryParams({\n clientId,\n status: '使用中',\n });\n\n return;\n }\n\n setIndexes([\n {\n name: 'byCountyByStatus',\n label: '按地區查詢',\n partitionKey: 'county',\n sortKey: 'status',\n fields: [\n {\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n size: 6,\n },\n {\n label: '使用狀態',\n key: 'status',\n type: 'select',\n options: [\n { value: undefined, label: '全部' },\n ...elderStatus,\n ],\n size: 6,\n },\n {\n label: '姓名',\n key: 'name',\n comparisonOperator: 'contains',\n },\n ],\n operation: getEldersByCountyByStatus,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [\n {\n label: '姓名',\n key: 'name',\n comparisonOperator: 'contains',\n },\n // {\n // label: '創立時間',\n // key: 'createdAt',\n // type: 'datetime',\n // },\n ],\n operation: listElders,\n },\n ]);\n\n setQueryParams({\n county: cache.get('app:location') || counties[0],\n status: '使用中',\n });\n }, [organizationId, clientId]);\n\n const customDownloadData = (columns, data) => {\n const tagIndex = columns.findIndex(({ name }) => name === 'tags');\n if (tagIndex !== -1) {\n return data.map((value) => {\n if (value?.data[tagIndex]?.items) {\n value.data[tagIndex] = value.data[tagIndex].items\n .map(({ tag }) => tag)\n .sort(sortBy('name'))\n .sort(sortBy('subcategory'))\n .sort(sortBy('category'))\n .map((tag) => tag.label).join('、');\n }\n return value;\n });\n }\n return data;\n };\n\n return (\n \n \n \n );\n}\n\nElderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n organizationId: PropTypes.string,\n clientId: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Storage } from 'aws-amplify';\n\nimport Avatar from '@material-ui/core/Avatar';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n border: '1px solid rgba(255,255,255,0.3)',\n cursor: 'pointer',\n // width: '100%',\n // height: '100%',\n },\n}));\n\nexport default function ImageAvatar({ s3KeyPrefix, alt = '檔案' }) {\n const classes = useStyles();\n\n const [uri, setUri] = useState();\n const [imageUri, setImageUri] = useState();\n const [s3Key, setS3Key] = useState();\n\n const handleClick = async () => {\n const uri = imageUri || await Storage.get(`${s3KeyPrefix}/image.jpeg`);\n setImageUri(uri);\n window.open(uri, '_blank');\n };\n\n useEffect(() => {\n (async () => {\n setUri(await Storage.get(s3Key));\n })();\n }, [s3Key]);\n\n useEffect(() => {\n if (s3KeyPrefix) {\n setS3Key(`${s3KeyPrefix}/avatar.jpeg`);\n }\n }, [s3KeyPrefix]);\n\n return (\n \n );\n}\n\nImageAvatar.propTypes = {\n s3KeyPrefix: PropTypes.string,\n alt: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport { getDeliveryStaff } from 'graphql/queries';\nimport { request } from 'utilities/graph';\n\nimport ImageAvatar from 'components/ImageAvatar';\n\nexport default function DeliveryStaffDocumentTable({\n title = '資料檔案',\n description,\n deliveryStaffId,\n ...props\n}) {\n const options = {};\n const columns = [\n {\n name: 'name',\n label: '檔案名稱',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 's3Key',\n label: '縮圖',\n options: {\n filter: false,\n sort: false,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'uploadedAt',\n label: '上傳於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n ];\n\n const queryFunc = async () => {\n if (deliveryStaffId) {\n const { data: { getDeliveryStaff: data } } = await request(getDeliveryStaff, { id: deliveryStaffId });\n\n return data.documents || [];\n }\n\n return [];\n };\n\n return (\n \n \n \n );\n}\n\nDeliveryStaffDocumentTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n deliveryStaffId: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { request } from 'utilities/graph';\nimport { getDeliveryStaff } from 'graphql/queries';\nimport Terms from 'components/Terms';\nimport moment from 'moment';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n position: 'relative',\n flex: 1,\n height: '100%',\n width: '100%',\n backgroundColor: 'white',\n },\n title: {\n paddingLeft: theme.spacing(3),\n paddingTop: theme.spacing(2),\n flex: 1,\n },\n content: {\n paddingLeft: theme.spacing(6),\n paddingTop: theme.spacing(2),\n flex: 1,\n },\n}));\n\nexport default function DeliveryStaffMonthlyStatementTable({ deliveryStaffId }) {\n const classes = useStyles();\n const [deliveryStaff, setDeliveryStaff] = useState();\n\n useEffect(() => {\n (async () => {\n if (deliveryStaffId) {\n const { data: { getDeliveryStaff: data } } = await request(getDeliveryStaff, { id: deliveryStaffId });\n setDeliveryStaff(data);\n }\n })();\n }, [deliveryStaffId]);\n\n if (!deliveryStaff) {\n return <>;\n }\n\n return (\n
\n \n 合約專區\n \n \n {`送餐大使 ${deliveryStaff.name} 已於 ${moment(deliveryStaff.createdAt).tz(TIME_ZONE).format('YYYY/MM/DD')} 註冊時同意以下合約`}\n \n \n
\n );\n}\n\nDeliveryStaffMonthlyStatementTable.propTypes = {\n deliveryStaffId: PropTypes.string,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport VerticalTabs from 'components/Tab/VerticalTabs';\n// import DeliveryStaffOrderTable from 'components/DeliveryStaffOrderTable';\nimport OrderTable from 'components/OrderTable';\nimport RecurringOrderTable from 'components/RecurringOrderTable';\nimport DeliveryStaffDocumentTable from 'components/DeliveryStaffDocumentTable';\n// import NotificationTable from 'components/NotificationTable';\n// import DeliveryStaffTransactionTable from 'components/DeliveryStaffTransactionTable';\n// import DeliveryStaffStatementTable from 'components/DeliveryStaffStatementTable';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport DeliveryStaffContract from 'components/DeliveryStaffContract';\nimport DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\nimport Schedule from 'views/Admin/Schedule/Schedule';\nimport DeliveryStaffCard from 'components/Card/DeliveryStaffCard';\n\nconst useStyles = makeStyles((theme) => ({\n collapsibleGrid: {\n 'width': 'auto',\n 'transition': 'width 0.3s ease-in-out',\n '&.collapsed': {\n 'width': theme.spacing(3),\n 'marginRight': 16,\n },\n },\n}));\n\nexport default function DeliveryStaffDetails({ id: inId, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [tabs, setTabs] = useState([]);\n const parentRef = useRef(null);\n const [containerWidth, setContainerWidth] = useState('100%');\n const [isCardOpen, setIsCardOpen] = useState(true);\n const classes = useStyles();\n const theme = useTheme();\n const isSm = useMediaQuery(theme.breakpoints.down('sm'));\n\n useEffect(() => {\n const updateWidth = () => {\n if (parentRef.current) {\n setContainerWidth(`${parentRef.current.offsetWidth}px`);\n }\n };\n\n const resizeObserver = new ResizeObserver(updateWidth);\n\n if (parentRef.current) {\n resizeObserver.observe(parentRef.current);\n updateWidth();\n }\n\n return () => resizeObserver.disconnect();\n }, [parentRef.current]);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n const tabs = [\n // {\n // label: '基本資料',\n // component: ,\n // },\n {\n label: '資料檔案',\n component: ,\n },\n // {\n // label: t('送餐紀錄'),\n // component: ,\n // },\n {\n label: '行事曆',\n component: ,\n },\n {\n label: '訂單紀錄',\n component: ,\n },\n {\n label: '週期性排單',\n component: ,\n },\n {\n label: t('送餐關懷'),\n component: ,\n },\n // {\n // label: '通知紀錄',\n // component: ,\n // },\n // {\n // label: '交易紀錄',\n // component: ,\n // },\n // {\n // label: '結算紀錄',\n // component: ,\n // },\n {\n label: '合約專區',\n component: ,\n },\n ];\n setTabs(tabs);\n }, [id]);\n\n if (!id) {\n return null;\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nDeliveryStaffDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport DataTable from 'components/Table/DataTable';\nimport {\n getClient,\n getDeliveryStaffsByClientIdByIsActive,\n getDeliveryStaff,\n} from 'graphql/queries';\nimport { request } from 'utilities/graph';\nimport { formatAddress } from 'utilities/format';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport UserAvatar from 'components/UserAvatar';\nimport { deliveryStaffStatus } from '@silvergatedelivery/constants';\nimport DeliverStaffEditButton from 'forms/DeliverStaffForm/DeliverStaffEditButton';\nimport DeliveryStaffDetails from './DeliveryStaffDetails';\nimport cache from 'utilities/cache';\nimport { useCache } from 'CacheProvider';\n\nexport default function DeliveryStaffTable({\n title = i18n.t('送餐大使'),\n description = '',\n clientId: inClientId,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [assignableDeliveryStaffs, setAssignableDeliveryStaffs] = useState([]);\n const { appGroup } = useCache();\n\n const clientId = inClientId || cache.get('app:facilityId');\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const groupKey = appGroup === 'FacilityAdmins' ? '' : appGroup;\n const cachedVisibleColumnKey = `app:table:${groupKey}${title}${description}:visibleColumns`;\n const cacheVisiableColumns = cache.get(cachedVisibleColumnKey) ? cache.get(cachedVisibleColumnKey).split(',') : undefined;\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '帳號',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名字',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'licensePlate',\n label: '車牌號碼',\n edit: {\n type: 'text',\n },\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '頭像',\n options: {\n filter: false,\n sort: false,\n customBodyRender(username) {\n return (\n \n );\n },\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n },\n {\n name: 'identificationCardId',\n label: '身分證字號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'address',\n label: '地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddress,\n },\n },\n {\n name: 'documents',\n label: '資料檔案',\n options: {\n filter: true,\n sort: true,\n customBodyRender(documents) {\n return !documents || documents.length === 0 ? '未上傳' : documents.length < 6 ? '部分上傳' : '已上傳';\n },\n },\n adminsOnly: true,\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getDeliveryStaffsByClientIdByIsActive',\n label: '按狀態查詢',\n partitionKey: 'clientId',\n sortKey: 'isActive',\n fields: [{\n label: '使用狀態',\n key: 'isActive',\n type: 'select',\n options: deliveryStaffStatus,\n }],\n operation: getDeliveryStaffsByClientIdByIsActive,\n },\n ]);\n setQueryParams({\n clientId,\n isActive: 1,\n });\n if (clientId) {\n (async () => {\n const { data: { getClient: client } } = await request(getClient, { id: clientId });\n const { assignableDeliveryStaffs: assignableDeliveryStaffIds } = client;\n if (assignableDeliveryStaffIds && assignableDeliveryStaffIds.length !== 0) {\n const deliveryStaffs = (await Promise.all(\n assignableDeliveryStaffIds.map(async (id) => await request(\n getDeliveryStaff,\n { id, isActive: { eq: 1 } })))).map(({ data: { getDeliveryStaff: data } }) => data);\n setAssignableDeliveryStaffs(deliveryStaffs);\n }\n })();\n }\n }, []);\n\n return (\n \n \n {assignableDeliveryStaffs.length !== 0 && }\n \n );\n}\n\nDeliveryStaffTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n clientId: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Typography from '@material-ui/core/Typography';\nimport Table from 'components/Table/Table';\n\nimport { sortBy } from 'utilities/sorting';\nimport {\n listUsers,\n getUsersByClientIdByIsActive,\n getUsersByOrganizationIdByIsActive,\n // getClient,\n getOrganization,\n getClientsByUsernameByType,\n // getRestaurant,\n} from 'graphql/queries';\nimport { asyncListAll, request } from 'utilities/graph';\nimport UserFormEditButton from 'forms/UserForm/UserFormEditButton';\nimport { useCache } from 'CacheProvider';\nimport { getUserOrgAssigedFacilities } from 'components/Auth/helpers';\n\nconst title = '用戶列表';\nconst description = '';\n\nexport default function UserTable({\n organizationId,\n clientId,\n}) {\n const { t } = useTranslation();\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n const { appGroup } = useCache();\n const options = {};\n\n const isAdmin = appGroup === 'Admins';\n\n const columns = [\n {\n name: 'isActive',\n label: '登入權限',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n (isAdmin) ? {\n name: 'isAdmin',\n label: '管理員',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n } : undefined,\n {\n name: 'isOrgAdmin',\n label: '組織負責人',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'orgName',\n label: '組織名稱',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'isFacilityAdmin',\n label: '機構管理員',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'assignedFacilityName',\n label: '組織附屬機構',\n options: {\n filter: false,\n sort: true,\n customBodyRender(items) {\n if (items && items.length !== 0) {\n return <>\n {\n items.map((name) => {\n return
\n {name}\n
;\n })\n }\n ;\n }\n return '';\n },\n },\n },\n {\n name: 'ownedFacilityName',\n label: '私有機構',\n options: {\n filter: false,\n sort: true,\n customBodyRender(items) {\n if (items && items.length !== 0) {\n return <>\n {\n items.map((name) => {\n return
\n {name}\n
;\n })\n }\n ;\n }\n return '';\n },\n },\n },\n {\n name: 'isRestaurantOwner',\n label: `${t('餐廳')}負責人`,\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'restaurantName',\n label: `${t('餐廳')}名稱`,\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'isDeliveryStaff',\n label: t('送餐大使'),\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'isClient',\n label: '客戶',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n\n {\n name: 'username',\n label: 'ID',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n },\n {\n name: 'notificationToken',\n label: '通知Token',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'device.appVersion',\n label: 'APP版本',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'device',\n label: '作業系統',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: (device) => {\n if (!device) return '';\n return `${device.osName} ${device.osVersion}`.substr(0, 15);\n },\n },\n },\n {\n name: 'device',\n label: '設備',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: (device) => {\n if (!device) return '';\n return `${device.brand} ${device.modelName || ''}`;\n },\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n ].filter((x) => x);\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n\n let result = [];\n if (organizationId) {\n result = await asyncListAll(getUsersByOrganizationIdByIsActive, { organizationId, isActive: { eq: 1 } });\n } else\n if (clientId) {\n result = await asyncListAll(getUsersByClientIdByIsActive, { clientId, isActive: { eq: 1 } });\n } else {\n result = await asyncListAll(listUsers, { limit: 1000 });\n }\n\n const setUserData = async (user) => {\n const setFacilityName = async () => {\n user.assignedFacilityName = [];\n user.ownedFacilityName = [];\n if (user.facilityIds && user.facilityIds.length > 0) {\n const facilities = await getUserOrgAssigedFacilities(user, false);\n\n user.assignedFacilityName = facilities.map(({ name }) => name);\n }\n if (user.groups.items.find(({ group }) => group === 'FacilityAdmins')) {\n const facilities = await asyncListAll(getClientsByUsernameByType, {\n username: user.username,\n type: {\n eq: 'facility',\n },\n });\n if (!facilities.length === 0) {\n global.logger.debug(user);\n } else {\n user.ownedFacilityName = facilities.map(({ name }) => name);\n }\n }\n };\n\n const setOrgName = async () => {\n if (user.organizationId && user.organizationId !== 'N/A') {\n const { data: { getOrganization: orgData } } = await request(getOrganization, { id: user.organizationId });\n if (!orgData) {\n global.logger.debug(user);\n } else {\n user.orgName = orgData.name;\n }\n }\n };\n\n const setRestaurantName = async () => {\n if (user.restaurantOwnerId) {\n const data = await asyncListAll( /* GraphQL */ `\n query GetRestaurantsByRestaurantOwnerIdByIsActive(\n $restaurantOwnerId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByRestaurantOwnerIdByIsActive(\n restaurantOwnerId: $restaurantOwnerId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n restaurantOwnerId\n name\n }\n nextToken\n }\n }\n `, { restaurantOwnerId: user.restaurantOwnerId });\n if (!data[0]) {\n global.logger.debug(user);\n } else {\n user.restaurantName = data[0].name;\n }\n }\n };\n\n await Promise.all([\n setFacilityName(),\n setOrgName(),\n setRestaurantName(),\n ]);\n\n\n user.roles = user.roles || '';\n if (user.groups.items.find(({ group }) => group === 'Admins')) {\n user.isAdmin = true;\n }\n if (user.groups.items.find(({ group }) => group === 'OrgAdmins')) {\n user.isOrgAdmin = true;\n }\n if (user.groups.items.find(({ group }) => group === 'FacilityAdmins')) {\n user.isFacilityAdmin = true;\n }\n if (user.groups.items.find(({ group }) => group === 'DeliveryStaffs')) {\n user.isDeliveryStaff = true;\n }\n if (user.groups.items.find(({ group }) => group === 'Clients')) {\n user.isClient = true;\n }\n if (user.groups.items.find(({ group }) => group === 'RestaurantOwners')) {\n user.isRestaurantOwner = true;\n }\n\n return user;\n };\n\n result = await Promise.all(result\n .sort(sortBy('name'))\n .sort(sortBy('username'))\n .map(setUserData));\n\n setData(result);\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [lastUpdatedAt, organizationId, clientId]);\n\n return (\n setLastUpdatedAt(Date.now())}\n />\n );\n}\n\nUserTable.propTypes = {\n organizationId: PropTypes.string,\n clientId: PropTypes.string,\n};\n","import React, { useState, useEffect, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { MapContainer, TileLayer, Marker, Popup, Polyline } from 'react-leaflet';\nimport 'leaflet/dist/leaflet.css';\nimport L from 'leaflet';\nimport ReactLeafletGoogleLayer from 'react-leaflet-google-layer';\nimport SearchIcon from '@material-ui/icons/Search';\nimport IconButton from '@material-ui/core/IconButton';\nimport Box from '@material-ui/core/Box';\n\nimport { GOOGLE_KEY } from 'credentials.js';\n\nconst mapLayer = 'openstreetmap'; // google or openstreetmap\n\nconst commonIconProps = {\n shadowUrl: '/images/marker/marker-shadow.png',\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n shadowSize: [41, 41],\n shadowAnchor: [12, 41],\n className: 'leaflet-marker-icon',\n shadowClassName: 'leaflet-marker-shadow',\n};\n\nconst iconColorList = ['green', 'black', 'blue', 'gold', 'grey', 'orange', 'red', 'violet', 'yellow'];\n\nconst iconList = iconColorList.map((color) => ({\n color,\n icon: new L.Icon({\n iconUrl: `/images/marker/marker-icon-${color}.png`,\n ...commonIconProps,\n }),\n}));\n\nL.NumberedDivIcon = L.Icon.extend({\n options: {\n iconUrl: '/images/marker/marker-icon-blue.png',\n shadowUrl: '/images/marker/marker-shadow.png',\n number: '',\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n shadowSize: [41, 41],\n shadowAnchor: [12, 41],\n className: 'leaflet-div-icon',\n shadowClassName: 'leaflet-marker-shadow',\n },\n\n createIcon: function() {\n const div = document.createElement('div');\n const img = this._createImg(this.options['iconUrl']);\n img.style.backgroundColor = 'transparent';\n div.appendChild(img);\n if (this.options['number']) {\n const numdiv = document.createElement('div');\n numdiv.setAttribute('class', 'number');\n numdiv.innerHTML = this.options['number'] || '';\n div.appendChild(numdiv);\n }\n this._setIconStyles(div, 'icon');\n return div;\n },\n\n createShadow: function() {\n const div = document.createElement('div');\n const imgShadow = this._createImg(this.options['shadowUrl']);\n div.appendChild(imgShadow);\n this._setIconStyles(div, 'shadow');\n return div;\n },\n});\n\nconst getIcon = (inColor) => (iconList.find(({ color }) => color === inColor) || iconList[0]).icon;\n\nconst MapMarker = forwardRef(({ locations = [], locationFocused = undefined, showMap = false, route, onClick }, ref) => {\n const [map, setMap] = useState(null);\n const defaultCenter = { lat: 23.4851712, lng: 120.4178814 };\n\n useEffect(() => {\n if (map) {\n if (ref) ref.current = map;\n let inputCoordinates = [];\n if (locations && locations.length != 0) {\n inputCoordinates = locations.filter(({ lat, lng }) => ( lat && lng))\n .map(({ lat, lng }) => [lat, lng]);\n }\n if (locationFocused && locationFocused.lat && locationFocused.lng) {\n inputCoordinates.push([locationFocused.lat, locationFocused.lng]);\n }\n if (inputCoordinates.length !== 0) {\n const bounds = L.latLngBounds(inputCoordinates);\n map.fitBounds(bounds);\n }\n }\n }, [locations, locationFocused, map]);\n\n useEffect(() => {\n if (map && showMap) {\n map.invalidateSize();\n }\n }, [showMap]);\n\n return (\n \n {mapLayer === 'openstreetmap' && ()}\n {mapLayer === 'google' && ()}\n {locationFocused && locationFocused.lat && locationFocused.lng && (\n \n {locationFocused.name}\n \n )}\n {locations && locations.map((location, index) => (\n location.lat && location.lng &&\n \n \n \n {location.name}\n {onClick && (\n onClick(location)}\n size={'small'}\n >\n \n \n )}\n \n \n \n ))}\n {route?.length > 0 && }\n \n );\n});\n\nMapMarker.propTypes = {\n locations: PropTypes.array,\n locationFocused: PropTypes.object,\n showMap: PropTypes.bool,\n route: PropTypes.array,\n onClick: PropTypes.func,\n};\n\nexport default MapMarker;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\nexport default function CustomLaneHeader({ label, title }) {\n const { t } = useTranslation();\n return (\n
\n \n
{title}
\n
{label}
\n \n \n {`拖曳複製至右方${t('送餐群組')}。`}\n \n
\n );\n}\n\nCustomLaneHeader.propTypes = {\n label: PropTypes.string,\n title: PropTypes.string,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from '@material-ui/core/IconButton';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Button from '@material-ui/core/Button';\n\nconst CustomLaneMenu = ({ onDeleteLane, onCopyLane, onSortLane, ...args }) => {\n const [showInput, setShowInput] = useState(false);\n const [newLaneName, setNewLaneName] = useState('');\n const [menuAnchorEl, setMenuAnchorEl] = useState(null);\n\n const handleCopyClick = () => {\n setMenuAnchorEl(null);\n setShowInput(true);\n };\n\n const handleInputChange = (e) => setNewLaneName(e.target.value);\n\n const handleCopySubmit = () => {\n if (newLaneName.trim() !== '') {\n onCopyLane(args.id, newLaneName);\n setNewLaneName('');\n setShowInput(false);\n }\n };\n\n return (\n
\n setMenuAnchorEl(event.currentTarget)}\n size='small'\n >\n \n \n setMenuAnchorEl(null)}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n >\n {\n setMenuAnchorEl(null);\n onSortLane(args.id);\n }}\n >\n 規劃路線\n \n \n 複製群組\n \n {\n setMenuAnchorEl(null);\n if (window.confirm('確定要刪除此群組嗎?')) {\n onDeleteLane(args.id);\n }\n }}\n >\n 刪除群組\n \n \n {showInput && (\n
\n \n
\n {\n setShowInput(false);\n setNewLaneName('');\n }}\n color=\"default\"\n >\n 取消\n \n \n
\n
\n )}\n
\n );\n};\n\nCustomLaneMenu.propTypes = {\n onDeleteLane: PropTypes.func.isRequired,\n onCopyLane: PropTypes.func.isRequired,\n onSortLane: PropTypes.func.isRequired,\n};\n\n\nexport default CustomLaneMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { widgets } from 'react-trello';\nimport Typography from '@material-ui/core/Typography';\nimport CustomLaneMenu from './customLaneMenu';\n\nconst CustomDeliveryGroupLaneHeader = ({\n updateTitle, canAddLanes, editLaneTitle, label, title, t, ...props\n}) => {\n return (\n
\n \n \n {editLaneTitle ?\n :\n title\n }\n \n \n {label}\n \n
\n {canAddLanes && }\n
\n );\n};\n\n\nCustomDeliveryGroupLaneHeader.propTypes = {\n updateTitle: PropTypes.func,\n editLaneTitle: PropTypes.bool,\n canAddLanes: PropTypes.bool,\n label: PropTypes.string,\n title: PropTypes.string,\n t: PropTypes.func.isRequired,\n};\n\nCustomDeliveryGroupLaneHeader.defaultProps = {\n updateTitle: () => {},\n editLaneTitle: false,\n canAddLanes: false,\n};\n\nexport default CustomDeliveryGroupLaneHeader;\n","import React, { useState, useEffect, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Board, { createTranslate, components as ReactTrelloComponents } from 'react-trello';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport TextField from '@material-ui/core/TextField';\nimport { DebounceInput } from 'react-debounce-input';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { toastr } from 'react-redux-toastr';\nimport { v1 as uuidv1 } from 'uuid';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport moment from 'moment';\nimport Button from '@material-ui/core/Button';\nimport ArrowLeftIcon from '@material-ui/icons/ArrowLeft';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\n\nimport { Colors } from '@silvergatedelivery/constants';\n\nimport {\n createDeliveryGroup,\n updateDeliveryGroup,\n deleteDeliveryGroup,\n createElderDeliveryGroup,\n updateElderDeliveryGroup,\n deleteElderDeliveryGroup,\n updateRecurringOrder,\n} from 'graphql/mutations';\nimport {\n getEldersByClientByStatus,\n getDeliveryGroupsByClientByIsActive,\n getElderDeliveryGroupsByClientByStatus,\n getRecurringOrdersByDeliveryGroupByStatus,\n} from './queries';\nimport Marker from 'components/Map/Marker';\nimport { asyncListAll, request } from 'utilities/graph';\nimport { formatAddress, formatPolyline } from 'utilities/format';\nimport { sortBy } from 'utilities/sorting';\n\nimport './ElderDeliveryGroupBoard.css';\nimport CustomLaneHeader from './CustomLaneHeader';\nimport cache from 'utilities/cache';\nimport CustomDeliveryGroupLaneHeader from './CustomDeliveryGroupLaneHeader';\n\nconst convertElderToCard = (elder, elderDeliveryGroup, showAddress, hasDuplicate, isUnassigned) => {\n const { id: elderId, name, nickname, address } = elder;\n const { id: elderDeliveryGroupId } = elderDeliveryGroup;\n const cardData = {\n id: elderDeliveryGroupId || elderId,\n title: name + (nickname ? ` (${nickname})` : ''),\n description: showAddress ? formatAddress(address) : undefined,\n metadata: { elder, elderDeliveryGroup },\n };\n\n if (hasDuplicate) {\n cardData.tags = cardData.tags || [];\n cardData.tags.push({\n bgcolor: 'red',\n color: 'white',\n title: '重複出現',\n });\n }\n\n if (isUnassigned) {\n cardData.tags = cardData.tags || [];\n cardData.tags.push({\n bgcolor: 'yellow',\n color: 'black',\n title: '未分配',\n });\n }\n\n if (cardData.tags && cardData.tags.length === 0) {\n delete cardData.tags;\n }\n\n return cardData;\n};\n\nconst FIXED_SOURCE_LANE_ID = '__Source_Lane__';\n\nlet eventBus = undefined;\n\nconst useStyles = makeStyles((theme) => ({\n app: {\n position: 'relative',\n height: '100%',\n overflow: 'hidden',\n },\n centerContent: {\n width: '100%',\n height: '100%',\n transition: 'width 0.3s ease-in-out',\n overflow: 'auto',\n },\n centerContentShrink: (props) => ({\n width: props.mapWidth === '30%' ? '70%' : '30%',\n }),\n popup: {\n position: 'absolute',\n top: 0,\n right: '-100%',\n width: '30%',\n height: '100%',\n boxShadow: '-2px 0px 10px rgba(0, 0, 0, 0.2)',\n transition: 'right 0.3s ease-in-out',\n overflow: 'hidden',\n },\n popupActive: {\n right: 0,\n },\n}));\n\nexport default function ElderDeliveryGroupBoard({ clientId: inClientId }) {\n const [mapWidth, setMapWidth] = useState('30%');\n const classes = useStyles({ mapWidth });\n const { t } = useTranslation();\n const [lanes, setLanes] = useState();\n const [searchText, setSearchText] = useState('');\n const [elders, setElders] = useState([]);\n const [deliveryGroups, setDeliveryGroups] = useState([]);\n const [elderDeliveryGroups, setElderDeliveryGroups] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [showAddress, setShowAddress] = useState(false);\n const [showMap, setShowMap] = useState(false);\n const [showDuplicated, setShowDuplicated] = useState(false);\n const [showUnassigned, setShowUnassigned] = useState(false);\n const [locations, setLocations] = useState([]);\n const [locationFocused, setLocationFocused] = useState(undefined);\n const [laneSelected, setLaneSelected] = useState(undefined);\n const [isReady, setIsReady] = useState(false);\n const [sourceLanePosition, setSourceLanePosition] = useState(0);\n const [route, setRoute] = useState();\n // load here for translation purpose\n const { default: boardTranslation } = useMemo(() => require('./boardTranslation.js'), []);\n const customTranslation = useMemo(() => createTranslate(boardTranslation), [boardTranslation]);\n const clientId = inClientId || cache.get('app:facilityId');\n\n const setEventBus = (handle) => {\n eventBus = handle;\n };\n\n const onCardDelete = async (cardId, laneId) => {\n if (laneId === FIXED_SOURCE_LANE_ID) {\n return;\n }\n\n await request(deleteElderDeliveryGroup, { input: { id: cardId } });\n toastr.info(`已成功移除`);\n const cardToDelete = lanes.find(({ id }) => id === laneId).cards.find(({ id }) => id === cardId);\n const newElderDeliveryGroups = Array.from(elderDeliveryGroups);\n const indexToDelete = newElderDeliveryGroups.findIndex(\n (elderDeliveryGroup) => elderDeliveryGroup.id === cardToDelete.metadata.elderDeliveryGroup.id,\n );\n newElderDeliveryGroups.splice(indexToDelete, 1);\n setElderDeliveryGroups(newElderDeliveryGroups);\n };\n\n const handleAddLane = async ({ id, title }) => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const data = {\n id,\n clientId,\n isActive: 1,\n name: title,\n createdBy: username,\n updatedBy: username,\n };\n const { data: { createDeliveryGroup: newDeliveryGroup } } = await request(createDeliveryGroup, { input: data });\n const newDeliveryGroups = Array.from(deliveryGroups);\n newDeliveryGroups.push(newDeliveryGroup);\n setDeliveryGroups(newDeliveryGroups);\n setIsLoading(false);\n };\n\n const handleCopyLane = async (id, title ) => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const data = {\n id: uuidv1(),\n clientId,\n isActive: 1,\n name: title,\n createdBy: username,\n updatedBy: username,\n };\n const { data: { createDeliveryGroup: newDeliveryGroup } } = await request(createDeliveryGroup, { input: data });\n const deliveryGroupToCopyIndex = deliveryGroups.findIndex((group) => group.id === id);\n const newDeliveryGroups = Array.from(deliveryGroups);\n newDeliveryGroups.splice(deliveryGroupToCopyIndex + 1, 0, newDeliveryGroup);\n\n const matchedElderDeliveryGroups = elderDeliveryGroups.filter((group) => group.deliveryGroupId === id);\n const newElderDeliveryGroup = await Promise.all(\n matchedElderDeliveryGroups.map(async (group) => {\n const newGroup = {\n ...group,\n id: uuidv1(),\n deliveryGroupId: newDeliveryGroup.id,\n createdBy: username,\n updatedBy: username,\n };\n\n await request(createElderDeliveryGroup, { input: newGroup });\n return newGroup;\n }),\n );\n\n const newElderDeliveryGroups = Array.from(elderDeliveryGroups);\n newElderDeliveryGroups.push(...newElderDeliveryGroup);\n\n setDeliveryGroups(newDeliveryGroups);\n setElderDeliveryGroups(newElderDeliveryGroups);\n setIsLoading(false);\n };\n\n const handleSortLane = async (id ) => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const matchedElderDeliveryGroups = elderDeliveryGroups\n .filter((group) => group.deliveryGroupId === id)\n .filter(({ elderId }) => elders.find(({ id }) => id === elderId))\n .sort(sortBy('sortOrder'));\n const elderAddressList = matchedElderDeliveryGroups.map(({ elderId }) => {\n const elder = elders.find(({ id }) => id === elderId);\n return elder.address;\n });\n try {\n const coordinates = elderAddressList.map(({ lat, lng }) => `${lng},${lat}`).join(';');\n const response = await fetch(\n // TODO: change to our own server\n `https://router.project-osrm.org/trip/v1/bike/${coordinates}?source=first&steps=false&overview=simplified&geometries=polyline&roundtrip=false`,\n\n );\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const data = await response.json();\n if (data?.trips?.[0]?.geometry) {\n const encodedPolyline = data.trips[0].geometry;\n const decodedRoute = formatPolyline(encodedPolyline);\n setRoute(decodedRoute);\n }\n const updatedElderDeliveryGroups = await Promise.all(\n matchedElderDeliveryGroups.map(async (group, index) => {\n const newElderDeliveryGroup = {\n ...group,\n sortOrder: data.waypoints[index].waypoint_index,\n updatedBy: username,\n };\n // await request(updateElderDeliveryGroup, { input: newElderDeliveryGroup });\n return newElderDeliveryGroup;\n }),\n );\n const newElderDeliveryGroups = Array.from(elderDeliveryGroups).map((elderDeliveryGroup) => {\n return updatedElderDeliveryGroups.find(({ id }) => id === elderDeliveryGroup.id) || elderDeliveryGroup;\n });\n\n setElderDeliveryGroups(newElderDeliveryGroups);\n } catch (err) {\n toastr.error('路線規劃失敗', err.message);\n console.error(err.message);\n }\n setIsLoading(false);\n };\n\n const handleUpdateLane = async (laneId, { title, ...props }) => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const data = {\n id: laneId,\n name: title,\n updatedBy: username,\n };\n await request(updateDeliveryGroup, { input: data });\n const newDeliveryGroups = Array.from(deliveryGroups);\n const newDeliveryGroup = newDeliveryGroups.find((deliveryGroup) => deliveryGroup.id === laneId);\n Object.assign(newDeliveryGroup, data);\n setDeliveryGroups(newDeliveryGroups);\n setIsLoading(false);\n };\n\n const handleDeleteLane = async (laneId) => {\n setIsLoading(true);\n const matchedElderDeliveryGroupIds = elderDeliveryGroups\n .filter(({ deliveryGroupId }) => deliveryGroupId === laneId)\n .map(({ id }) => id);\n\n await Promise.all(\n matchedElderDeliveryGroupIds.map((id) => request(deleteElderDeliveryGroup, { input: { id } })),\n );\n await request(deleteDeliveryGroup, { input: { id: laneId } });\n const newDeliveryGroups = Array.from(deliveryGroups);\n const indexToDelete = newDeliveryGroups.findIndex((deliveryGroup) => deliveryGroup.id === laneId);\n newDeliveryGroups.splice(indexToDelete, 1);\n const newElderDeliveryGroups = Array.from(elderDeliveryGroups)\n .filter((elderDeliveryGroup) => !matchedElderDeliveryGroupIds.includes(elderDeliveryGroup.id));\n\n const recurringOrders = await asyncListAll(getRecurringOrdersByDeliveryGroupByStatus, { deliveryGroupId: laneId, status: { eq: '使用中' } });\n const username = cache.get('app:username');\n await Promise.all(recurringOrders.map(async (recurringOrder) => {\n await request(updateRecurringOrder, { input: {\n ...recurringOrder,\n updatedBy: username,\n updatedAt: moment().toISOString(),\n status: '已停用',\n } });\n }));\n if (indexToDelete < sourceLanePosition) {\n setSourceLanePosition(sourceLanePosition - 1);\n }\n setDeliveryGroups(newDeliveryGroups);\n setElderDeliveryGroups(newElderDeliveryGroups);\n setIsLoading(false);\n };\n\n const handleLaneDragEnd = async (oldIndex, newIndex) => {\n const newDeliveryGroups = Array.from(deliveryGroups);\n if (oldIndex === sourceLanePosition) {\n setSourceLanePosition(newIndex);\n } else {\n let movedDeliveryGroup = {};\n let newSourceLanePosition = sourceLanePosition;\n if (oldIndex < sourceLanePosition) {\n [movedDeliveryGroup] = newDeliveryGroups.splice(oldIndex, 1);\n newSourceLanePosition -= 1;\n } else {\n [movedDeliveryGroup] = newDeliveryGroups.splice(oldIndex - 1, 1);\n }\n if (newIndex < sourceLanePosition) {\n newDeliveryGroups.splice(newIndex, 0, movedDeliveryGroup);\n newSourceLanePosition += 1;\n } else {\n newDeliveryGroups.splice(newIndex - 1, 0, movedDeliveryGroup);\n }\n setSourceLanePosition(newSourceLanePosition);\n }\n // if oldIndex or newIndex is 0, need to call setDeliveryGroups to move the lane back\n setDeliveryGroups(newDeliveryGroups);\n };\n\n const onCardMoveAcrossLanes = async (sourceLaneId, targetLaneId, cardId, position) => {\n try {\n setIsLoading(true);\n\n const username = cache.get('app:username');\n const toCreate = [];\n const toUpdate = [];\n\n if (targetLaneId === FIXED_SOURCE_LANE_ID) {\n return;\n }\n\n const sourceLane = lanes.find(({ id }) => id === sourceLaneId);\n const oldIndex = sourceLane.cards.findIndex(({ id }) => id === cardId);\n if (sourceLaneId === targetLaneId && oldIndex === position) {\n return;\n }\n const [currentCard] = sourceLane.cards.splice(oldIndex, 1);\n\n const targetLane = lanes.find(({ id }) => id === targetLaneId);\n\n if (sourceLaneId === FIXED_SOURCE_LANE_ID) {\n const copiedCard = JSON.parse(JSON.stringify(currentCard));\n sourceLane.cards\n .splice(oldIndex, 0, copiedCard);\n }\n\n currentCard.laneId = targetLane.id;\n\n targetLane.cards\n .splice(position, 0, currentCard);\n\n targetLane.cards\n .forEach((card, index) => {\n const { id: elderDeliveryGroupId, sortOrder } = card.metadata.elderDeliveryGroup;\n const { id: elderId } = card.metadata.elder;\n\n if (!elderDeliveryGroupId) {\n const id = uuidv1();\n const elderDeliveryGroupData = {\n id,\n elderId,\n deliveryGroupId: targetLaneId,\n clientId,\n status: '使用中',\n sortOrder: index,\n createdBy: username,\n updatedBy: username,\n };\n toCreate.push(elderDeliveryGroupData);\n card.id = id;\n card.metadata.elderDeliveryGroup = elderDeliveryGroupData;\n } else if (sortOrder !== index || index === position) {\n toUpdate.push({\n id: elderDeliveryGroupId,\n deliveryGroupId: targetLaneId,\n sortOrder: index,\n updatedBy: username,\n });\n }\n });\n\n global.logger.debug('data', {\n toCreate,\n toUpdate,\n });\n if (sourceLaneId === FIXED_SOURCE_LANE_ID) {\n // to avoid the card disappear in 1st lane when moving from 1st lane to others\n eventBus.publish({ type: 'UPDATE_LANES', lanes });\n }\n await Promise.all(\n toCreate.map((data) => request(createElderDeliveryGroup, { input: data })),\n toUpdate.map((data) => request(updateElderDeliveryGroup, { input: data })),\n );\n const newElderDeliveryGroups = Array.from(elderDeliveryGroups);\n toCreate.forEach((newGroup) => {\n newElderDeliveryGroups.push(newGroup);\n });\n toUpdate.forEach((updateGroup) => {\n Object.assign(\n newElderDeliveryGroups.find((elderDeliveryGroup) => elderDeliveryGroup.id === updateGroup.id),\n updateGroup,\n );\n });\n setElderDeliveryGroups(newElderDeliveryGroups);\n toastr.info(`更新成功`);\n } catch (e) {\n toastr.error(e);\n global.logger.debug(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n }, 1000);\n }\n };\n\n const handleDragEnd = (cardId, sourceLaneId, targetLaneId, position, cardDetails) => {\n // Dont allow to drag back to the source\n if (targetLaneId === FIXED_SOURCE_LANE_ID) {\n return false;\n }\n\n // dupllicate elder\n const lane = lanes.find(({ id }) => id === targetLaneId);\n if (sourceLaneId !== targetLaneId && lane.cards.find(({ metadata }) => metadata.elder.id === cardDetails.metadata.elder.id)) {\n toastr.warning(`${cardDetails.metadata.elder.name}已經在該群組裡`);\n return false;\n }\n\n return true;\n };\n\n useEffect(() => {\n if (!clientId) return;\n\n (async () => {\n setIsLoading(true);\n const [\n elders,\n deliveryGroups,\n elderDeliveryGroups,\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, { clientId, status: { eq: '使用中' }, limit: 1000 }),\n asyncListAll(getDeliveryGroupsByClientByIsActive, { clientId, limit: 1000 }),\n asyncListAll(getElderDeliveryGroupsByClientByStatus, { clientId, status: { eq: '使用中' }, limit: 1000 }),\n ]);\n\n setElders(elders);\n setDeliveryGroups(deliveryGroups.sort(sortBy('name')));\n setElderDeliveryGroups(elderDeliveryGroups);\n\n setTimeout(() => {\n setIsLoading(false);\n setIsReady(true);\n }, 300);\n })();\n }, [clientId]);\n\n const handleCardClick = (cardInfo) => {\n if (!showMap) {\n return;\n }\n const { metadata: { elder }, laneId, id } = cardInfo;\n if (laneId !== FIXED_SOURCE_LANE_ID) {\n if (laneId === laneSelected) {\n setLocations([]);\n setLaneSelected(undefined);\n setRoute();\n return;\n }\n const laneShowOnMap = lanes.find((lane) => lane.id === laneId);\n if (laneShowOnMap) {\n const newLocations = laneShowOnMap.cards.map(({ metadata: { elder }, id }, index) => ({\n lat: elder.address.lat,\n lng: elder.address.lng,\n name: elder.name,\n id,\n index: index + 1,\n }));\n setLocations(newLocations);\n setRoute();\n }\n setLaneSelected(laneId);\n } else {\n if (locationFocused && locationFocused.id === id) {\n setLocationFocused(undefined);\n return;\n }\n setLocationFocused({\n lat: elder.address.lat,\n lng: elder.address.lng,\n name: elder.name,\n id,\n });\n }\n };\n\n useEffect(() => {\n if (!isReady) return;\n\n const allElders = elders\n .filter((({ name }) => name.toLowerCase().includes(searchText.toLowerCase())))\n .sort(sortBy('name'));\n\n const duplicateElderIds = [];\n const unassignedElderIds = [];\n\n if (showUnassigned) {\n allElders.forEach(({ id }) => {\n const matchedGroups = elderDeliveryGroups.filter(({ elderId }) => elderId === id);\n if (matchedGroups.length === 0) {\n unassignedElderIds.push(id);\n }\n });\n }\n\n const firstLane = {\n id: FIXED_SOURCE_LANE_ID,\n title: `${t('送餐對象')}清單`,\n label: `${allElders.length}`,\n cards: allElders.map((elder) => {\n const isUnassigned = unassignedElderIds.includes(elder.id);\n return convertElderToCard(elder, {}, showAddress, false, isUnassigned);\n }),\n editLaneTitle: false,\n disallowAddingCard: true,\n hideCardDeleteIcon: true,\n droppable: false,\n style: {\n backgroundColor: Colors.light,\n border: `1px solid ${Colors.light}`,\n width: showAddress ? 250 : 150,\n minWidth: showAddress ? 250 : 150,\n maxHeight: 'calc(100vh - 220px)',\n },\n };\n\n if (showDuplicated) {\n allElders.forEach(({ id }) => {\n const matchedGroups = elderDeliveryGroups.filter(({ elderId }) => elderId === id);\n if (matchedGroups.length > 1) {\n duplicateElderIds.push(id);\n }\n });\n }\n\n const convertDeliveryGroupToLane = (id, name) => {\n const matchedElderDeliveryGroups = elderDeliveryGroups\n .filter(({ deliveryGroupId }) => deliveryGroupId === id)\n .filter(({ elderId }) => allElders.find(({ id }) => id === elderId))\n .sort(sortBy('sortOrder'));\n\n return {\n id,\n title: name,\n cards: matchedElderDeliveryGroups.map((elderDeliveryGroup) => {\n const elder = allElders.find(({ id }) => id === elderDeliveryGroup.elderId);\n const hasDuplicate = duplicateElderIds.includes(elder.id);\n return convertElderToCard(elder, elderDeliveryGroup, showAddress, hasDuplicate, false);\n }),\n disallowAddingCard: true,\n droppable: true,\n style: {\n backgroundColor: showMap && id === laneSelected ? '#739fbf' : '#e3e3e3',\n width: showAddress ? 250 : 150,\n minWidth: showAddress ? 250 : 150,\n maxHeight: 'calc(100vh - 220px)',\n },\n };\n };\n const data = deliveryGroups.map(({ id, name }) => {\n return convertDeliveryGroupToLane(id, name);\n });\n data.splice(sourceLanePosition, 0, firstLane);\n setLanes(data);\n\n if (laneSelected) {\n const laneShowOnMap = data.find((lane) => lane.id === laneSelected);\n if (laneShowOnMap) {\n const newLocations = laneShowOnMap.cards.map(({ metadata: { elder }, id }, index) => ({\n lat: elder.address.lat,\n lng: elder.address.lng,\n name: elder.name,\n id,\n index: index + 1,\n }));\n setLocations(newLocations);\n } else {\n setLocations([]);\n setLaneSelected(undefined);\n setRoute();\n }\n }\n }, [isReady, elders, deliveryGroups, elderDeliveryGroups, searchText, showAddress, laneSelected, showMap, showDuplicated, showUnassigned]);\n\n const toggleMapWidth = () => {\n setMapWidth((prevWidth) => (prevWidth === '30%' ? '70%' : '30%'));\n };\n\n const mapRef = useRef();\n\n useEffect(() => {\n if (mapRef.current) {\n mapRef.current.invalidateSize();\n }\n }, [mapWidth]);\n\n if (!lanes) return null;\n\n return (\n
\n
\n \n \n \n {\n setSearchText(e.target.value);\n }}\n element={TextField}\n id={`search-text`}\n label=\"\"\n value={searchText}\n type={'text'}\n placeholder=\"搜尋\"\n variant=\"outlined\"\n margin=\"dense\"\n // disabled={isLoading}\n />\n
\n {isLoading &&\n }\n
\n {\n setShowAddress(e.target.checked);\n }}\n />\n }\n label={'顯示地址'}\n />\n {\n setShowMap(e.target.checked);\n }}\n />\n }\n label={'顯示地圖'}\n />\n {\n setShowDuplicated(e.target.checked);\n }}\n />\n }\n label={'顯示重複設定'}\n />\n {\n setShowUnassigned(e.target.checked);\n }}\n />\n }\n label={'顯示未分配'}\n />\n
\n
\n {elders.length > 0 &&\n \n ,\n LaneHeader: (args) => {\n // global.logger.debug('lane', args);\n if (args.id === FIXED_SOURCE_LANE_ID) {\n return ;\n }\n let backgroundColor = 'white';\n if (showMap && args.laneId === laneSelected) {\n backgroundColor = '#cad9e6';\n }\n return ;\n },\n Card: (args) => {\n const onClick = () => {\n handleCardClick(args);\n };\n let backgroundColor = Colors.light2;\n if (args.laneId === FIXED_SOURCE_LANE_ID) {\n if (showMap && locationFocused && locationFocused.id === args.id) {\n backgroundColor = Colors.primaryLight;\n }\n return ;\n } else if (showMap && args.laneId === laneSelected) {\n backgroundColor = Colors.light2;\n }\n\n return ;\n },\n }}\n />\n }\n
\n
\n
\n \n {mapWidth === '30%' ? : }\n \n \n
\n
\n );\n}\n\nElderDeliveryGroupBoard.propTypes = {\n clientId: PropTypes.string,\n};\n","export const getEldersByClientByStatus = /* GraphQL */ `\n query GetEldersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getDeliveryGroupsByClientByIsActive = /* GraphQL */ `\n query GetDeliveryGroupsByClientByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryGroupsByClientByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n isActive\n name\n description\n note\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n\nexport const getElderDeliveryGroupsByClientByStatus = /* GraphQL */ `\n query GetElderDeliveryGroupsByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDeliveryGroupsByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n }\n nextToken\n }\n }\n`;\n\nexport const getRecurringOrdersByDeliveryGroupByStatus = /* GraphQL */ `\n query GetRecurringOrdersByDeliveryGroupByStatus(\n $deliveryGroupId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRecurringOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRecurringOrdersByDeliveryGroupByStatus(\n deliveryGroupId: $deliveryGroupId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n elderId\n deliveryGroupId\n deliveryStaffId\n restaurantId\n deliveryBy\n mealSlot\n category\n status\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","/* eslint-disable quotes, comma-dangle */\nimport {\n processStatus,\n} from '@silvergatedelivery/constants';\n\nexport default {\n \"title\": \"捐贈紀錄\",\n \"type\": \"object\",\n \"required\": [\n \"status\", \"clientId\",\n \"count\", \"unit\", \"unitValue\",\n \"totalValue\"\n ],\n \"properties\": {\n \"status\": {\n \"type\": \"string\",\n \"title\": \"狀態\",\n 'enum': processStatus.map(({ value }) => value),\n 'enumNames': processStatus.map(({ label }) => label),\n 'default': processStatus[0].value,\n },\n \"clientId\": {\n \"type\": \"string\",\n \"title\": \"客戶\"\n },\n // \"username\": {\n // \"type\": [\"string\", \"null\"],\n // \"title\": \"客戶帳號\"\n // },\n // \"transactionId\": {\n // \"type\": [\"string\", \"null\"],\n // \"title\": \"交易紀錄編號\"\n // },\n \"sponsorProgramId\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"捐贈項目\"\n },\n \"count\": {\n \"type\": \"number\",\n \"title\": \"數量\",\n \"default\": 1\n },\n \"unit\": {\n \"type\": \"string\",\n \"title\": \"單位 (ex: 餐/堂/箱)\",\n \"default\": \"元\"\n },\n \"unitValue\": {\n \"type\": \"number\",\n \"title\": \"單位價格\",\n \"default\": 100\n },\n \"totalValue\": {\n \"type\": \"number\",\n \"title\": \"總金額\",\n \"default\": 100\n },\n \"note\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"備註\"\n }\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { createSponsorship, updateSponsorship } from 'graphql/mutations';\nimport schema from './schema.js';\nimport uiSchema from './uiSchema';\n\nexport default function Form({ ...props }) {\n const createFunc = async (data) => {\n const { data: { getClient: client } } = await request( /* GraphQL */ `\n query GetClient($id: ID!) {\n getClient(id: $id) {\n id\n username\n }\n }\n `, { id: data.clientId });\n\n data = Object.assign(data, {\n fulfilledCount: 0,\n fulfilledValue: 0,\n username: client.username || 'N/A',\n });\n\n await request(createSponsorship, { input: data });\n };\n\n const updateFunc = async (data) => {\n delete data.client;\n delete data.sponsorProgram;\n delete data.fulfillments;\n\n await request(updateSponsorship, { input: data });\n };\n\n return (\n \n );\n}\n\nForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport Form from './SponsorshipForm';\n\nexport default function Button({ ...props }) {\n return (\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { processStatus } from '@silvergatedelivery/constants';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listSponsorshipFulfillments,\n getSponsorshipFulfillmentsBySponsorshipIdByStatus,\n} from 'graphql/queries';\n// import EditButton from 'forms/SponsorshipForm/SponsorshipEditButton';\nimport { sortBy } from 'utilities/sorting';\nimport ProcessStatusChip from 'components/ProcessStatusChip';\nimport LinkButton from 'components/Table/LinkButton';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'unit',\n label: '單位',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'unitValue',\n label: '單位價格',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'fulfilledAt',\n label: '完成於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderId',\n label: '訂單',\n options: {\n filter: false,\n sort: true,\n customBodyRender(id) {\n if (!id) return null;\n return (\n \n );\n },\n },\n },\n {\n name: 'elderId',\n label: '長輩',\n options: {\n filter: false,\n sort: true,\n customBodyRender(id) {\n if (!id) return null;\n return (\n \n );\n },\n },\n },\n {\n name: 'restaurantId',\n label: '餐廳',\n options: {\n filter: false,\n sort: true,\n customBodyRender(id) {\n if (!id) return null;\n return (\n \n );\n },\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n];\n\nexport default function SponsorshipFulfillmentTable({\n title = '捐贈細項進度紀錄',\n description,\n sponsorshipId,\n showQueryGenerator,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n useEffect(() => {\n if (sponsorshipId) {\n setIndexes([\n {\n name: 'getSponsorshipFulfillmentsBySponsorshipIdByStatus',\n label: '按贊助紀錄狀態查詢',\n partitionKey: 'sponsorshipId',\n sortKey: 'status',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: processStatus,\n }],\n operation: getSponsorshipFulfillmentsBySponsorshipIdByStatus,\n },\n ]);\n setQueryParams({\n sponsorshipId,\n status: processStatus[0].value,\n });\n } else {\n setIndexes([\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listSponsorshipFulfillments,\n },\n ]);\n setQueryParams({\n status: processStatus[0].value,\n });\n }\n }, [sponsorshipId]);\n\n return (\n \n );\n}\n\nSponsorshipFulfillmentTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n sponsorshipId: PropTypes.string,\n showQueryGenerator: PropTypes.bool,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { processStatus } from '@silvergatedelivery/constants';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listSponsorships,\n getSponsorshipsByStatusByCreatedAt,\n getSponsorshipsByClientIdByStatus,\n} from 'graphql/queries';\nimport EditButton from 'forms/SponsorshipForm/SponsorshipEditButton';\nimport { sortBy } from 'utilities/sorting';\nimport ProcessStatusChip from 'components/ProcessStatusChip';\nimport LinkButton from 'components/Table/LinkButton';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport SponsorshipFulfillmentTable from 'components/SponsorshipFulfillmentTable';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'sponsorProgram.name',\n label: '項目',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'client',\n label: '客戶',\n options: {\n filter: false,\n sort: true,\n customBodyRender(client = {}) {\n return (\n \n );\n },\n },\n },\n {\n name: 'count',\n label: '數量',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'unit',\n label: '單位',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'unitValue',\n label: '單位價格',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'totalValue',\n label: '總金額',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'fulfilledCount',\n label: '已使用的數量',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'fulfilledValue',\n label: '已使用的金額',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n];\n\nexport default function SponsorshipTable({\n title = '捐贈紀錄',\n description,\n clientId,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n\n useEffect(() => {\n if (clientId) {\n setIndexes([\n {\n name: 'getSponsorshipsByClientIdByStatus',\n label: '按客戶狀態查詢',\n partitionKey: 'clientId',\n sortKey: 'status',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: processStatus,\n }],\n operation: getSponsorshipsByClientIdByStatus,\n },\n ]);\n setQueryParams({\n clientId,\n status: processStatus[0].value,\n });\n } else {\n setIndexes([\n {\n name: 'getSponsorshipProgramsByIsActiveByCreatedAt',\n label: '按狀態查詢',\n partitionKey: 'status',\n sortKey: 'createdAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: processStatus,\n }],\n operation: getSponsorshipsByStatusByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listSponsorships,\n },\n ]);\n setQueryParams({\n status: processStatus[0].value,\n });\n }\n }, [clientId]);\n\n return (\n \n );\n}\n\nSponsorshipTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n clientId: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Table from 'components/Table/Table';\nimport {\n getNotificationsByDeliveryStaffIdByCreatedAt,\n getNotificationsByClientIdByCreatedAt,\n getNotificationsByRestaurantOwnerIdByCreatedAt,\n listNotifications,\n} from 'graphql/queries';\nimport { request } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\n\nconst title = '通知紀錄';\nconst description = '';\n\nexport default function NotificationTable({\n deliveryStaffId,\n restaurantOwnerId,\n clientId,\n}) {\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState();\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'id',\n label: 'ID',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'type',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'statusMsg',\n label: '狀態紀錄',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'subject',\n label: '標題',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'text',\n label: '內容',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'shouldBeSentAt',\n label: '預計送出時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'sentAt',\n label: '送出於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n\n let records;\n if (deliveryStaffId) {\n const { data: { getNotificationsByDeliveryStaffIdByCreatedAt: { items } } } = await request(getNotificationsByDeliveryStaffIdByCreatedAt, {\n deliveryStaffId,\n sortDirection: 'DESC',\n limit: 100,\n });\n records = items;\n } else\n if (restaurantOwnerId) {\n const { data: { getNotificationsByRestaurantOwnerIdByCreatedAt: { items } } } = await request(getNotificationsByRestaurantOwnerIdByCreatedAt, {\n restaurantOwnerId,\n sortDirection: 'DESC',\n limit: 100,\n });\n records = items;\n } else\n if (clientId) {\n const { data: { getNotificationsByClientIdByCreatedAt: { items } } } = await request(getNotificationsByClientIdByCreatedAt, {\n clientId,\n sortDirection: 'DESC',\n limit: 100,\n });\n records = items;\n } else {\n const { data: { listEvents: { items } } } = await request(listNotifications, { limit: 100 });\n records = items;\n }\n\n setData(records.sort(sortBy('createdAt', true)));\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [deliveryStaffId, restaurantOwnerId, lastUpdatedAt]);\n\n return (\n setLastUpdatedAt(Date.now())}\n />\n );\n}\n\nNotificationTable.propTypes = {\n deliveryStaffId: PropTypes.string,\n restaurantOwnerId: PropTypes.string,\n clientId: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listRestaurants,\n getRestaurantsByCountyByIsActive,\n getRestaurantsByClientByIsActive,\n getRestaurantsByRestaurantOwnerIdByIsActive,\n getClient,\n getRestaurant,\n} from 'graphql/queries';\nimport { request } from 'utilities/graph';\nimport {\n formatAddress,\n formatAddressLatLng,\n formatTags,\n} from 'utilities/format';\nimport RestaurantDetails from 'components/RestaurantDetails';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport RestaurantEditButton from 'forms/RestaurantForm/RestaurantEditButton';\nimport ImagePreviewAvatar from 'components/ImagePreviewAvatar';\nimport {\n counties,\n LAUNCH_DATE,\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { getClientIdSchema } from 'forms/schemas';\nimport { useCache } from 'CacheProvider';\n\nconst past = moment(LAUNCH_DATE).tz(TIME_ZONE).format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function RestaurantTable({\n title = i18n.t('餐廳'),\n description,\n restaurantOwnerId,\n clientId: inClientId,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [listQuery, setListQuery] = useState();\n const [clientOptions, setClientOptions] = useState([]);\n const [orderableRestaurants, setOrderableRestaurants] = useState([]);\n const { appGroup } = useCache();\n\n const clientId = inClientId || cache.get('app:facilityId');\n const adminMode = appGroup === 'Admins';\n const orgMode = appGroup === 'OrgAdmins';\n const facilityMode = appGroup === 'FacilityAdmins';\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'isActive',\n label: '使用中',\n type: 'checkbox',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'restaurantOwnerId',\n label: '管理員 ID',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'owner',\n label: '管理員帳號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'imageS3Keys',\n label: '圖片',\n options: {\n filter: false,\n sort: false,\n customBodyRender(imageS3Keys) {\n return (\n \n );\n },\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n // filterList: [cache.get('app:location')].filter((x) => x),\n filter: true,\n sort: true,\n },\n },\n {\n name: 'clientId',\n label: '機構',\n options: {\n filter: true,\n sort: true,\n customBodyRender(clientId) {\n if (clientOptions) {\n return (clientOptions.find(({ id }) => id === clientId) || {}).name || '';\n }\n return '';\n },\n },\n hideInFacilityMode: true,\n },\n {\n name: 'isActive',\n label: '使用中',\n type: 'checkbox',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'isPublic',\n label: '公開',\n type: 'checkbox',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'freeDelivery',\n label: '免運費',\n type: 'checkbox',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'category',\n label: '類別',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名稱',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'tags',\n label: '標籤',\n options: {\n filter: false,\n sort: false,\n customBodyRender: formatTags,\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'address',\n label: '地址',\n options: {\n filter: false,\n sort: true,\n customBodyRender: formatAddress,\n },\n },\n {\n name: 'address',\n label: '地址經緯度',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddressLatLng,\n },\n },\n {\n name: 'serviceAreas',\n label: '服務範圍',\n options: {\n filter: false,\n sort: true,\n customBodyRender(serivceAreas) {\n if (serivceAreas && serivceAreas.length !== 0) {\n return serivceAreas.map(({ county, district }) => county + district).join('、 ');\n }\n return '';\n },\n },\n },\n {\n name: 'isAddedToPandago',\n label: 'Pandago',\n type: 'checkbox',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ].filter(({ hideInFacilityMode, hideInOrgMode }) => !(facilityMode && hideInFacilityMode) && !(orgMode && hideInOrgMode));\n\n useEffect(() => {\n if (restaurantOwnerId) {\n setListQuery({\n name: getRestaurantsByRestaurantOwnerIdByIsActive,\n params: {\n restaurantOwnerId,\n },\n });\n\n return;\n }\n\n if (clientId) {\n setListQuery({\n name: getRestaurantsByClientByIsActive,\n params: {\n clientId,\n },\n });\n (async () => {\n const { data: { getClient: client } } = await request(getClient, { id: clientId });\n const { orderableRestaurants: orderableRestaurantIds } = client;\n if (orderableRestaurantIds && orderableRestaurantIds.length !== 0) {\n const restaurants = (await Promise.all(\n orderableRestaurantIds.map(async ({ id }) => await request(\n getRestaurant,\n { id, isActive: { eq: 1 } })))).map(({ data: { getRestaurant: data } }) => data);\n setOrderableRestaurants(restaurants);\n }\n })();\n\n return;\n }\n\n setIndexes([\n {\n name: 'getRestaurantsByCountyByIsActive',\n label: '按地區/狀態查詢',\n partitionKey: 'county',\n sortKey: 'isActive',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n }, {\n label: '使用狀態',\n key: 'isActive',\n type: 'select',\n options: [\n { value: undefined, label: '全部' },\n { value: 1, label: '使用中' },\n { value: 0, label: '已停用' },\n ],\n }],\n operation: getRestaurantsByCountyByIsActive,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '創立時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: listRestaurants,\n },\n ]);\n setQueryParams({\n county: cache.get('app:location') || counties[0],\n isActive: undefined,\n createdAt: {\n from: past,\n to: todayDate,\n },\n });\n }, [restaurantOwnerId]);\n\n useEffect(() => {\n if (adminMode) {\n (async () => {\n const [\n clientOptions,\n ] = await Promise.all([\n getClientIdSchema(null, '所屬機構', true),\n ]);\n setClientOptions(clientOptions);\n })();\n }\n }, []);\n\n return (\n \n \n {orderableRestaurants.length !== 0 && }\n \n );\n}\n\nRestaurantTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n restaurantOwnerId: PropTypes.string,\n clientId: PropTypes.string,\n};\n","/* eslint-disable quotes, comma-dangle */\nimport {\n membershipStatus,\n} from '@silvergatedelivery/constants';\n\nexport default {\n \"title\": \"付費會員\",\n \"type\": \"object\",\n \"required\": [\n \"clientId\", \"status\", \"transactionId\", \"membershipProgramId\",\n \"expiredAt\", \"discountRule\", \"discountPercentage\"\n ],\n \"properties\": {\n \"clientId\": {\n \"type\": \"string\",\n \"title\": \"客戶編號\"\n },\n \"status\": {\n \"type\": \"string\",\n \"title\": \"狀態\",\n 'enum': membershipStatus.map(({ value }) => value),\n 'enumNames': membershipStatus.map(({ label }) => label),\n 'default': membershipStatus[0].value,\n },\n \"transactionId\": {\n \"type\": \"string\",\n \"title\": \"交易編號\"\n },\n \"membershipProgramId\": {\n \"type\": \"string\",\n \"title\": \"會員項目編號\"\n },\n \"expiredAt\": {\n \"type\": \"string\",\n \"title\": \"截止於\",\n \"format\": \"datetime\"\n },\n \"discountRule\": {\n \"type\": \"string\",\n \"title\": \"折扣名稱\"\n },\n \"discountPercentage\": {\n \"type\": \"number\",\n \"title\": \"折扣\"\n }\n }\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { v1 as uuidv1 } from 'uuid';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { getMembership } from 'graphql/queries';\nimport { createMembership, updateMembership } from 'graphql/mutations';\nimport schema from './schema.js';\nimport uiSchema from './uiSchema';\n\nexport default function MembershipForm({ ...props }) {\n const [id, setId] = useState();\n\n const onComplete = async () => {\n if (props.onComplete) {\n const { data: { getMembership: data } } = await request(getMembership, { id });\n\n props.onComplete(data);\n }\n };\n\n const createFunc = async (data) => {\n await request(createMembership, { input: data });\n await onComplete();\n };\n\n const updateFunc = async (data) => {\n await request(updateMembership, { input: data });\n await onComplete();\n };\n\n useEffect(() => {\n if (props.formData && props.formData.id) {\n setId(props.formData.id);\n } else {\n setId(uuidv1());\n }\n }, [props.formData]);\n\n return (\n \n \n );\n}\n\nMembershipForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport Form from './MembershipForm';\n\nexport default function MembershipFormEditButton({ ...props }) {\n return (\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function CustomStatusChip({ value, mappings = [] }) {\n const classes = useStyles();\n\n const matchedOrderStatus = mappings.find((item) => item.value === value);\n const label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nCustomStatusChip.propTypes = {\n value: PropTypes.string,\n mappings: PropTypes.array,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listMemberships,\n getMembershipByStatusByExpiredAt,\n getMembershipByClientIdByStatus,\n} from 'graphql/queries';\nimport EditButton from 'forms/MembershipForm/MembershipFormEditButton';\nimport { sortBy } from 'utilities/sorting';\nimport LinkButton from 'components/Table/LinkButton';\nimport CustomStatusChip from 'components/CustomStatusChip';\nimport {\n membershipStatus,\n} from '@silvergatedelivery/constants';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'client',\n label: '客戶',\n options: {\n filter: false,\n sort: true,\n customBodyRender(client = {}) {\n return (\n \n );\n },\n },\n },\n {\n name: 'createdAt',\n label: '開始於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'expiredAt',\n label: '截止於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'discountRule',\n label: '折扣描述',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'discountPercentage',\n label: '折扣',\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n];\n\nexport default function MembershipTable({\n title = '付費會員',\n description,\n clientId,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n useEffect(() => {\n if (clientId) {\n setIndexes([\n {\n name: 'getMembershipByClientIdByStatus',\n label: '按客戶查詢',\n partitionKey: 'clientId',\n sortKey: 'tatus',\n fields: [{\n label: '客戶ID',\n key: 'clientId',\n }],\n operation: getMembershipByClientIdByStatus,\n },\n ]);\n setQueryParams({\n clientId,\n });\n return;\n }\n setIndexes([\n {\n name: 'getMembershipByStatusByExpiredAt',\n label: '按狀態查詢',\n partitionKey: 'status',\n sortKey: 'expiredAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [\n { value: 'active', label: '使用中' },\n { value: 'expired', label: '已過期' },\n ],\n }],\n operation: getMembershipByStatusByExpiredAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listMemberships,\n },\n ]);\n setQueryParams({\n status: 'active',\n });\n }, [clientId]);\n\n return (\n \n );\n}\n\nMembershipTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n clientId: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport moment from 'moment-timezone';\n\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\n\nconst useStyles = makeStyles((theme) => ({\n input: {\n width: 150,\n marginRight: 24,\n border: '1px solid #d1d3d8',\n },\n}));\n\nexport default function DateRangeSelector({\n startDate,\n endDate,\n onUpdate,\n}) {\n const classes = useStyles();\n\n const [isDirty, setIsDirty] = useState(false);\n const [desireStartDate, setDesireStartDate] = useState();\n const [desireEndDate, setDesireEndDate] = useState();\n\n const handleUpdate = () => {\n if (onUpdate) {\n onUpdate({\n startDate: desireStartDate,\n endDate: desireEndDate,\n });\n setIsDirty(false);\n }\n };\n\n useEffect(() => {\n setDesireStartDate(startDate);\n setDesireEndDate(endDate);\n }, [startDate, endDate]);\n\n if (!startDate || !endDate) return null;\n\n return (
\n moment(v).format('YYYY-MM-DD')}\n onDayChange={(day) => {\n setDesireStartDate(moment(day).toISOString());\n setIsDirty(true);\n }}\n dayPickerProps={{\n disabledDays: {\n after: new Date(desireEndDate),\n },\n }}\n inputProps={{\n className: classes.input,\n }}\n />\n moment(v).format('YYYY-MM-DD')}\n onDayChange={(day) => {\n setDesireEndDate(moment(day).toISOString());\n setIsDirty(true);\n }}\n dayPickerProps={{\n disabledDays: {\n before: new Date(desireStartDate),\n },\n }}\n inputProps={{\n className: classes.input,\n }}\n />\n \n
);\n}\n\n\nDateRangeSelector.propTypes = {\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n onUpdate: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport { green, red } from '@material-ui/core/colors';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\nexport default function SummaryCard({ title, value, prevValue, unit = '', appendix = '', period, elevation=1 }) {\n const classes = useStyles();\n\n let p;\n switch (period) {\n case 'year':\n p = '去年';\n break;\n case 'month':\n p = '上個月';\n break;\n case 'week':\n p = '上週';\n break;\n case 'day':\n default:\n p = '昨日';\n break;\n }\n\n const showDiff = prevValue !== void(0);\n const diff = +(((prevValue ? (value - prevValue) / prevValue : value) * 100).toFixed(0));\n const isSame = diff === 0;\n const isIncreased = diff > 0;\n const desc = isSame ? `與${p}相同` : `與${p}(${unit}${prevValue}${appendix})相比 ${isIncreased?'增加':'減少'} ${Math.abs(diff)}%`;\n\n return (\n \n \n {title}\n \n \n {showDiff && (isSame ? '' :\n isIncreased ?\n :\n )}\n {unit}{value}{appendix}\n \n {showDiff &&\n \n {desc}\n }\n );\n}\n\n\nSummaryCard.propTypes = {\n title: PropTypes.string,\n value: PropTypes.number,\n prevValue: PropTypes.number,\n unit: PropTypes.string,\n appendix: PropTypes.string,\n period: PropTypes.string,\n elevation: PropTypes.number,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsivePie } from '@nivo/pie';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function PieCard({ title, data: inData, data2: inData2, elevation=1 }) {\n const classes = useStyles();\n\n let data = inData;\n let data2 = inData2;\n if (data && !Array.isArray(data)) {\n data = Object.keys(data).map((key) => {\n const { value, color } = data[key];\n return { id: key, label: key, value, color };\n });\n }\n\n if (data2 && !Array.isArray(data2)) {\n data2 = Object.keys(data2).map((key) => {\n const { value, color } = data[key];\n return { id: key, label: key, value, color };\n });\n }\n\n const colorFunc = data[0] && data[0].color ? ({ data }) => data.color : { scheme: 'nivo' };\n\n // global.logger.debug({ data, data2 });\n\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\n\nPieCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.any,\n data2: PropTypes.any,\n elevation: PropTypes.number,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsiveBar } from '@nivo/bar';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function BarCard({ title, data = [], dataKeys = [], mode = 'grouped', colors, elevation=1 }) {\n const classes = useStyles();\n // global.logger.debug({ data, dataKeys });\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\n\nBarCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.array,\n dataKeys: PropTypes.array,\n mode: PropTypes.string,\n colors: PropTypes.any,\n elevation: PropTypes.number,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsiveLine } from '@nivo/line';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function LineCard({ title, data = [], colors, elevation=1 }) {\n const classes = useStyles();\n\n return (\n \n \n {title}\n \n \n
\n (\n \n {point.serieId}
\n {point.data.xFormatted} : {point.data.yFormatted}\n
\n )}\n useMesh={true}\n legends={[\n {\n anchor: 'bottom-right',\n direction: 'column',\n justify: false,\n translateX: 100,\n translateY: 0,\n itemsSpacing: 0,\n itemDirection: 'left-to-right',\n itemWidth: 80,\n itemHeight: 20,\n itemOpacity: 0.85,\n symbolSize: 20,\n symbolShape: 'circle',\n effects: [\n {\n on: 'hover',\n style: {\n itemOpacity: 1,\n },\n },\n ],\n },\n ]}\n />\n
\n \n );\n}\n\n\nLineCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.array,\n colors: PropTypes.any,\n elevation: PropTypes.number,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsiveScatterPlot } from '@nivo/scatterplot';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function PlotCard({ title, data = [], elevation=1 }) {\n const classes = useStyles();\n // global.logger.debug({ data });\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\nPlotCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.array,\n elevation: PropTypes.number,\n};\n","import moment from 'moment-timezone';\n\nimport {\n getIssuesByClientByCreatedAt,\n getOrdersByClientByCreatedAt,\n getAuditTrailsByFacilityIdByTimestamp,\n} from 'graphql/queries';\nimport {\n getOrdersByClientByDate,\n} from './queries';\nimport { asyncListAll, asyncListAllAndUpdateLastItem } from 'utilities/graph';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nexport function getStartEndByPeriodName(inPeriod) {\n const [period, startBaseline, endBaseline, exactStartDate, exactEndDate] = inPeriod.split('/');\n if (exactStartDate && exactEndDate) {\n const start = moment(exactStartDate).tz(TIME_ZONE).startOf('day');\n const end = moment(exactEndDate).tz(TIME_ZONE).startOf('day');\n return {\n start: start.toISOString(),\n end: end.toISOString(),\n startFormat: start.format('YYYY-MM-DD'),\n endFormat: end.format('YYYY-MM-DD'),\n };\n }\n const startBaseNumber = parseInt(startBaseline || '0');\n const endBaseNumber = parseInt(endBaseline || '0');\n const start = moment().add(startBaseNumber, `${period}s`).tz(TIME_ZONE).startOf(period);\n const end = moment().add(endBaseNumber, `${period}s`).tz(TIME_ZONE).endOf(period);\n return {\n start: start.toISOString(),\n end: end.toISOString(),\n prevStart: moment().tz(TIME_ZONE).add(-1 + startBaseNumber, `${period}s`).startOf(period).toISOString(),\n prevEnd: moment().tz(TIME_ZONE).add(-1 + endBaseNumber, `${period}s`).endOf(period).toISOString(),\n startFormat: start.format('YYYY-MM-DD'),\n endFormat: end.format('YYYY-MM-DD'),\n };\n}\n\nexport function getDatesBetween(startISO, endISO, format = 'YYYY-MM-DD') {\n const startDate = moment(startISO);\n const endDate = moment(endISO);\n const dates = [];\n\n while (startDate.isBefore(endDate) || startDate.isSame(endDate)) {\n dates.push(startDate.format(format));\n startDate.add(1, 'days');\n }\n\n return dates;\n}\n\nexport const getOrders = async (clientId, start, end, onUpdateLastItem) => {\n return asyncListAllAndUpdateLastItem(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [start, end],\n },\n filter: {\n status: { ne: 'cancelled' },\n },\n limit: 1000,\n }, onUpdateLastItem);\n};\n\nexport const getNewOrders = async (clientId, start, end) => {\n return asyncListAll(getOrdersByClientByCreatedAt, {\n clientId,\n createdAt: {\n between: [start, end],\n },\n });\n};\n\nexport const getIssues = async (clientId, start, end) => {\n return asyncListAll(getIssuesByClientByCreatedAt, {\n clientId,\n createdAt: {\n between: [start, end],\n },\n });\n};\n\nexport const getLoginLogs = async (clientId, start, end) => {\n const auditTrails = await asyncListAll(getAuditTrailsByFacilityIdByTimestamp, {\n facilityId: clientId,\n timestamp: {\n between: [start, end],\n },\n });\n return auditTrails.filter((item) => item.action === '登入');\n};\n","export const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n date\n mealSlot\n deliveryBy\n status\n county\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n createdAt\n }\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { useScreenshot, createFileName } from 'use-react-screenshot';\nimport PrintIcon from '@material-ui/icons/Print';\n\nimport { Colors } from '@silvergatedelivery/constants';\nimport Loading from 'components/Loading';\nimport DateRangeSelector from 'components/DateRangeSelector';\n\nimport SummaryCard from './components/SummaryCard';\nimport PieCard from './components/PieCard';\nimport BarCard from './components/BarCard';\nimport LineCard from './components/LineCard';\nimport PlotCard from './components/PlotCard';\nimport {\n getOrders,\n getIssues,\n getLoginLogs,\n getStartEndByPeriodName,\n} from './helpers';\nimport { getChartDataMappings } from './charts';\nimport cache from 'utilities/cache';\n\nconst periodOptions = [{\n label: '本日',\n value: 'day',\n}, {\n label: '本週',\n value: 'week',\n}, {\n label: '本月',\n value: 'month',\n}, {\n label: '今年',\n value: 'year',\n}];\n\nconst periodOptions2 = [{\n label: '昨日',\n value: 'day/-1/-1',\n // }, {\n // label: '過去7日',\n // value: 'day/-7/0',\n}, {\n label: '上週',\n value: 'week/-1/-1',\n}, {\n label: '前月',\n value: 'month/-1/-1',\n // }, {\n // label: '過去3個月',\n // value: 'month/-3/0',\n}, {\n label: '去年',\n value: 'year/-1/-1',\n}];\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n backgroundColor: Colors.background.light,\n // minHeight: 'calc(100vh - 64px)',\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n filterContainer: {\n padding: theme.spacing(2),\n marginBottom: 12,\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n buttonGroup: {\n 'display': 'flex',\n 'flexDirection': 'column',\n 'alignItems': 'center',\n '& > *': {\n margin: theme.spacing(1),\n },\n },\n screenshotContainer: {\n display: 'none',\n visibility: 'hidden',\n },\n}));\n\nexport default function Dashboard({ clientId: inClientId }) {\n const classes = useStyles();\n const ref = createRef(null);\n const [image, takeScreenshot] = useScreenshot({\n type: 'image/jpeg',\n quality: 1.0,\n });\n\n const downloadImage = (image, { name, extension = 'jpg' } = {}) => {\n const filename = name || `總攬-起訖日-輸出報表 ${startDate} - ${endDate}`;\n const a = document.createElement('a');\n a.href = image;\n a.download = createFileName(extension, filename);\n a.click();\n };\n\n const [data, setData] = useState({});\n const [chartData, setChartData] = useState();\n const [period, setPeriod] = useState(cache.get('app:dashboard:period') || 'day'); // day, week, month, year\n const [isLoading, setIsLoading] = useState(false);\n const [startDate, setStartDate] = useState();\n const [endDate, setEndDate] = useState();\n const [isTakingScreenshot, setIsTakingScreenshot] = useState(false);\n const [progressDate, setProgressDate] = useState('');\n\n const clientId = inClientId || cache.get('app:facilityId');\n\n const setCustomPeriod = ({ startDate, endDate }) => {\n setPeriod(`month/0/0/${startDate}/${endDate}`);\n };\n\n const getImage = async () => {\n const node = ref.current;\n\n try {\n setIsTakingScreenshot(true);\n\n await new Promise((resolve) => setTimeout(resolve, 300));\n\n const image = await takeScreenshot(node);\n\n return downloadImage(image);\n } catch (e) {\n console.error(e);\n } finally {\n setIsTakingScreenshot(false);\n }\n };\n\n useEffect(() => {\n if (!clientId) return;\n\n (async () => {\n setIsLoading(true);\n\n cache.set('app:dashboard:period', period);\n\n const {\n start,\n end,\n // prevStart,\n // prevEnd,\n startFormat,\n endFormat,\n } = getStartEndByPeriodName(period);\n\n setStartDate(startFormat);\n setEndDate(endFormat);\n\n global.logger.debug({ period, start, end });\n\n const onUpdateLastItem = (item, nextToken) => {\n if (nextToken) {\n if (item) {\n setProgressDate(item.date);\n }\n } else {\n setProgressDate('');\n }\n };\n\n const [\n orders,\n // prevOrders,\n issues,\n loginLogs,\n // prevIssues,\n ] = await Promise.all([\n getOrders(clientId, startFormat, endFormat, onUpdateLastItem),\n // getOrders(clientId, prevStart, prevEnd),\n getIssues(clientId, start, end),\n getLoginLogs(clientId, start, end),\n // getIssues(clientId, prevStart, prevEnd),\n ]);\n\n setData({\n orders,\n // prevOrders,\n issues,\n loginLogs,\n // prevIssues,\n });\n\n setIsLoading(false);\n })();\n }, [period, clientId]);\n\n useEffect(() => {\n if (!data.orders || !data.issues) return;\n\n const chartDataMappings = getChartDataMappings(data, period);\n const chartData = Object.keys(chartDataMappings)\n .map((key) => chartDataMappings[key]);\n\n global.logger.debug({ chartDataMappings, chartData });\n\n setChartData(chartData);\n }, [data]);\n\n console.log('isTakingScreenshot', isTakingScreenshot);\n\n return (\n \n
\n \n
\n\n \n \n \n \n \n \n \n\n
\n \n {periodOptions.map((item, index)=>(\n setPeriod(item.value)}\n >\n {item.label}\n \n ))}\n \n
\n
\n \n {periodOptions2.map((item, index)=>(\n setPeriod(item.value)}\n >\n {item.label}\n \n ))}\n \n
\n \n \n \n \n \n
\n
\n
\n
\n\n \n \n \n 服務總覽表\n \n \n 機構名稱:{cache.get('app:name')}\n \n \n 服務區間:{startDate} - {endDate}   服務地區:{cache.get('app:location')}\n \n \n \n\n \n {isLoading &&\n <>\n \n \n {progressDate && `讀取進度:${progressDate},請稍候...`}\n \n }\n\n {!isLoading && chartData &&\n \n {chartData.map((data, index) => (\n \n {renderChart(data, period, isTakingScreenshot ? 0 : 1)}\n \n ))}\n }\n \n
\n );\n}\n\nDashboard.propTypes = {\n clientId: PropTypes.string,\n};\n\n// elevation: 用來 workaround 輸出頁面圖片會有黑邊的問題\nfunction renderChart({ type, title, value, prevValue, unit, appendix, data, data2, dataKeys, mode, colors }, period, elevation=1) {\n switch (type) {\n case 'summary':\n return ();\n case 'pie':\n return ();\n case 'bar':\n return ();\n case 'line':\n return ();\n case 'plot':\n return ();\n default:\n }\n}\n","import i18n from 'i18next';\nimport { getTranslatedOrderStatus } from 'utilities/translate';\nimport { getStartEndByPeriodName, getDatesBetween } from './helpers';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nexport const getChartDataMappings = (data = {}, inPeriod) => {\n const {\n orders,\n // prevOrders,\n issues,\n loginLogs,\n // prevIssues,\n } = data;\n\n global.logger.debug('orders', orders);\n global.logger.debug('issues', issues);\n\n const translatedOrderStatus = getTranslatedOrderStatus();\n const [period] = inPeriod.split('/');\n\n const issueOrderIds = [];\n issues.forEach(({ orderId }) => {\n if (orderId && !issueOrderIds.includes(orderId)) {\n issueOrderIds.push(orderId);\n }\n });\n\n // const prevIssueOrderIds = [];\n // prevIssues.forEach(({ orderId }) => {\n // if (orderId && !prevIssueOrderIds.includes(orderId)) {\n // prevIssueOrderIds.push(orderId);\n // }\n // });\n\n const lunchOrders = orders.filter(({ mealSlot }) => mealSlot === 'lunch');\n const dinnerOrders = orders.filter(({ mealSlot }) => mealSlot === 'dinner');\n\n // process data\n const chartDataMappings = {\n totalOrders: {\n type: 'summary',\n width: 3,\n title: '訂單數',\n value: orders.length,\n // prevValue: prevOrders.length,\n },\n totalOrdersValue: {\n type: 'summary',\n width: 3,\n title: '訂單總金額',\n unit: '$',\n value: orders.reduce((num, { total }) => {\n return num + total;\n }, 0),\n // prevValue: prevOrders.reduce((num, { total }) => {\n // return num + total;\n // }, 0),\n },\n orderIssueRatio: {\n type: 'summary',\n width: 3,\n title: '訂單事故比率',\n appendix: '%',\n value: Math.round((orders.length > 0 ? issueOrderIds.length / orders.length : 0) * 100),\n // prevValue: Math.round((prevOrders.length > 0 ? prevIssueOrderIds.length / prevOrders.length : 0) * 100),\n },\n totalIssues: {\n type: 'summary',\n width: 3,\n title: '應變中心事故數',\n value: issues.length,\n // prevValue: prevIssues.length,\n },\n orderStatus: {\n type: 'pie',\n title: `訂單 ${orders.length}`,\n width: 4,\n data: orders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n lunchStatus: {\n type: 'pie',\n title: `${i18n.t('午餐')}訂單 ${lunchOrders.length}`,\n width: 4,\n data: lunchOrders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n dinnerStatus: {\n type: 'pie',\n title: `${i18n.t('晚餐')}訂單 ${dinnerOrders.length}`,\n width: 4,\n data: dinnerOrders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n };\n\n if (period === 'week' || period === 'month') {\n const { start, end } = getStartEndByPeriodName(inPeriod);\n const dates = getDatesBetween(start, end);\n chartDataMappings.orderByDate = {\n type: 'bar',\n title: '每日訂單數',\n width: 12,\n mode: 'stacked',\n dataKeys: translatedOrderStatus.map(({ label }) => label).reverse(),\n data: dates.map((date) => {\n const filteredOrders = orders.filter((item) => item.date === date);\n const barValue = { name: date.slice(-5) };\n translatedOrderStatus.forEach(({ label, value, color }) => {\n barValue[label] = filteredOrders.filter((item) => item.status === value).length;\n });\n return barValue;\n }),\n colors: ({ id }) => {\n const { color } = translatedOrderStatus.find(({ label }) => label === id);\n return color;\n },\n };\n }\n\n if (period === 'week' || period === 'month') {\n const { start, end } = getStartEndByPeriodName(inPeriod);\n const dates = getDatesBetween(start, end);\n chartDataMappings.loginByDate = {\n type: 'line',\n title: '每日登入次數',\n width: 12,\n data: [{\n id: '登入次數',\n data: dates.map((date) => {\n const filteredLoginLogs = loginLogs.filter((item) => moment(item.timestamp).tz(TIME_ZONE).format('YYYY-MM-DD') === date);\n const lineValue = {\n x: date.slice(-5),\n y: filteredLoginLogs.filter((item) => item.action === '登入').length,\n };\n return lineValue;\n }),\n }],\n colors: ({ id }) => {\n return '#00913A';\n },\n };\n }\n\n return chartDataMappings;\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport VerticalTabs from 'components/Tab/VerticalTabs';\nimport ElderTable from 'components/ElderTable';\nimport OrderTable from 'components/OrderTable';\nimport RecurringOrderTable from 'components/RecurringOrderTable';\nimport ClientCard from 'components/Card/ClientCard';\nimport DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\nimport DeliveryStaffTable from 'views/FacilityAdmin/components/DeliveryStaffTable';\nimport UserTable from 'components/UserTable';\nimport ElderDeliveryGroupBoard from 'components/DeliveryGroup/ElderDeliveryGroupBoard';\nimport SponsorshipTable from 'components/SponsorshipTable';\nimport NotificationTable from 'components/NotificationTable';\nimport RestaurantTable from 'components/RestaurantTable';\nimport MembershipTable from 'components/MembershipTable';\nimport Dashboard from 'views/FacilityAdmin/Dashboard/Dashboard';\n\nexport default function ClientDetails({ id: inId, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [tabs, setTabs] = useState([]);\n const parentRef = useRef(null);\n const [containerWidth, setWidth] = useState('100%');\n\n useEffect(() => {\n const updateWidth = () => {\n if (parentRef.current) {\n setWidth(`${parentRef.current.offsetWidth}px`);\n }\n };\n\n updateWidth();\n window.addEventListener('resize', updateWidth);\n\n return () => window.removeEventListener('resize', updateWidth);\n }, [parentRef.current]);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n const tabs = [\n // {\n // label: '基本資料',\n // component: ,\n // },\n {\n label: t('總覽'),\n component: ,\n },\n {\n label: t('送餐對象'),\n component: ,\n },\n {\n label: t('送餐群組'),\n component: ,\n },\n {\n label: '訂單',\n component: ,\n },\n {\n label: '週期性排單',\n component: ,\n },\n {\n label: t('送餐關懷'),\n component: ,\n },\n {\n label: t('送餐大使'),\n component: ,\n },\n {\n label: t('餐廳'),\n component: ,\n },\n {\n label: '使用者',\n component: ,\n },\n {\n label: '捐贈紀錄',\n component: ,\n },\n {\n label: '通知紀錄',\n component: ,\n },\n {\n label: '會員紀錄',\n component: ,\n },\n ];\n setTabs(tabs);\n }, [id]);\n\n if (!id) {\n return null;\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nClientDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { clientStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function ClientChip({ status }) {\n const classes = useStyles();\n const matchedOrderStatus = clientStatus.find((item) => item.value === status);\n const label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nClientChip.propTypes = {\n status: PropTypes.number,\n};\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport { listClients, getClientsByTypeByCounty, getClientOrganizationByOrganization } from 'graphql/queries';\nimport { formatAddress } from 'utilities/format';\nimport ClientDetails from 'components/ClientDetails';\nimport ClientChip from 'components/ClientChip';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport FacilityClientEditButton from 'forms/FacilityClientForm/FacilityClientEditButton';\nimport { counties } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { asyncListAll } from 'utilities/graph';\nimport { useCache } from 'CacheProvider';\n\nexport default function FacilityClientTable({\n title = '機構',\n description,\n organizationId: inOrganizationId,\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [queryFunc, setQueryFunc] = useState();\n const { appGroup } = useCache();\n\n const organizationId = inOrganizationId || cache.get('app:organizationId');\n const orgMode = appGroup === 'OrgAdmins';\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'shortId',\n label: '機構代碼',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n\n {\n name: 'isActive',\n label: '狀態',\n options: {\n display: true,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名字',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'contact',\n label: '聯絡人姓名',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n },\n {\n name: 'username',\n label: '登入帳號',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n hideInOrgMode: true,\n },\n {\n name: 'address',\n label: '地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddress,\n },\n },\n {\n name: 'usersLimit',\n label: '登入用戶上限',\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'eldersLimit',\n label: `${t('送餐對象')}上限`,\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'useDedicatedDeliveryStaffs',\n label: `限制${t('送餐大使')}`,\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'featureConfiguration.dementiaQuestionnaire',\n label: '參加失智防治推廣問卷調查',\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'basicFee',\n label: '交通基本費',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n\n {\n name: 'basicDistanceInKM',\n label: '基本里程(公里)',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'extraFeeInKM',\n label: '每公里加成費',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'facilitySettings.govQualifiedPrice',\n label: '政府核定單價',\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n hideInOrgMode: true,\n },\n ].filter(({ hideInOrgMode }) => !(orgMode && hideInOrgMode));\n\n const options = {\n expandableRows: !orgMode,\n isRowExpandable: () => !orgMode,\n renderExpandableRow(rowData, rowMeta) {\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n\n useEffect(() => {\n if (organizationId) {\n setQueryFunc(() => {\n return async () => {\n const clientOrganization = await asyncListAll(getClientOrganizationByOrganization, { organizationId });\n const clients = clientOrganization.reduce((accumulator, currentValue) => {\n if (currentValue.client && currentValue.client.type === 'facility') {\n accumulator.push(currentValue.client);\n }\n return accumulator;\n }, []);\n return clients;\n };\n });\n\n setIndexes(undefined);\n return;\n }\n\n setIndexes([\n {\n name: 'getClientsByTypeByCounty',\n label: '按地區查詢',\n partitionKey: 'type',\n sortKey: 'county',\n fields: [\n {\n label: '類別',\n key: 'type',\n type: 'select',\n options: [\n {\n label: '機構',\n value: 'facility',\n },\n ],\n },\n {\n label: '縣市',\n key: 'county',\n type: 'select',\n options: [\n { value: null, label: '全部' },\n ...counties.map((item) => {\n return { value: item, label: item };\n })],\n },\n {\n label: '姓名/名稱',\n key: 'name',\n comparisonOperator: 'contains',\n },\n ],\n operation: getClientsByTypeByCounty,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '類別',\n key: 'type',\n type: 'select',\n options: [\n {\n label: '機構',\n value: 'facility',\n },\n ],\n }, {\n label: '姓名',\n key: 'name',\n comparisonOperator: 'contains',\n }],\n operation: listClients,\n },\n ]);\n setQueryParams({\n type: 'facility',\n county: cache.get('app:location'),\n });\n }, [organizationId]);\n\n return (\n \n );\n}\n\nFacilityClientTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n organizationId: PropTypes.string,\n};\n","import React, { useState, useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { resetFormCache } from 'forms/formCache';\nimport { request } from 'utilities/graph';\nimport moment from 'moment';\nimport {\n getOrganization,\n} from 'graphql/queries';\nimport {\n createOrganization,\n updateOrganization,\n createClientOrganization,\n updateClientOrganization,\n deleteClientOrganization,\n} from 'graphql/mutations';\nimport uiSchema from './uiSchema';\nimport cache from 'utilities/cache';\nimport { toastr } from 'react-redux-toastr';\n\nexport default function OrganizationForm({ formData: inFormData, ...props }) {\n const [formData, setFormData] = useState();\n const [originClients, setOriginClients] = useState([]);\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n\n useEffect(() => {\n const newFormData = JSON.parse(JSON.stringify(inFormData || {}));\n if (newFormData.id && newFormData.clients && newFormData.clients.items) {\n newFormData.clients = newFormData.clients.items;\n delete newFormData.clients.items;\n }\n setOriginClients(newFormData.clients || []);\n setFormData(newFormData);\n }, [inFormData]);\n\n const handleClientPermissions = async (newClients, organizationId) => {\n const now = moment().toISOString();\n const username = cache.get('app:username');\n\n const toCreateClients = [];\n const toUpdateClients = [];\n const toRemoveClients = [];\n let showVisitorModeWarning = false;\n newClients.forEach((client) => {\n if (client.visitorMode && (client.clientMode || client.elderSetting)) {\n showVisitorModeWarning = true;\n client.clientMode = false;\n client.elderSetting = false;\n }\n });\n if (showVisitorModeWarning) {\n toastr.warning('勾選訪客模式將無法切換至機構模式與編輯送餐對象');\n }\n originClients.forEach(({ id: settingId }) => {\n const matched = newClients.find(({ id }) => id === settingId);\n if (!matched) {\n toRemoveClients.push({ id: settingId });\n } else {\n toUpdateClients.push(matched);\n }\n });\n newClients.forEach((newClient) => {\n const matched = originClients.find(({ id }) => id === newClient.id);\n if (!matched) {\n toCreateClients.push(newClient);\n }\n });\n\n await Promise.all([\n ...toCreateClients.map(async (item) => {\n const data = {\n organizationId,\n clientId: item.clientId,\n visitorMode: item.visitorMode,\n clientMode: item.clientMode,\n elderSetting: item.elderSetting,\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n await request(createClientOrganization, { input: data });\n }),\n ...toUpdateClients.map(async (item) => {\n const data = {\n id: item.id,\n organizationId,\n visitorMode: item.visitorMode,\n clientId: item.clientId,\n clientMode: item.clientMode,\n elderSetting: item.elderSetting,\n updatedAt: now,\n updatedBy: username,\n };\n await request(updateClientOrganization, { input: data });\n }),\n ...toRemoveClients.map(async (item) => {\n const data = {\n id: item.id,\n };\n await request(deleteClientOrganization, { input: data });\n }),\n ]);\n };\n\n const hasDuplicateClients = (clients) => {\n const idSet = new Set();\n for (const item of clients) {\n if (idSet.has(item.clientId)) {\n return true;\n }\n idSet.add(item.clientId);\n }\n return false;\n };\n\n const createFunc = async (data) => {\n const newData = JSON.parse(JSON.stringify(data));\n const clients = newData.clients;\n delete newData.clients;\n\n if (hasDuplicateClients(clients)) {\n toastr.error('有重複設定的機構');\n throw new Error('clients duplicated');\n }\n\n const { data: { createOrganization: createdOrganization } } = await request(createOrganization, { input: newData });\n await handleClientPermissions(clients, createdOrganization.id);\n const { data: { getOrganization: organization } } = await request(getOrganization, { id: createdOrganization.id });\n resetFormCache('allOrganizations');\n return organization;\n };\n\n const updateFunc = async (data) => {\n const newData = JSON.parse(JSON.stringify(data));\n const clients = newData.clients;\n delete newData.clients;\n\n if (hasDuplicateClients(clients)) {\n toastr.error('有重複設定的機構');\n throw new Error('clients duplicated');\n }\n\n await Promise.all([\n request(updateOrganization, { input: newData }),\n handleClientPermissions(clients, newData.id),\n ]);\n const { data: { getOrganization: organization } } = await request(getOrganization, { id: newData.id });\n resetFormCache('allOrganizations');\n return organization;\n };\n\n if (!formData) {\n return null;\n }\n\n\n return (\n \n );\n}\n\nOrganizationForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport OrganizationForm from './OrganizationForm';\n\nexport default function OrganizationEditButton({ ...props }) {\n return (\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport InfoCard from './InfoCard';\nimport { request } from 'utilities/graph';\nimport { getOrganization } from 'graphql/queries';\nimport OrganizationEditButton from 'forms/OrganizationForm/OrganizationEditButton';\n\nexport default function OrganizationCard({ id, title = '組織資料', data: inData, showMap, ...props }) {\n const [data, setData] = useState({});\n\n const mappings = [\n { key: 'name', label: '姓名' },\n { key: 'description', label: '描述' },\n ];\n\n useEffect(() => {\n (async () => {\n if (inData) {\n setData(inData);\n } else\n if (id) {\n const { data: { getOrganization: data } } = await request(getOrganization, { id });\n setData(data);\n }\n })();\n }, [inData, id]);\n\n return (\n \n );\n}\n\nOrganizationCard.propTypes = {\n id: PropTypes.string,\n title: PropTypes.string,\n showMap: PropTypes.bool,\n data: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport { green, red } from '@material-ui/core/colors';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\nexport default function SummaryCard({ title, value, prevValue, unit = '', appendix = '', period }) {\n const classes = useStyles();\n\n let p;\n switch (period) {\n case 'year':\n p = '去年';\n break;\n case 'month':\n p = '上個月';\n break;\n case 'week':\n p = '上週';\n break;\n case 'day':\n default:\n p = '昨日';\n break;\n }\n\n const showDiff = prevValue !== void(0);\n const diff = +(((prevValue ? (value - prevValue) / prevValue : value) * 100).toFixed(0));\n const isSame = diff === 0;\n const isIncreased = diff > 0;\n const desc = isSame ? `與${p}相同` : `與${p}(${unit}${prevValue}${appendix})相比 ${isIncreased?'增加':'減少'} ${Math.abs(diff)}%`;\n\n return (\n \n \n {title}\n \n \n {showDiff && (isSame ? '' :\n isIncreased ?\n :\n )}\n {unit}{value}{appendix}\n \n {showDiff &&\n \n {desc}\n }\n );\n}\n\n\nSummaryCard.propTypes = {\n title: PropTypes.string,\n value: PropTypes.number,\n prevValue: PropTypes.number,\n unit: PropTypes.string,\n appendix: PropTypes.string,\n period: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsivePie } from '@nivo/pie';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function PieCard({ title, data: inData, data2: inData2 }) {\n const classes = useStyles();\n\n let data = inData;\n let data2 = inData2;\n if (data && !Array.isArray(data)) {\n data = Object.keys(data).map((key) => {\n const { value, color } = data[key];\n return { id: key, label: key, value, color };\n });\n }\n\n if (data2 && !Array.isArray(data2)) {\n data2 = Object.keys(data2).map((key) => {\n const { value, color } = data[key];\n return { id: key, label: key, value, color };\n });\n }\n\n const colorFunc = data[0] && data[0].color ? ({ data }) => data.color : { scheme: 'nivo' };\n\n // global.logger.debug({ data, data2 });\n\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\n\nPieCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.any,\n data2: PropTypes.any,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsiveBar } from '@nivo/bar';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function BarCard({ title, data = [], dataKeys = [], mode = 'grouped', colors }) {\n const classes = useStyles();\n // global.logger.debug({ data, dataKeys });\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\n\nBarCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.array,\n dataKeys: PropTypes.array,\n mode: PropTypes.string,\n colors: PropTypes.any,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsiveScatterPlot } from '@nivo/scatterplot';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function PlotCard({ title, data = [] }) {\n const classes = useStyles();\n // global.logger.debug({ data });\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\nPlotCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.array,\n};\n","import moment from 'moment-timezone';\n\nimport {\n getIssuesByClientByCreatedAt,\n} from 'graphql/queries';\nimport {\n getOrdersByClientByDate,\n} from './queries';\nimport { asyncListAll, asyncListAllAndUpdateLastItem } from 'utilities/graph';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nexport function getStartEndByPeriodName(inPeriod) {\n const [period, startBaseline, endBaseline] = inPeriod.split('/');\n const startBaseNumber = parseInt(startBaseline || '0');\n const endBaseNumber = parseInt(endBaseline || '0');\n const start = moment().add(startBaseNumber, `${period}s`).tz(TIME_ZONE).startOf(period);\n const end = moment().add(endBaseNumber, `${period}s`).tz(TIME_ZONE).endOf(period);\n return {\n start: start.toISOString(),\n end: end.toISOString(),\n prevStart: moment().tz(TIME_ZONE).add(-1 + startBaseNumber, `${period}s`).startOf(period).toISOString(),\n prevEnd: moment().tz(TIME_ZONE).add(-1 + endBaseNumber, `${period}s`).endOf(period).toISOString(),\n startFormat: start.format('YYYY-MM-DD'),\n endFormat: end.format('YYYY-MM-DD'),\n };\n}\n\nexport function getDatesBetween(startISO, endISO, format='YYYY-MM-DD') {\n const startDate = moment(startISO);\n const endDate = moment(endISO);\n const dates = [];\n\n while (startDate.isBefore(endDate) || startDate.isSame(endDate)) {\n dates.push(startDate.format(format));\n startDate.add(1, 'days');\n }\n\n return dates;\n}\n\nexport const getOrders = async (clientIds, start, end, onUpdateLastItem) => {\n let results = [];\n await Promise.all(clientIds.map(async (clientId) => {\n const data = await asyncListAllAndUpdateLastItem(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [start, end],\n },\n filter: {\n status: { ne: 'cancelled' },\n },\n limit: 1000,\n }, onUpdateLastItem);\n results = [...results, ...data];\n }));\n\n return results;\n};\nexport const getIssues = async (clientIds, start, end) => {\n let results = [];\n await Promise.all(clientIds.map(async (clientId) => {\n const data = await asyncListAll(getIssuesByClientByCreatedAt, {\n clientId,\n createdAt: {\n between: [start, end],\n },\n });\n results = [...results, ...data];\n }));\n\n return results;\n};\n","export const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n clientId\n date\n mealSlot\n deliveryBy\n status\n county\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n createdAt\n }\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport Typography from '@material-ui/core/Typography';\n\nimport { Colors } from '@silvergatedelivery/constants';\nimport Loading from 'components/Loading';\nimport SummaryCard from './components/SummaryCard';\nimport PieCard from './components/PieCard';\nimport BarCard from './components/BarCard';\nimport PlotCard from './components/PlotCard';\nimport {\n getOrders,\n getIssues,\n getStartEndByPeriodName,\n} from './helpers';\nimport { getChartDataMappings } from './charts';\nimport cache from 'utilities/cache';\nimport { useCache } from 'CacheProvider';\nimport moment from 'moment';\n\nconst periodOptions = [{\n label: '本日',\n value: 'day',\n}, {\n label: '本週',\n value: 'week',\n}, {\n label: '本月',\n value: 'month',\n}, {\n label: '今年',\n value: 'year',\n}];\n\nconst periodOptions2 = [{\n label: '昨日',\n value: 'day/-1/-1',\n // }, {\n // label: '過去7日',\n // value: 'day/-7/0',\n}, {\n label: '上週',\n value: 'week/-1/-1',\n}, {\n label: '前月',\n value: 'month/-1/-1',\n // }, {\n // label: '過去3個月',\n // value: 'month/-3/0',\n}, {\n label: '去年',\n value: 'year/-1/-1',\n}];\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n backgroundColor: Colors.background.light,\n minHeight: 'calc(100vh - 64px)',\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n filterContainer: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n buttonGroup: {\n 'display': 'flex',\n 'flexDirection': 'column',\n 'alignItems': 'center',\n '& > *': {\n margin: theme.spacing(1),\n },\n },\n}));\n\nexport default function Dashboard({ organizationId: inOrganizationId, clientIds }) {\n const classes = useStyles();\n\n const [data, setData] = useState({});\n const [chartData, setChartData] = useState();\n const [period, setPeriod] = useState(cache.get('app:dashboard:period') || 'day'); // day, week, month, year\n const [isLoading, setIsLoading] = useState(true);\n const [title, setTitle] = useState('');\n const { selectedUserGroupParams } = useCache();\n // eslint-disable-next-line no-unused-vars\n const [lastProgressUpdated, setLastProgressUpdated] = useState();\n const progressStatus = useRef({});\n\n const organizationId = inOrganizationId || cache.get('app:organizationId');\n\n useEffect(() => {\n if (!organizationId) return;\n\n (async () => {\n setIsLoading(true);\n\n cache.set('app:dashboard:period', period);\n\n const onUpdateLastItem = (item, nextToken) => {\n if (nextToken) {\n if (item) {\n progressStatus.current[item.clientId] = item.date;\n setLastProgressUpdated(moment().toISOString());\n }\n } else {\n if (item) {\n progressStatus.current[item.clientId] = '完成';\n setLastProgressUpdated(moment().toISOString());\n }\n }\n };\n\n progressStatus.current = {};\n\n const {\n start,\n end,\n // prevStart,\n // prevEnd,\n startFormat,\n endFormat,\n } = getStartEndByPeriodName(period);\n\n setTitle(`${startFormat} - ${endFormat}`);\n\n global.logger.debug({ period, start, end });\n\n const { organizationClientIds } = selectedUserGroupParams;\n\n const [\n orders,\n issues,\n ] = await Promise.all([\n getOrders(clientIds || organizationClientIds, startFormat, endFormat, onUpdateLastItem),\n getIssues(clientIds || organizationClientIds, start, end),\n ]);\n\n setData({\n orders,\n // prevOrders,\n issues,\n // prevIssues,\n });\n\n setIsLoading(false);\n })();\n }, [period, organizationId]);\n\n useEffect(() => {\n if (!data.orders || !data.issues) return;\n\n const chartDataMappings = getChartDataMappings(data, period);\n const chartData = Object.keys(chartDataMappings)\n .map((key) => chartDataMappings[key]);\n\n global.logger.debug({ chartDataMappings, chartData });\n\n setChartData(chartData);\n }, [data]);\n\n const getClientName = (id) => {\n if (selectedUserGroupParams.organizationData?.clients?.items) {\n const { client } = selectedUserGroupParams.organizationData?.clients?.items?.find(({ client }) => client.id === id);\n return client.name;\n }\n return '';\n };\n\n return (\n \n \n \n \n \n \n {title}\n \n\n
\n \n {periodOptions.map((item, index)=>(\n setPeriod(item.value)}\n >\n {item.label}\n \n ))}\n \n
\n
\n \n {periodOptions2.map((item, index)=>(\n setPeriod(item.value)}\n >\n {item.label}\n \n ))}\n \n
\n
\n
\n
\n {isLoading &&\n <>\n
\n {progressStatus.current && Object.keys(progressStatus.current).map((key) => {\n return \n {getClientName(key)} 讀取進度:{progressStatus.current[key]}\n ;\n })}\n
\n \n }\n {!isLoading && chartData &&\n \n {chartData.map((data, index) => (\n \n {renderChart(data, period)}\n \n ))}\n }\n
\n
\n );\n}\n\n\nDashboard.propTypes = {\n organizationId: PropTypes.string,\n clientIds: PropTypes.array,\n};\n\n\nfunction renderChart({ type, title, value, prevValue, unit, appendix, data, data2, dataKeys, mode, colors }, period) {\n switch (type) {\n case 'summary':\n return ();\n case 'pie':\n return ();\n case 'bar':\n return ();\n case 'plot':\n return ();\n default:\n }\n}\n","import i18n from 'i18next';\nimport { getTranslatedOrderStatus } from 'utilities/translate';\nimport { getStartEndByPeriodName, getDatesBetween } from './helpers';\n\nexport const getChartDataMappings = (data = {}, inPeriod) => {\n const {\n orders,\n // prevOrders,\n issues,\n // prevIssues,\n } = data;\n\n const translatedOrderStatus = getTranslatedOrderStatus();\n const [period] = inPeriod.split('/');\n\n const issueOrderIds = [];\n issues.forEach(({ orderId }) => {\n if (orderId && !issueOrderIds.includes(orderId)) {\n issueOrderIds.push(orderId);\n }\n });\n\n // const prevIssueOrderIds = [];\n // prevIssues.forEach(({ orderId }) => {\n // if (orderId && !prevIssueOrderIds.includes(orderId)) {\n // prevIssueOrderIds.push(orderId);\n // }\n // });\n\n const lunchOrders = orders.filter(({ mealSlot }) => mealSlot === 'lunch');\n const dinnerOrders = orders.filter(({ mealSlot }) => mealSlot === 'dinner');\n\n // process data\n const chartDataMappings = {\n totalOrders: {\n type: 'summary',\n width: 3,\n title: '訂單數',\n value: orders.length,\n // prevValue: prevOrders.length,\n },\n totalOrdersValue: {\n type: 'summary',\n width: 3,\n title: '訂單總金額',\n unit: '$',\n value: orders.reduce((num, { total }) => {\n return num + total;\n }, 0),\n // prevValue: prevOrders.reduce((num, { total }) => {\n // return num + total;\n // }, 0),\n },\n orderIssueRatio: {\n type: 'summary',\n width: 3,\n title: '訂單事故比率',\n appendix: '%',\n value: Math.round((orders.length > 0 ? issueOrderIds.length / orders.length : 0) * 100),\n // prevValue: Math.round((prevOrders.length > 0 ? prevIssueOrderIds.length / prevOrders.length : 0) * 100),\n },\n totalIssues: {\n type: 'summary',\n width: 3,\n title: '應變中心事故數',\n value: issues.length,\n // prevValue: prevIssues.length,\n },\n orderStatus: {\n type: 'pie',\n title: `訂單 ${orders.length}`,\n width: 4,\n data: orders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n lunchStatus: {\n type: 'pie',\n title: `${i18n.t('午餐')}訂單 ${lunchOrders.length}`,\n width: 4,\n data: lunchOrders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n dinnerStatus: {\n type: 'pie',\n title: `${i18n.t('晚餐')}訂單 ${dinnerOrders.length}`,\n width: 4,\n data: dinnerOrders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n };\n\n\n if (period === 'week' || period === 'month') {\n const { start, end } = getStartEndByPeriodName(inPeriod);\n const dates = getDatesBetween(start, end);\n chartDataMappings.orderByDate = {\n type: 'bar',\n title: '每日訂單數',\n width: 12,\n mode: 'stacked',\n dataKeys: translatedOrderStatus.map(({ label }) => label).reverse(),\n data: dates.map((date) => {\n const filteredOrders = orders.filter((item) => item.date === date);\n const barValue = { name: date.slice(-5) };\n translatedOrderStatus.forEach(({ label, value, color }) => {\n barValue[label] = filteredOrders.filter((item) => item.status === value).length;\n });\n return barValue;\n }),\n colors: ({ id }) => {\n const { color } = translatedOrderStatus.find(({ label }) => label === id);\n return color;\n },\n };\n }\n\n return chartDataMappings;\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport VerticalTabs from 'components/Tab/VerticalTabs';\nimport FacilityClientTable from 'components/FacilityClientTable';\n// import OrderTable from 'components/OrderTable';\nimport OrganizationCard from 'components/Card/OrganizationCard';\n// import DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\n// import DeliveryStaffTable from 'views/OrgAdmin/components/DeliveryStaffTable';\nimport UserTable from 'components/UserTable';\n// import RestaurantTable from 'components/RestaurantTable';\nimport Dashboard from 'views/OrgAdmin/Dashboard/Dashboard';\n\nexport default function OrganizationDetails({ id: inId, clientIds, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [tabs, setTabs] = useState([]);\n const parentRef = useRef(null);\n const [containerWidth, setWidth] = useState('100%');\n\n useEffect(() => {\n const updateWidth = () => {\n if (parentRef.current) {\n setWidth(`${parentRef.current.offsetWidth}px`);\n }\n };\n\n updateWidth();\n window.addEventListener('resize', updateWidth);\n\n return () => window.removeEventListener('resize', updateWidth);\n }, [parentRef.current]);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n const tabs = [\n {\n label: t('總覽'),\n component: ,\n },\n {\n label: t('機構'),\n component: ,\n },\n // {\n // label: t('客戶'),\n // component: ,\n // },\n // {\n // label: t('送餐對象'),\n // component: ,\n // },\n // {\n // label: '訂單',\n // component: ,\n // },\n // {\n // label: t('送餐關懷'),\n // component: ,\n // },\n // {\n // label: t('送餐大使'),\n // component: ,\n // },\n // {\n // label: t('餐廳'),\n // component: ,\n // },\n {\n label: '使用者',\n component: ,\n },\n ];\n setTabs(tabs);\n }, [id]);\n\n if (!id) {\n return null;\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nOrganizationDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n clientIds: PropTypes.array,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport { listOrganizations } from 'graphql/queries';\nimport OrganizationDetails from 'components/OrganizationDetails';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport OrganizationEditButton from 'forms/OrganizationForm/OrganizationEditButton';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nexport default function OrganizationTable({\n title = '組織',\n description,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const columns = [\n { // fixed at 1st, don't move it\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n { // fixed at 2nd, don't move it\n name: 'clients',\n label: '機構編號',\n options: {\n display: 'excluded',\n filter: false,\n sort: false,\n customBodyRender(clients) {\n const { items } = clients;\n if (items && items.length !== 0) {\n return items.map(( { client }) => client.id);\n }\n return [];\n },\n },\n },\n {\n name: 'name',\n label: '名稱',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '描述',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'clients.items',\n label: '機構',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(items) {\n if (items && items.length !== 0) {\n return <>\n {\n items.map(( { id, client, visitorMode, clientMode, elderSetting }) => {\n return
\n \n {visitorMode ? :\n }\n \n \n {clientMode ? :\n }\n \n \n {elderSetting ? :\n }\n \n {client.name}\n
;\n })\n }\n ;\n }\n return '';\n },\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData, rowMeta) {\n const id = rowData[0];\n const clientIds = rowData[1];\n return (\n \n \n \n );\n },\n onDownload: (buildHead, buildBody, columns, data) => {\n const facliityIndex = columns.findIndex(({ name }) => name === 'clients.items');\n const newData = JSON.parse(JSON.stringify(data));\n if (facliityIndex) {\n newData.forEach(({ data }) => {\n if (data[facliityIndex]) {\n const facilityNames = data[facliityIndex].map(({ client = {} }) => client.name || '');\n data[facliityIndex] = facilityNames;\n }\n });\n }\n return '\\uFEFF' + buildHead(columns) + buildBody(newData);\n },\n };\n\n useEffect(() => {\n setIndexes([\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '名稱',\n key: 'name',\n comparisonOperator: 'contains',\n }],\n operation: listOrganizations,\n },\n ]);\n setQueryParams({});\n }, []);\n\n return (\n \n );\n}\n\nOrganizationTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport { listClients, getClientsByTypeByCounty, getClientOrganizationByOrganization } from 'graphql/queries';\nimport { formatAddress } from 'utilities/format';\nimport ClientDetails from 'components/ClientDetails';\nimport ClientChip from 'components/ClientChip';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport IndividualClientEditButton from 'forms/IndividualClientForm/IndividualClientEditButton';\nimport { counties, translationTypes } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { asyncListAll } from 'utilities/graph';\nimport { useCache } from 'CacheProvider';\n\nexport default function IndividualClientTable({\n title = '個人',\n description,\n organizationId: inOrganizationId,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [queryFunc, setQueryFunc] = useState();\n const { appGroup } = useCache();\n\n const organizationId = inOrganizationId || cache.get('app:organizationId');\n const orgMode = appGroup === 'OrgAdmins';\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'isActive',\n label: '狀態',\n options: {\n display: true,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名字',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n },\n {\n name: 'username',\n label: '登入帳號',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n hideInOrgMode: true,\n },\n {\n name: 'address',\n label: '地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddress,\n },\n },\n {\n name: 'translation',\n label: '介面用詞',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return value ? translationTypes.find((item) => item.value === value).label : '';\n },\n },\n hideInOrgMode: true,\n },\n {\n name: 'basicFee',\n label: '交通基本費',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n\n {\n name: 'basicDistanceInKM',\n label: '基本里程(公里)',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'extraFeeInKM',\n label: '每公里加成費',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n hideInOrgMode: true,\n },\n ].filter(({ hideInOrgMode }) => !(orgMode && hideInOrgMode));\n\n const options = {\n expandableRows: !orgMode,\n isRowExpandable: () => !orgMode,\n renderExpandableRow(rowData, rowMeta) {\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n\n useEffect(() => {\n if (organizationId) {\n setQueryFunc(() => {\n return async () => {\n const clientOrganization = await asyncListAll(getClientOrganizationByOrganization, { organizationId });\n const clients = clientOrganization.reduce((accumulator, currentValue) => {\n if (currentValue.client && currentValue.client.type === 'individual') {\n accumulator.push(currentValue.client);\n }\n return accumulator;\n }, []);\n return clients;\n };\n });\n\n setIndexes(undefined);\n return;\n }\n\n setIndexes([\n {\n name: 'getClientsByTypeByCounty',\n label: '按地區查詢',\n partitionKey: 'type',\n sortKey: 'county',\n fields: [\n {\n label: '類別',\n key: 'type',\n type: 'select',\n options: [\n {\n label: '個人',\n value: 'individual',\n },\n ],\n },\n {\n label: '縣市',\n key: 'county',\n type: 'select',\n options: [\n { value: null, label: '全部' },\n ...counties.map((item) => {\n return { value: item, label: item };\n })],\n },\n {\n label: '姓名/名稱',\n key: 'name',\n comparisonOperator: 'contains',\n },\n ],\n operation: getClientsByTypeByCounty,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '類別',\n key: 'type',\n type: 'select',\n options: [\n {\n label: '個人',\n value: 'individual',\n },\n ],\n }, {\n label: '姓名',\n key: 'name',\n comparisonOperator: 'contains',\n }],\n operation: listClients,\n },\n ]);\n setQueryParams({\n type: 'individual',\n county: cache.get('app:location'),\n });\n }, [organizationId]);\n\n return (\n \n );\n}\n\nIndividualClientTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n organizationId: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n deliveryStaffTransactionStatus,\n deliveryStaffTransactionTypes,\n} from '@silvergatedelivery/constants';\n\nimport Table from 'components/Table/Table';\nimport { getDeliveryStaffTransactionByDeliveryStaffIdByCreatedAt, listDeliveryStaffTransactions } from 'graphql/queries';\nimport { request } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\nimport OrderDialog from 'components/Order/OrderDialog';\n// import DeliveryStaffTransactionEditButton from 'forms/DeliveryStaffTransactionForm/DeliveryStaffTransactionEditButton';\n\nconst title = '交易紀錄';\nconst description = '';\n\nexport default function DeliveryStaffTransactionTable({ deliveryStaffId }) {\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState();\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'id',\n label: 'ID',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'type',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return deliveryStaffTransactionTypes.find((item) => item.value === value).label;\n },\n\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: false,\n sort: true,\n customBodyRender(value) {\n return deliveryStaffTransactionStatus.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'amount',\n label: 'S Token',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'summary',\n label: '簡述',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'note',\n label: '備註',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderId',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(orderId) {\n if (!orderId) return;\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n\n // TODO: use the data table with query generator\n let records;\n if (deliveryStaffId) {\n const {\n data: {\n getDeliveryStaffTransactionByDeliveryStaffIdByCreatedAt: { items },\n },\n } = await request(getDeliveryStaffTransactionByDeliveryStaffIdByCreatedAt, {\n deliveryStaffId,\n sortDirection: 'DESC',\n limit: 100,\n });\n records = items;\n } else {\n const { data: { listDeliveryStaffTransactions: { items } } } = await request(listDeliveryStaffTransactions, { limit: 100 });\n records = items;\n }\n\n setData(records.sort(sortBy('createdAt', true)));\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [deliveryStaffId, lastUpdatedAt]);\n\n return (\n setLastUpdatedAt(Date.now())}\n />\n );\n}\n\nDeliveryStaffTransactionTable.propTypes = {\n deliveryStaffId: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Table from 'components/Table/Table';\nimport { getDeliveryStaffMonthlyStatementsByDeliveryStaffIdByMonth } from 'graphql/queries';\nimport { asyncListAll } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\n\nconst title = '結算紀錄';\nconst description = '';\n\nexport default function DeliveryStaffMonthlyStatementTable({ deliveryStaffId }) {\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState();\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'id',\n label: 'ID',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'month',\n label: '月份',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'earnedSToken',\n label: '賺的 S Token',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'completedOrderCount',\n label: '完成的訂單數',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'completedOrderDistanceInMeters',\n label: '完成的路線總長',\n options: {\n filter: false,\n sort: true,\n customBodyRender(value) {\n if (value === 0) return '';\n return `${(value/1000).toFixed(2)}公里`;\n },\n },\n },\n {\n name: 'completedOrderDurationInSeconds',\n label: '完成的路線時間',\n options: {\n filter: false,\n sort: true,\n customBodyRender(value) {\n if (value === 0) return '';\n return `${(value/3600).toFixed(2)}小時`;\n },\n },\n },\n {\n name: 'incompleteOrderCount',\n label: '未完成的訂單數',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'abandonedOrderCount',\n label: '棄單數',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n\n // TODO: use the data table with query generator\n let records;\n if (deliveryStaffId) {\n records = await asyncListAll(getDeliveryStaffMonthlyStatementsByDeliveryStaffIdByMonth, {\n deliveryStaffId,\n sortDirection: 'DESC',\n limit: 1000,\n });\n } else {\n records = [];\n }\n\n setData(records.sort(sortBy('date', true)));\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [deliveryStaffId, lastUpdatedAt]);\n\n return (\n setLastUpdatedAt(Date.now())}\n />\n );\n}\n\nDeliveryStaffMonthlyStatementTable.propTypes = {\n deliveryStaffId: PropTypes.string,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport VerticalTabs from 'components/Tab/VerticalTabs';\nimport OrderTable from 'components/OrderTable';\nimport RecurringOrderTable from 'components/RecurringOrderTable';\nimport DeliveryStaffCard from 'components/Card/DeliveryStaffCard';\nimport DeliveryStaffDocumentTable from 'components/DeliveryStaffDocumentTable';\nimport NotificationTable from 'components/NotificationTable';\nimport DeliveryStaffTransactionTable from 'components/DeliveryStaffTransactionTable';\nimport DeliveryStaffMonthlyStatementTable from 'components/DeliveryStaffMonthlyStatementTable';\nimport DeliveryStaffContract from 'components/DeliveryStaffContract';\nimport DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\nimport Schedule from 'views/Admin/Schedule/Schedule';\n\nconst useStyles = makeStyles((theme) => ({\n collapsibleGrid: {\n 'width': 'auto',\n 'transition': 'width 0.3s ease-in-out',\n '&.collapsed': {\n 'width': theme.spacing(3),\n 'marginRight': 16,\n },\n },\n}));\n\nexport default function DeliveryStaffDetails({ id: inId, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [tabs, setTabs] = useState([]);\n const parentRef = useRef(null);\n const [containerWidth, setContainerWidth] = useState('100%');\n const [isCardOpen, setIsCardOpen] = useState(true);\n const classes = useStyles();\n const theme = useTheme();\n const isSm = useMediaQuery(theme.breakpoints.down('sm'));\n\n useEffect(() => {\n const updateWidth = () => {\n if (parentRef.current) {\n setContainerWidth(`${parentRef.current.offsetWidth}px`);\n }\n };\n\n const resizeObserver = new ResizeObserver(updateWidth);\n\n if (parentRef.current) {\n resizeObserver.observe(parentRef.current);\n updateWidth();\n }\n\n return () => resizeObserver.disconnect();\n }, [parentRef.current]);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n const tabs = [\n // {\n // label: '基本資料',\n // component: ,\n // },\n {\n label: '資料檔案',\n component: ,\n },\n // {\n // label: '送餐紀錄',\n // component: ,\n // },\n {\n label: '行事曆',\n component: ,\n },\n {\n label: '訂單',\n component: ,\n },\n {\n label: '週期性排單',\n component: ,\n },\n {\n label: t('送餐關懷'),\n component: ,\n },\n {\n label: '通知紀錄',\n component: ,\n },\n {\n label: '交易紀錄',\n component: ,\n },\n {\n label: '月結算',\n component: ,\n },\n {\n label: '合約專區',\n component: ,\n },\n ];\n setTabs(tabs);\n }, [id]);\n\n if (!id) {\n return null;\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nDeliveryStaffDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { deliveryStaffStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function DeliveryStaffChip({ status }) {\n const classes = useStyles();\n\n const matchedOrderStatus = deliveryStaffStatus.find((item) => item.value === status);\n const label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nDeliveryStaffChip.propTypes = {\n status: PropTypes.number,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport DataTable from 'components/Table/DataTable';\nimport {\n listDeliveryStaffs,\n getDeliveryStaffsByCountyByIsActive,\n getDeliveryStaffsByIsActiveByCreatedAt,\n} from 'graphql/queries';\nimport { formatAddress } from 'utilities/format';\nimport DeliveryStaffDetails from 'components/DeliveryStaffDetails';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport DeliverStaffEditButton from 'forms/DeliverStaffForm/DeliverStaffEditButton';\nimport UserAvatar from 'components/UserAvatar';\nimport { counties } from '@silvergatedelivery/constants';\nimport DeliveryStaffChip from 'components/DeliveryStaffChip';\nimport { deliveryStaffStatus } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { getClientIdSchema } from 'forms/schemas';\nimport { useCache } from 'CacheProvider';\n\nexport default function DeliveryStaffTable({\n title = i18n.t('送餐大使'),\n description = '',\n queryIsActive = 1,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [clientOptions, setClientOptions] = useState();\n const { appGroup } = useCache();\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const groupKey = appGroup === 'FacilityAdmins' ? '' : appGroup;\n const cachedVisibleColumnKey = `app:table:${groupKey}${title}${description}:visibleColumns`;\n const cacheVisiableColumns = cache.get(cachedVisibleColumnKey) ? cache.get(cachedVisibleColumnKey).split(',') : undefined;\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n // filterList: [cache.get('app:location')].filter((x) => x),\n filter: true,\n sort: true,\n },\n },\n {\n name: 'clientId',\n label: '機構',\n options: {\n filter: true,\n sort: true,\n customBodyRender(clientId) {\n if (clientOptions) {\n return (clientOptions.find(({ id }) => id === clientId) || {}).name || '';\n }\n return '';\n },\n },\n },\n {\n name: 'isActive',\n label: '狀態',\n options: {\n display: true,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'tier',\n label: '層級',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '帳號',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名字',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '頭像',\n options: {\n filter: false,\n sort: false,\n customBodyRender(username) {\n return (\n \n );\n },\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n },\n {\n name: 'identificationCardId',\n label: '身分證字號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'address',\n label: '地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddress,\n },\n },\n {\n name: 'documents',\n label: '資料檔案',\n options: {\n filter: true,\n sort: true,\n customBodyRender(documents) {\n return !documents || documents.length === 0 ? '未上傳' : documents.length < 6 ? '部分上傳' : '已上傳';\n },\n },\n },\n {\n name: 'sTokenLastMonth',\n label: '上個月SToken',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'totalEarnedSToken',\n label: '總計入SToken',\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'completedOrderCount',\n label: '總訂單數',\n type: 'number',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'sTokenReportedAt',\n label: '上次SToken紀錄時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n // display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getDeliveryStaffsByCountyByIsActive',\n label: '按地區查詢',\n partitionKey: 'county',\n sortKey: 'isActive',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n size: 6,\n }, {\n label: '使用狀態',\n key: 'isActive',\n type: 'select',\n options: [\n { value: undefined, label: '全部' },\n ...deliveryStaffStatus,\n ],\n size: 6,\n }, {\n label: '姓名',\n key: 'name',\n size: 12,\n comparisonOperator: 'contains',\n }],\n operation: getDeliveryStaffsByCountyByIsActive,\n },\n {\n name: 'getDeliveryStaffsByIsActiveByCreatedAt',\n label: '按狀態查詢',\n partitionKey: 'isActive',\n sortKey: 'createdAt',\n fields: [{\n label: '使用狀態',\n key: 'isActive',\n type: 'select',\n options: deliveryStaffStatus,\n }],\n operation: getDeliveryStaffsByIsActiveByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '姓名',\n key: 'name',\n comparisonOperator: 'contains',\n }],\n operation: listDeliveryStaffs,\n },\n ]);\n setQueryParams({\n county: cache.get('app:location') || counties[0],\n isActive: queryIsActive,\n });\n }, []);\n\n useEffect(() => {\n (async () => {\n const [\n clientOptions,\n ] = await Promise.all([\n getClientIdSchema(null, '所屬機構', true, true, false),\n ]);\n setClientOptions(clientOptions);\n })();\n }, []);\n\n return (\n \n \n \n );\n}\n\nDeliveryStaffTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n queryIsActive: PropTypes.number,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { deliveryStaffOrderStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function DeliveryStaffOrderStatusChip({ status }) {\n const classes = useStyles();\n\n const matchedOrderStatus = deliveryStaffOrderStatus.find((item) => item.value === status);\n const label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nDeliveryStaffOrderStatusChip.propTypes = {\n status: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment-timezone';\nimport {\n counties,\n deliveryStaffOrderStatus,\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\n\nimport DataTable from 'components/Table/DataTable';\nimport { asyncListAll } from 'utilities/graph';\nimport {\n listDeliveryStaffOrders,\n getDeliveryStaffOrdersByStaffByDate,\n getDeliveryStaffOrdersByCountyByDeliveryBy,\n getDeliveryStaffOrdersByStatusByDate,\n} from 'graphql/queries';\nimport DeliverStaffForm from 'forms/DeliverStaffForm/DeliverStaffForm';\nimport OrderDialog from 'components/Order/OrderDialog';\nimport DeliveryStaffOrderStatusChip from './DeliveryStaffOrderStatusChip';\nimport cache from 'utilities/cache';\nimport { getTranslatedMealSlots } from 'utilities/translate';\nimport { deliveryResult } from '@silvergatedelivery/constants';\n\nconst lastWeek = moment().tz(TIME_ZONE).add(-7, 'days').format('YYYY-MM-DD');\nconst nextWeek = moment().tz(TIME_ZONE).add(7, 'days').format('YYYY-MM-DD');\n\nexport default function DeliveryStaffOrderTable({\n title = i18n.t('送餐紀錄'),\n description,\n deliveryStaffId,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [queryFunc, setQueryFunc] = useState();\n\n const options = {};\n const translatedMealSlots = getTranslatedMealSlots();\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffId',\n label: `${t('送餐大使')}編號`,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaff.name',\n label: t('送餐大使'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderId',\n label: '訂單編號',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: `${t('送餐紀錄')}狀態`,\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'mealSlot',\n label: '時段',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return translatedMealSlots.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'deliveryBy',\n label: `${t('送餐')}時間`,\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffFee',\n label: '費用',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'checkListIsComplete',\n label: `${t('送餐')}完成`,\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'deliveryResult',\n label: `${t('送餐')}結果`,\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (deliveryResult.find((item) => item.value === value) || {}).label || '';\n },\n },\n },\n {\n name: 'checkListReminder',\n label: t('生活提醒'),\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'checkListTransfer',\n label: t('轉贈愛心物資'),\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'checkListChat',\n label: t('跟長輩聊天關心'),\n type: 'checkbox',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'diary',\n label: t('送餐日誌'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryPosition',\n label: 'GPS位置',\n options: {\n filter: false,\n sort: true,\n customBodyRender(value) {\n const { latitude, longitude } = value || {};\n return (!latitude) ? '' : `${latitude}, ${longitude}`;\n },\n },\n },\n {\n name: 'deliveryPositionUpdatedAt',\n label: 'GPS更新時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderId',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(orderId) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n if (deliveryStaffId) {\n setQueryFunc(async () => {\n if (deliveryStaffId) {\n return asyncListAll(getDeliveryStaffOrdersByStaffByDate, { deliveryStaffId });\n }\n\n return asyncListAll(listDeliveryStaffOrders);\n });\n return;\n }\n\n setIndexes([\n {\n name: 'getDeliveryStaffOrdersByCountyByDeliveryBy',\n label: `按地區/${t('送餐')}時間查詢`,\n partitionKey: 'county',\n sortKey: 'deliveryBy',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n }, {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n }],\n operation: getDeliveryStaffOrdersByCountyByDeliveryBy,\n },\n {\n name: 'getDeliveryStaffOrdersByStatusByDate',\n label: `按狀態/${t('送餐')}時間查詢`,\n partitionKey: 'status',\n sortKey: 'deliveryBy',\n fields: [{\n label: '使用狀態',\n key: 'status',\n type: 'select',\n options: deliveryStaffOrderStatus,\n }, {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n }],\n operation: getDeliveryStaffOrdersByStatusByDate,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listDeliveryStaffOrders,\n },\n ]);\n setQueryParams({\n county: cache.get('app:location') || counties[0],\n deliveryBy: {\n from: lastWeek,\n to: nextWeek,\n },\n status: deliveryStaffOrderStatus[0].value,\n\n });\n }, [deliveryStaffId]);\n\n return (\n \n \n \n );\n}\n\nDeliveryStaffOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n deliveryStaffId: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { iLinkOrderStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function PandagoOrderStatusChip({ status }) {\n const classes = useStyles();\n\n const matchedOrderStatus = iLinkOrderStatus.find((item) => item.value === status);\n const label = matchedOrderStatus ? matchedOrderStatus.label : status;\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nPandagoOrderStatusChip.propTypes = {\n status: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\n\nexport default function ILinkOrderLogTable({\n title = '訂單更新紀錄',\n description,\n data,\n ...props\n}) {\n const options = {\n rowsPerPageOptions: [5, 10, 20, 50],\n rowsPerPage: 5,\n };\n\n const columns = [\n {\n name: 'Type_Code',\n label: '狀態代碼',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'Type',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'Time',\n label: '更新於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n ];\n\n return (\n \n \n \n );\n}\n\nILinkOrderLogTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listILinkOrders,\n getILinkOrdersByStatusByShouldBeSentToILink,\n getILinkOrdersByProcessStatusByShouldBeSentToILink,\n} from 'graphql/queries';\nimport Order from 'components/Order/Order';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport {\n TIME_ZONE,\n iLinkOrderStatus,\n processStatus,\n} from '@silvergatedelivery/constants';\nimport ProcessStatusChip from 'components/ProcessStatusChip';\nimport ILinkOrderStatusChip from 'components/ILinkOrderStatusChip';\nimport ILinkOrderLogTable from './ILinkOrderLogTable';\n\nconst past = moment().add(-3, 'days').tz(TIME_ZONE).format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function ILinkOrderTable({\n title = 'I-Link 訂單',\n description,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const [orderId, processlogs] = rowData;\n return (\n \n Type).reverse()} />\n \n \n );\n },\n };\n\n const columns = [\n {\n name: 'orderId',\n label: '訂單編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'processlogs',\n label: '紀錄',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'iLinkOrderId',\n label: 'I-Link 訂單編號',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'processStatus',\n label: '處理狀況',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'processStatusMessage',\n label: '處理資訊',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'cancelledReason',\n label: '取消原因',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '描述',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'fee',\n label: '費用',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'shouldBeSentToILinkAt',\n label: '預計處理時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderId',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getILinkOrdersByProcessStatusByShouldBeSentToILink',\n label: '按處理狀況查詢',\n partitionKey: 'processStatus',\n sortKey: 'shouldBeSentToILinkAt',\n fields: [{\n label: '處理狀況',\n key: 'processStatus',\n type: 'select',\n options: processStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToILinkAt',\n type: 'datetime',\n }],\n operation: getILinkOrdersByProcessStatusByShouldBeSentToILink,\n },\n {\n name: 'getILinkOrdersByStatusByShouldBeSentToILink',\n label: '按I-Link狀態查詢',\n partitionKey: 'status',\n sortKey: 'shouldBeSentToILinkAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: iLinkOrderStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToILinkAt',\n type: 'datetime',\n }],\n operation: getILinkOrdersByStatusByShouldBeSentToILink,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '預計送單時間',\n key: 'shouldBeSentToILinkAt',\n type: 'datetime',\n }],\n operation: listILinkOrders,\n },\n ]);\n setQueryParams({\n processStatus: 'processing',\n shouldBeSentToILinkAt: {\n from: past,\n to: todayDate,\n },\n });\n }, []);\n\n return (\n \n \n \n );\n}\n\nILinkOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Chip from '@material-ui/core/Chip';\n\nimport { lalamoveOrderStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n mapContainer: {\n flex: 1,\n },\n actionContainer: {\n padding: theme.spacing(2),\n },\n chip: {\n height: 22,\n margin: 2,\n fontWeight: 'bold',\n },\n}));\n\nexport default function LalamoveOrderStatusChip({ status }) {\n const classes = useStyles();\n\n const matchedOrderStatus = lalamoveOrderStatus.find((item) => item.value === status);\n const label = matchedOrderStatus ? matchedOrderStatus.label : 'N/A';\n const backgroundColor = matchedOrderStatus ? matchedOrderStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n}\n\nLalamoveOrderStatusChip.propTypes = {\n status: PropTypes.string,\n};\n","\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport LalamoveOrderStatusChip from 'components/LalamoveOrderStatusChip';\n\nexport default function LalamoveOrderLogTable({\n title = '訂單更新紀錄',\n description,\n data,\n ...props\n}) {\n const options = {\n rowsPerPageOptions: [5, 10, 20, 50],\n rowsPerPage: 5,\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'driver',\n label: '送餐員',\n type: 'json',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'created',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n ];\n\n return (\n \n \n \n );\n}\n\nLalamoveOrderLogTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport shortuuid from 'short-uuid';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listLalamoveOrders,\n getLalamoveOrdersByStatusByShouldBeSentToLalamove,\n getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove,\n} from 'graphql/queries';\nimport Order from 'components/Order/Order';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport {\n TIME_ZONE,\n lalamoveOrderStatus,\n processStatus,\n} from '@silvergatedelivery/constants';\nimport ProcessStatusChip from 'components/ProcessStatusChip';\nimport LalamoveOrderStatusChip from 'components/LalamoveOrderStatusChip';\nimport LalamoveOrderLogTable from 'components/LalamoveOrderLogTable.js';\n\nconst past = moment().add(-3, 'days').tz(TIME_ZONE).format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function LalamoveOrderTable({\n title = 'Lalamove 訂單',\n description,\n data,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [showQueryGenerator, setShowQueryGenerator] = useState(true);\n const [showNestedOrder, setShowNestedOrder] = useState(true);\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const [id, lalamoveDeliveryId, quotationId, orderIds, pickupIds, processlogs] = rowData; // eslint-disable-line no-unused-vars\n const orderIdsArray = orderIds.split(', ');\n return (\n \n \n {showNestedOrder && orderIdsArray.length == 1 && }\n \n );\n },\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lalamoveDeliveryId',\n label: 'Lalamove編號',\n options: {\n display: true,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'quotationId',\n label: '報價單編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'orderIds',\n label: '訂單編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n customBodyRender(orderIds) {\n return orderIds && orderIds.join(', ');\n },\n },\n },\n {\n name: 'orderIds',\n label: '取餐編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n customBodyRender(orderIds) {\n return orderIds && orderIds.map((orderId) => shortuuid().fromUUID(orderId).slice(-6)).join(', ');\n },\n },\n },\n {\n name: 'processlogs',\n label: '紀錄',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'driverId',\n label: '送餐員編號',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'driver',\n label: '送餐員',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender(driver) {\n const { name, phone } = driver || {};\n if (!name) return '';\n\n return `${name} ${phone || ''}`;\n },\n },\n },\n {\n name: 'processStatus',\n label: '處理狀況',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'processStatusMessage',\n label: '處理資訊',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'shareLink',\n label: '追蹤網頁',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(shareLink) {\n if (!shareLink) {\n return;\n }\n return (\n \n );\n },\n },\n },\n {\n name: 'cancelledReason',\n label: '取消原因',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '描述',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'fee',\n label: '送餐費用',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'shouldBeSentToLalamoveAt',\n label: '預計送單時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n // {\n // name: 'lalamoveOrderPayload',\n // label: 'Payload',\n // options: {\n // display: false,\n // filter: false,\n // sort: false,\n // customBodyRender(data) {\n // if (!data) return '';\n\n // return ;\n // },\n // },\n // },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'orderIds',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender(orderIds) {\n return (\n orderIds && orderIds.length === 1 &&\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n if (data) {\n setShowQueryGenerator(false);\n setShowNestedOrder(false);\n return;\n }\n setIndexes([\n {\n name: 'getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove',\n label: '按處理狀況查詢',\n partitionKey: 'processStatus',\n sortKey: 'shouldBeSentToLalamoveAt',\n fields: [{\n label: '處理狀況',\n key: 'processStatus',\n type: 'select',\n options: processStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToLalamoveAt',\n type: 'datetime',\n }],\n operation: getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove,\n },\n {\n name: 'getLalamoveOrdersByStatusByShouldBeSentToLalamove',\n label: '按Lalamove狀態查詢',\n partitionKey: 'status',\n sortKey: 'shouldBeSentToLalamoveAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: lalamoveOrderStatus,\n }, {\n label: '預計送單時間',\n key: 'shouldBeSentToLalamoveAt',\n type: 'datetime',\n }],\n operation: getLalamoveOrdersByStatusByShouldBeSentToLalamove,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '預計送單時間',\n key: 'shouldBeSentToLalamoveAt',\n type: 'datetime',\n }],\n operation: listLalamoveOrders,\n },\n ]);\n setQueryParams({\n processStatus: 'processing',\n shouldBeSentToLalamoveAt: {\n from: past,\n to: todayDate,\n },\n });\n }, [data]);\n\n return (\n \n \n \n );\n}\n\nLalamoveOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Order from 'components/Order/Order';\n// import OrderDialog from 'components/OrderDialog';\n\nexport default function OrderPage({ id: inId, computedMatch }) {\n const [id, setId] = useState();\n // const [open, setOpen] = useState(true);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n // setOpen(false)} />\n return ();\n}\n\nOrderPage.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport { green, red } from '@material-ui/core/colors';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\nexport default function SummaryCard({ title, value, prevValue, unit = '', appendix = '', period: inPeriod }) {\n const [period] = inPeriod.split('/');\n const classes = useStyles();\n\n let p;\n switch (period) {\n case 'year':\n p = '前一年';\n break;\n case 'month':\n p = '前一個月';\n break;\n case 'week':\n p = '前一週';\n break;\n case 'day':\n default:\n p = '前一日';\n break;\n }\n\n const diff = +(((prevValue ? (value - prevValue) / prevValue : value) * 100).toFixed(0));\n const isSame = diff === 0;\n const isIncreased = diff > 0;\n const desc = isSame ? `與${p}相同` : `與${p}(${unit}${prevValue}${appendix})相比 ${isIncreased?'增加':'減少'} ${Math.abs(diff)}%`;\n\n return (\n \n \n {title}\n \n \n {prevValue !== undefined && (isSame ? '' :\n isIncreased ?\n :\n )}\n {unit}{value}{appendix}\n \n {prevValue !== undefined &&\n \n {desc}\n }\n );\n}\n\n\nSummaryCard.propTypes = {\n title: PropTypes.string,\n value: PropTypes.number,\n prevValue: PropTypes.number,\n unit: PropTypes.string,\n appendix: PropTypes.string,\n period: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsivePie } from '@nivo/pie';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function PieCard({ title, data: inData, data2: inData2 }) {\n const classes = useStyles();\n\n let data = inData;\n let data2 = inData2;\n if (data && !Array.isArray(data)) {\n data = Object.keys(data).map((key) => {\n const { value, color } = data[key];\n return { id: key, label: key, value, color };\n });\n }\n\n if (data2 && !Array.isArray(data2)) {\n data2 = Object.keys(data2).map((key) => {\n const { value, color } = data[key];\n return { id: key, label: key, value, color };\n });\n }\n\n const colorFunc = data[0] && data[0].color ? ({ data }) => data.color : { scheme: 'nivo' };\n\n // global.logger.debug({ data, data2 });\n\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\n\nPieCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.any,\n data2: PropTypes.any,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsiveBar } from '@nivo/bar';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function BarCard({ title, data = [], dataKeys = [], mode = 'grouped' }) {\n const classes = useStyles();\n // global.logger.debug({ data, dataKeys });\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\n\nBarCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.array,\n dataKeys: PropTypes.array,\n mode: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { ResponsiveScatterPlot } from '@nivo/scatterplot';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n },\n value: {\n margin: theme.spacing(1),\n },\n}));\n\nexport default function PlotCard({ title, data = [] }) {\n const classes = useStyles();\n // global.logger.debug({ data });\n return (\n \n \n {title}\n \n \n
\n \n
\n
\n
);\n}\n\nPlotCard.propTypes = {\n title: PropTypes.string,\n data: PropTypes.array,\n};\n","import moment from 'moment-timezone';\n\nimport {\n getIssuesByCountyByCreatedAt,\n getDeliveryStaffsByCountyByCreatedAt,\n listClients,\n getClientsByCountyByCreatedAt,\n getEldersByCountyByCreatedAt,\n} from 'graphql/queries';\nimport {\n getOrdersByCountyByDate,\n} from './queries';\nimport { asyncListAll, asyncListAllAndUpdateLastItem } from 'utilities/graph';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { counties } from '@silvergatedelivery/constants';\n\nexport function getStartEndByPeriodName(inPeriod) {\n const [period, startBaseline, endBaseline] = inPeriod.split('/');\n const startBaseNumber = parseInt(startBaseline || '0');\n const endBaseNumber = parseInt(endBaseline || '0');\n const start = moment().add(startBaseNumber, `${period}s`).tz(TIME_ZONE).startOf(period);\n const end = moment().add(endBaseNumber, `${period}s`).tz(TIME_ZONE).endOf(period);\n return {\n start: start.toISOString(),\n end: end.toISOString(),\n prevStart: moment().tz(TIME_ZONE).add(-1 + startBaseNumber, `${period}s`).startOf(period).toISOString(),\n prevEnd: moment().tz(TIME_ZONE).add(-1 + endBaseNumber, `${period}s`).endOf(period).toISOString(),\n startFormat: start.format('YYYY-MM-DD'),\n endFormat: end.format('YYYY-MM-DD'),\n prevStartFormat: moment().tz(TIME_ZONE).add(-1 + startBaseNumber, `${period}s`).startOf(period).format('YYYY-MM-DD'),\n prevEndFormat: moment().tz(TIME_ZONE).add(-1 + endBaseNumber, `${period}s`).endOf(period).format('YYYY-MM-DD'),\n };\n}\n\nexport const getOrders = async (location, start, end, onUpdateLastItem) => {\n if (location) {\n return await asyncListAllAndUpdateLastItem(getOrdersByCountyByDate, {\n county: location,\n date: {\n between: [start, end],\n },\n filter: {\n status: { ne: 'cancelled' },\n },\n limit: 1000,\n }, onUpdateLastItem);\n } else {\n const result = await Promise.all(counties.map((county) => {\n return getOrders(county, start, end, onUpdateLastItem);\n }));\n return result.flat();\n }\n};\n\nexport const getNewOrders = async (location, start, end) => {\n // TODO: scan table太慢,等order.graphql可以新增getOrdersByCountyByCreated時再新增\n return [];\n // if (location) {\n // return asyncListAll(getOrdersByCountyByDate, {\n // county: location,\n // filter: {\n // createdAt: {\n // between: [start, end],\n // },\n // },\n // });\n // } else {\n // return asyncListAll(listOrders, {\n // filter: {\n // createdAt: {\n // between: [start, end],\n // },\n // },\n // });\n // }\n};\n\nexport const getNewClients = async (location, start, end) => {\n // TODO: useless now\n if (location) {\n return asyncListAll(getClientsByCountyByCreatedAt, {\n county: location,\n createdAt: {\n between: [start, end],\n },\n });\n } else {\n return asyncListAll(listClients, {\n filter: {\n createdAt: {\n between: [start, end],\n },\n },\n });\n }\n};\n\nexport const getNewElders = async (location, start, end) => {\n if (location) {\n return asyncListAll(getEldersByCountyByCreatedAt, {\n county: location,\n createdAt: {\n between: [start, end],\n },\n });\n } else {\n const result = await Promise.all(counties.map((county) => {\n return getNewElders(county, start, end);\n }));\n return result.flat();\n }\n};\n\nexport const getNewDeliveryStaffs = async (location, start, end) => {\n if (location) {\n return asyncListAll(getDeliveryStaffsByCountyByCreatedAt, {\n county: location,\n createdAt: {\n between: [start, end],\n },\n });\n } else {\n const result = await Promise.all(counties.map((county) => {\n return getNewDeliveryStaffs(county, start, end);\n }));\n return result.flat();\n }\n};\n\nexport const getIssues = async (location, start, end) => {\n if (location) {\n return asyncListAll(getIssuesByCountyByCreatedAt, {\n county: location,\n createdAt: {\n between: [start, end],\n },\n });\n } else {\n const result = await Promise.all(counties.map((county) => {\n return getIssues(county, start, end);\n }));\n return result.flat();\n }\n};\n","export const getOrdersByCountyByDate = /* GraphQL */ `\n query GetOrdersByCountyByDate(\n $county: String\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByCountyByDate(\n county: $county\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n date\n mealSlot\n deliveryBy\n status\n county\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n createdAt\n elder {\n id\n status\n isDisadvantaged\n }\n }\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect, useRef } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport Typography from '@material-ui/core/Typography';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport { Colors, counties } from '@silvergatedelivery/constants';\n\nimport SummaryCard from './components/SummaryCard';\nimport PieCard from './components/PieCard';\nimport BarCard from './components/BarCard';\nimport PlotCard from './components/PlotCard';\nimport {\n getOrders,\n // getNewOrders,\n getIssues,\n getNewDeliveryStaffs,\n // getNewClients,\n getNewElders,\n getStartEndByPeriodName,\n} from './helpers';\nimport { getChartDataMappings } from './charts';\nimport cache from 'utilities/cache';\n\nconst periodOptions = [{\n label: '本日',\n value: 'day',\n}, {\n label: '本週',\n value: 'week',\n}, {\n label: '本月',\n value: 'month',\n}, {\n label: '今年',\n value: 'year',\n}];\n\nconst periodOptions2 = [{\n label: '昨日',\n value: 'day/-1/-1',\n}, {\n label: '上週',\n value: 'week/-1/-1',\n}, {\n label: '前月',\n value: 'month/-1/-1',\n}, {\n label: '去年',\n value: 'year/-1/-1',\n}];\n\nconst monthOptions = Array(12).fill('').map((x, index) => {\n const offset = index + 1;\n return {\n label: moment().add(-offset, 'months').format('YYYY-MM'),\n value: `month/-${offset}/-${offset}`,\n };\n});\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n backgroundColor: Colors.background.light,\n minHeight: 'calc(100vh - 64px)',\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n filterContainer: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n buttonGroup: {\n 'display': 'flex',\n 'flexDirection': 'column',\n 'alignItems': 'center',\n '& > *': {\n margin: theme.spacing(1),\n },\n },\n}));\n\nexport default function Dashboard() {\n const classes = useStyles();\n\n const [data, setData] = useState({});\n const [chartData, setChartData] = useState();\n const [location, setLocation] = useState(cache.get('app:location') || '');\n const [monthSelected, setMonthSelected] = useState('');\n const [period, setPeriod] = useState(cache.get('app:admin:dashboard:period') || 'day'); // day, week, month, year\n const [isLoading, setIsLoading] = useState(true);\n const [title, setTitle] = useState('');\n // eslint-disable-next-line no-unused-vars\n const [lastProgressUpdated, setLastProgressUpdated] = useState();\n const progressStatus = useRef({});\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n\n cache.set('app:admin:dashboard:period', period);\n\n const onUpdateLastItem = (item, nextToken) => {\n if (nextToken) {\n if (item) {\n progressStatus.current[item.county] = item.date;\n setLastProgressUpdated(moment().toISOString());\n }\n } else {\n if (item) {\n progressStatus.current[item.county] = '完成';\n setLastProgressUpdated(moment().toISOString());\n }\n }\n };\n\n progressStatus.current = {};\n\n const {\n start,\n end,\n prevStart,\n prevEnd,\n startFormat,\n endFormat,\n // prevStartFormat,\n // prevEndFormat,\n } = getStartEndByPeriodName(period);\n\n setTitle(`${startFormat} - ${endFormat}`);\n\n global.logger.debug({ location, period, start, end, prevStart, prevEnd });\n\n const [\n orders,\n // prevOrders,\n // newOrders, prevNewOrders,\n issues, prevIssues,\n newDeliveryStaffs, prevNewDeliveryStaffs,\n // newClients, prevNewClients,\n newElders, prevNewElders,\n ] = await Promise.all([\n getOrders(location, startFormat, endFormat, onUpdateLastItem),\n // getOrders(location, prevStartFormat, prevEndFormat),\n // getNewOrders(location, start, end),\n // getNewOrders(location, prevStart, prevEnd),\n getIssues(location, start, end),\n getIssues(location, prevStart, prevEnd),\n getNewDeliveryStaffs(location, start, end),\n getNewDeliveryStaffs(location, prevStart, prevEnd),\n // getNewClients(location, start, end),\n // getNewClients(location, prevStart, prevEnd),\n getNewElders(location, start, end),\n getNewElders(location, prevStart, prevEnd),\n ]);\n\n setData({\n orders,\n // prevOrders,\n // newOrders,\n // prevNewOrders,\n issues,\n prevIssues,\n newDeliveryStaffs,\n prevNewDeliveryStaffs,\n // newClients,\n // prevNewClients,\n newElders,\n prevNewElders,\n\n });\n\n setIsLoading(false);\n })();\n }, [location, period]);\n\n useEffect(() => {\n if (!data.orders || !data.issues) return;\n\n const chartDataMappings = getChartDataMappings(data);\n const chartData = Object.keys(chartDataMappings)\n .filter((key) => {\n return !location || (location && !key.endsWith('ByCounty'));\n })\n .map((key) => chartDataMappings[key]);\n\n setChartData(chartData);\n }, [data, location]);\n\n if (isLoading || !chartData) {\n return (\n \n
\n {progressStatus.current && Object.keys(progressStatus.current).map((key) => {\n return \n {key} 讀取進度:{progressStatus.current[key]}\n ;\n })}\n
\n \n
);\n }\n\n return (\n \n \n \n \n \n \n {title}\n \n
\n \n {periodOptions.map((item, index)=>(\n {\n setPeriod(item.value);\n setMonthSelected('');\n }}\n >\n {item.label}\n \n ))}\n \n
\n
\n \n {periodOptions2.map((item, index)=>(\n {\n setPeriod(item.value);\n setMonthSelected('');\n }}\n >\n {item.label}\n \n ))}\n \n
\n \n {\n setPeriod(event.target.value || 'day');\n setMonthSelected(event.target.value);\n }}\n >\n 選擇月份\n {monthOptions.map(({ label, value })=>(\n {label}\n ))}\n \n \n \n setLocation(event.target.value)}\n >\n 全國\n {counties.map((county)=>(\n {county}\n ))}\n \n \n
\n
\n
\n\n {chartData.map((data, index) => (\n \n {renderChart(data, period)}\n \n ))}\n
\n
\n );\n}\n\nfunction renderChart({ type, title, value, prevValue, unit, appendix, data, data2, dataKeys, mode }, period) {\n switch (type) {\n case 'summary':\n return ();\n case 'pie':\n return ();\n case 'bar':\n return ();\n case 'plot':\n return ();\n default:\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepButton from '@material-ui/core/StepButton';\n\nimport { issueStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n}));\n\nconst filteredIssueStatus = issueStatus\n .filter(({ step }) => step !== void 0)\n .sort((a, b) => a.step > b.step ? 1 : -1);\n\nconst steps = filteredIssueStatus.map(({ label }) => label);\n\nexport default function IssueStatusProgress({ status }) {\n const classes = useStyles();\n const [activeStep, setActiveStep] = useState(0);\n const [completed, setCompleted] = useState({});\n\n useEffect(() => {\n const completed = filteredIssueStatus.map(({ step }) => {\n return 0 <= step && step <= activeStep;\n });\n setCompleted(completed);\n }, [activeStep]);\n\n useEffect(() => {\n if (status) {\n const matched = filteredIssueStatus.find(({ value }) => value === status);\n if (matched) {\n setActiveStep(matched.step);\n }\n }\n }, [status]);\n\n return (\n
\n \n {steps.map((label, index) => (\n \n \n {label}\n \n \n ))}\n \n
\n );\n}\n\nIssueStatusProgress.propTypes = {\n status: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\n\nimport CustomTimeline from 'components/CustomTimeline';\n\nexport default function IssueTimeline({ issue, comments = [] }) {\n if (!issue) return null;\n\n const render = (item, index) => {\n if (index === 0) {\n return (\n \n {issue.summary}\n \n \n {issue.description}\n \n \n 縣市:{issue.county}\n \n \n 類別:{issue.type}\n \n \n 通報:{issue.reportedBy}\n \n );\n } else {\n return (\n \n {item.content}\n \n \n {item.username}\n \n );\n }\n };\n\n return (\n \n );\n}\n\nIssueTimeline.propTypes = {\n issue: PropTypes.object,\n comments: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport { request, asyncListAll } from 'utilities/graph';\nimport {\n getIssueCommentsByIssueByCreatedAt,\n} from 'graphql/queries';\nimport {\n createIssueComment,\n updateIssue,\n} from 'graphql/mutations';\nimport Order from 'components/Order/Order';\nimport IssueStatusProgress from './IssueStatusProgress';\nimport IssueTimeline from './IssueTimeline';\nimport cache from 'utilities/cache';\nimport { issueStatus as allIssueStatus } from '@silvergatedelivery/constants';\n\nconst useStyles = makeStyles((theme) => ({\n orderContainer: {\n position: 'relative',\n overflow: 'auto',\n height: 'calc(100vh - 116px)',\n },\n actionContainer: {\n padding: theme.spacing(2),\n position: 'relative',\n overflow: 'auto',\n height: 'calc(100vh - 116px)',\n },\n selectFormControl: {\n minWidth: 100,\n },\n timeline: {\n flex: 1,\n },\n}));\n\nexport default function Issue({ issue, onUpdate }) {\n const classes = useStyles();\n const [comments, setComments] = useState([]);\n const [commentText, setCommentText] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [issueStatus, setIssueStatus] = useState();\n\n const onSubmit = async () => {\n setIsLoading(true);\n const username = cache.get('app:username');\n const userName = cache.get('app:userName');\n const now = new Date().toISOString();\n\n let content = commentText || '';\n if (issueStatus !== issue.status) {\n const oldstatus = allIssueStatus.find((item)=>item.value === issue.status);\n const newStatus = allIssueStatus.find((item)=>item.value === issueStatus);\n if (content) {\n content = `${content} (狀態:${oldstatus.label} => ${newStatus.label})`;\n } else {\n content = `狀態:${oldstatus.label} => ${newStatus.label}`;\n }\n }\n if (content) {\n const comment = {\n issueId: issue.id,\n username: userName,\n content,\n expirationUnixTime: Math.round(Date.now() / 1000) + 365 * 86400 * 3, // TODO: 存三年?\n createdAt: now,\n createdBy: username,\n updatedAt: now,\n updatedBy: username,\n };\n\n await request(createIssueComment, { input: comment });\n\n setComments([...comments, comment]);\n setCommentText('');\n }\n if (issueStatus !== issue.status) {\n const now = new Date().toISOString();\n const updatedIssue = {\n id: issue.id,\n status: issueStatus,\n updatedAt: now,\n updatedBy: username,\n };\n await request(updateIssue, { input: updatedIssue });\n }\n setIsLoading(false);\n onUpdate && onUpdate();\n };\n\n useEffect(() => {\n if (!issue || !issue.id) return;\n (async () => {\n setIsLoading(true);\n\n const data = await asyncListAll(getIssueCommentsByIssueByCreatedAt, { issueId: issue.id });\n setComments(data);\n setIssueStatus(issue.status);\n setIsLoading(false);\n })();\n }, [issue]);\n\n if (!issue || !issueStatus) return null;\n\n return (\n \n \n \n \n \n
\n \n
\n \n \n \n 狀態\n {\n setIssueStatus(event.target.value);\n }}\n >\n {allIssueStatus.map(({ label, value }) => (\n \n {label}\n \n ))}\n \n \n \n {\n setCommentText(event.target.value);\n }}\n style={{ marginBottom: 16 }}\n />\n \n \n
\n {issue.orderId &&\n \n \n }\n
\n );\n}\n\nIssue.propTypes = {\n issue: PropTypes.object,\n onUpdate: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport Chip from '@material-ui/core/Chip';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport Countdown from 'react-countdown';\n\nimport { asyncListAll } from 'utilities/graph';\nimport {\n listIssues,\n listAdmins,\n getIssuesByCountyByStatus,\n getIssuesByStatusByCreatedAt,\n} from 'graphql/queries';\nimport Issue from './components/Issue';\nimport {\n Colors,\n counties,\n issueStatus,\n AUTO_UPDATE_INTERVAL_IN_MILLISECONDS,\n} from '@silvergatedelivery/constants';\nimport { sortBy } from 'utilities/sorting';\nimport { formatDatetimeFromNow } from 'utilities/format';\nimport cache from 'utilities/cache';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: '#fff',\n },\n listContainer: {\n position: 'relative',\n overflow: 'auto',\n overflowX: 'hidden',\n maxHeight: 'calc(100vh - 64px)',\n },\n list: {\n width: '100%',\n backgroundColor: theme.palette.background.paper,\n // position: 'relative',\n // overflow: 'auto',\n // maxHeight: 'calc(100vh - 200px)',\n },\n chip: {\n border: '1px solid #cecece',\n borderRadius: 3,\n padding: 1,\n display: 'inline-block',\n marginRight: 6,\n marginBottom: 6,\n },\n issueContainer: {\n position: 'relative',\n overflow: 'auto',\n maxHeight: 'calc(100vh - 64px)',\n },\n selected: {\n borderLeft: `6px solid ${Colors.primary}`,\n paddingLeft: 10,\n },\n selectChips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n selectChip: {\n margin: 2,\n },\n filters: {\n padding: theme.spacing(2),\n },\n formControl: {\n marginBottom: theme.spacing(1),\n },\n}));\n\nexport default function IssueCenter() {\n const classes = useStyles();\n const [issues, setIssues] = useState([]);\n const [selectedIssue, setSelectedIssue] = useState();\n const [admins, setAdmins] = useState([]);\n const [query, setQuery] = useState({\n county: [cache.get('app:location')].filter((x) => x),\n status: ['pending', 'processing'],\n });\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [isLoading, setIsLoading] = useState(false);\n const [hasLoadAdmins, setHasLoadAdmins] = useState(false);\n // const [sortMethods, setSortMethods] = useState({\n // type: 0,\n // summary: 0,\n // createdAt: 0,\n // updatedAt: 0,\n // status: 0,\n // });\n\n const renderChipValue = (selected) => (\n
\n {selected.map((value) => {\n const matchedStatus = issueStatus.find((item)=>item.value === value);\n const label = matchedStatus ? matchedStatus.label : value;\n const backgroundColor = matchedStatus ? matchedStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n })}\n
\n );\n\n const updateQuery = (key, value) => {\n query[key] = value;\n setQuery({ ...query });\n };\n\n useEffect(() => {\n if (hasLoadAdmins) return;\n (async () => {\n setAdmins(await asyncListAll(listAdmins));\n setHasLoadAdmins(true);\n })();\n }, [hasLoadAdmins]);\n\n useEffect(() => {\n if (!query) return;\n (async () => {\n try {\n setIsLoading(true);\n const { county, status } = query;\n\n let data = [];\n if (county.length > 0) {\n await Promise.all(county.map(async (countyItem) => {\n if (status.length > 0) {\n await Promise.all(status.map(async (statusItem) => {\n const params = {\n county: countyItem,\n status: { eq: statusItem },\n };\n const records = await asyncListAll(getIssuesByCountyByStatus, params);\n data = [...data, ...records];\n }));\n } else {\n const params = {\n county: countyItem,\n };\n const records = await asyncListAll(getIssuesByCountyByStatus, params);\n data = [...data, ...records];\n }\n }));\n } else\n if (status.length > 0) {\n await Promise.all(status.map(async (item) => {\n const records = await asyncListAll(getIssuesByStatusByCreatedAt, { status: item });\n data = [...data, ...records];\n }));\n } else {\n data = await asyncListAll(listIssues);\n }\n\n data = data.sort(sortBy('updatedAt', true));\n\n setIssues(data);\n setSelectedIssue(data[0]);\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [query, lastUpdatedAt]);\n\n return (\n \n \n \n \n 距離下次自動更新:\n {!isLoading &&\n setLastUpdatedAt(Date.now())}\n />}\n setLastUpdatedAt(Date.now())}>\n \n \n \n \n 縣市\n updateQuery('county', event.target.value)}\n input={}\n renderValue={renderChipValue}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n -1} />\n \n \n ))}\n \n \n \n 狀態\n updateQuery('status', event.target.value)}\n input={}\n renderValue={renderChipValue}\n disabled={isLoading}\n >\n {issueStatus.map((item) => (\n \n -1} />\n \n \n ))}\n \n \n \n \n {issues.map((issue, index)=>(\n {\n global.logger.debug(issue);\n setSelectedIssue(issue);\n }}\n disabled={isLoading}\n className={selectedIssue && selectedIssue.id === issue.id ? classes.selected : ''}\n >\n \n \n {issue.summary}\n \n \n {issue.description}\n \n \n \n \n \n 更新於 {formatDatetimeFromNow(issue.updatedAt)}\n \n \n 通報於 {formatDatetimeFromNow(issue.createdAt)}\n \n \n {/* }\n secondaryTypographyProps={{ align: 'left', style: { marginTop: 8 } }}\n /> */}\n \n ))}\n \n \n \n {\n setIssues([...issues]);\n }}\n />\n \n \n );\n}\n\nfunction IssueChips({ issue }) {\n const classes = useStyles();\n const { label: statusLabel, color: statusColor } = issueStatus.find(({ value }) => value === issue.status);\n return (\n \n {statusLabel}\n {issue.priority}\n {issue.county}\n {issue.type}\n {issue.assignee && {issue.assignee}}\n );\n}\n\nIssueChips.propTypes = {\n issue: PropTypes.object.isRequired,\n};\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport UserTable from 'components/UserTable';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n flex: 1,\n padding: theme.spacing(2),\n overflow: 'auto',\n },\n}));\n\nexport default function AppUsers(args) {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n","export const getEldersByClientByStatus = /* GraphQL */ `\n query GetEldersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n identificationCardId\n serviceCode\n sortOrder\n noteForDelivery\n noteForMeal\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n supervisorId\n linkGroupName\n fixedDeliveryStaffFee\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n\nexport const getEldersByServiceCodeByStatus = /* GraphQL */ `\n query GetEldersByServiceCodeByStatus(\n $serviceCode: String\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByServiceCodeByStatus(\n serviceCode: $serviceCode\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n identificationCardId\n serviceCode\n sortOrder\n noteForDelivery\n noteForMeal\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n supervisorId\n linkGroupName\n paymentBankIndex\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n username\n name\n facilitySettings {\n dba\n }\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getEldersByClientByServiceCode = /* GraphQL */ `\n query GetEldersByClientByServiceCode(\n $clientId: ID\n $serviceCode: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByServiceCode(\n clientId: $clientId\n serviceCode: $serviceCode\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n identificationCardId\n serviceCode\n sortOrder\n noteForDelivery\n noteForMeal\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n supervisorId\n linkGroupName\n paymentBankIndex\n createdAt\n createdBy\n updatedAt\n updatedBy\n client {\n id\n username\n name\n facilitySettings {\n dba\n }\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryStaffId\n restaurantId\n clientId\n mealSlot\n date\n deliveryBy\n status\n category\n totalCost\n total\n quantity\n mealItems {\n name\n quantity\n price\n cost\n note\n surcharges {\n name\n price\n }\n }\n direction {\n durationInSeconds\n }\n linkGroupElderIds\n }\n nextToken\n }\n }\n`;\n\nexport const getOrdersByElderByDate = /* GraphQL */ `\n query GetOrdersByElderByDate(\n $elderId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByElderByDate(\n elderId: $elderId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryStaffId\n restaurantId\n clientId\n mealSlot\n date\n deliveryBy\n status\n category\n totalCost\n total\n quantity\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n deliveryStaffFee\n direction {\n distance\n distanceInMeters\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getOrdersByStatusByDate = /* GraphQL */ `\n query GetOrdersByStatusByDate(\n $status: OrderStatus\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByStatusByDate(\n status: $status\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryStaffId\n restaurantId\n clientId\n date\n mealSlot\n deliveryBy\n status\n category\n totalCost\n total\n quantity\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getRestaurantsByClientByIsActive = /* GraphQL */ `\n query GetRestaurantsByClientByIsActive(\n $clientId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByClientByIsActive(\n clientId: $clientId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n restaurantOwnerId\n isActive\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getPandagoOrdersByProcessStatusByShouldBeSentToPandago = /* GraphQL */ `\n query GetPandagoOrdersByProcessStatusByShouldBeSentToPandago(\n $processStatus: ProcessStatus\n $shouldBeSentToPandagoAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByProcessStatusByShouldBeSentToPandago(\n processStatus: $processStatus\n shouldBeSentToPandagoAt: $shouldBeSentToPandagoAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n status\n paymentMethod\n amount\n description\n fee\n estimatedPickupTime\n estimatedDeliveryTime\n driver {\n name\n phoneNumber\n }\n cancelledBy\n cancelledReason\n processStatus\n processStatusMessage\n # processStatusLastCheckedAt\n # processlogs\n shouldBeSentToPandagoAt\n # pandagoOrderPayload\n note\n orderId\n }\n nextToken\n }\n }\n`;\n\nexport const getOrder = /* GraphQL */ `\n query GetOrder($id: ID!) {\n getOrder(id: $id) {\n id\n clientId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n elder {\n name\n address {\n county\n district\n street\n zipCode\n lat\n lng\n }\n }\n restaurant {\n name\n address {\n county\n district\n street\n zipCode\n lat\n lng\n }\n }\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n }\n \n }\n }\n`;\n\nexport const getUberOrdersByProcessStatusByShouldBeSentToUber = /* GraphQL */ `\n query GetUberOrdersByProcessStatusByShouldBeSentToUber(\n $processStatus: ProcessStatus\n $shouldBeSentToUberAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUberOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getUberOrdersByProcessStatusByShouldBeSentToUber(\n processStatus: $processStatus\n shouldBeSentToUberAt: $shouldBeSentToUberAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n uberDeliveryId\n quoteId\n status\n complete\n kind\n uuid\n liveMode\n manifestReference\n fee\n courier {\n name\n rating\n vehicleType\n vehicleMake\n vehicleModel\n vehicleColor\n phoneNumber\n imgHref\n location {\n lat\n lng\n }\n }\n trackingUrl\n undeliverableAction\n undeliverableReason\n cancelledReason\n deliverableAction\n courierNotes\n amount\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n # processlogs\n shouldBeSentToUberAt\n # uberQuotePayload\n # uberOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n\nexport const getPandagoOrdersByOrderByCreatedAt = /* GraphQL */ `\n query GetPandagoOrdersByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPandagoOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPandagoOrdersByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n pandagoOrderId\n orderId\n # status\n # paymentMethod\n # amount\n # description\n # fee\n # estimatedPickupTime\n # estimatedDeliveryTime\n driver {\n id\n name\n phoneNumber\n }\n # cancelledBy\n # cancelledReason\n # processStatus\n # processStatusMessage\n # processStatusLastCheckedAt\n # processlogs\n # shouldBeSentToPandagoAt\n # pandagoOrderPayload\n # proofOfDeliveryS3Key\n # note\n # orderId\n # elderId\n # restaurantId\n # clientId\n # deliveryStaffId\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n }\n nextToken\n }\n }\n`;\n\nexport const getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove = /* GraphQL */ `\n query GetLalamoveOrdersByProcessStatusByShouldBeSentToLalamove(\n $processStatus: ProcessStatus\n $shouldBeSentToLalamoveAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelLalamoveOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove(\n processStatus: $processStatus\n shouldBeSentToLalamoveAt: $shouldBeSentToLalamoveAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n lalamoveDeliveryId\n quotationId\n priceBreakdown {\n base\n extraMileage\n surcharge\n totalExcludePriorityFee\n total\n currency\n priorityFee\n }\n priorityFee\n driverId\n shareLink\n status\n distance {\n value\n unit\n }\n fee\n driver {\n driverId\n name\n phone\n plateNumber\n }\n description\n processStatus\n processStatusMessage\n processStatusLastCheckedAt\n processlogs\n shouldBeSentToLalamoveAt\n lalamoveQuotePayload\n lalamoveOrderPayload\n note\n orderId\n elderId\n restaurantId\n clientId\n deliveryStaffId\n orderIds\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","import moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { sortBy } from 'utilities/sorting';\n\nexport const getSplitNumberMappings = (value) => {\n const numberString = `${value}`.split('');\n\n return {\n 十萬: numberString[numberString.length - 6] || '',\n 萬: numberString[numberString.length - 5] || '',\n 千: numberString[numberString.length - 4] || '',\n 百: numberString[numberString.length - 3] || '',\n 十: numberString[numberString.length - 2] || '',\n 元: numberString[numberString.length - 1] || '',\n };\n};\n\nexport const getMonthDates = (inMonth = 'YYYY-MM', format = 'DD dddd') => {\n const daysInMonth = moment(inMonth).daysInMonth();\n const arrDays = Array(daysInMonth).fill('').map((x, index) => {\n const d = moment(inMonth)\n .startOf('month')\n .add(index, 'days');\n let label = d.locale('zh-tw').format(format);\n if (format === 'DD dddd') {\n label = label.replace(' 星期', '(') + ')';\n }\n return {\n date: d.format('YYYY-MM-DD'),\n label,\n };\n });\n\n return arrDays;\n};\n\nexport const convertDateToZhFormat = (inDate = 'YYYY-MM-DD') => {\n const [year, month, day] = inDate.split('-');\n\n return `${parseInt(year) - 1911}/${month}/${day}`;\n};\n\nexport const getROCYear = (yearMonth) => {\n if (!yearMonth) return '';\n const [year] = yearMonth.split('-');\n return `${parseInt(year) - 1911}`;\n};\n\nfunction alphaToNum(alpha) {\n let i = 0;\n let num = 0;\n const len = alpha.length;\n\n for (; i < len; i++) {\n num = num * 26 + alpha.charCodeAt(i) - 0x40;\n }\n\n return num - 1;\n}\n\nfunction numToAlpha(num) {\n let alpha = '';\n\n for (; num >= 0; num = parseInt(num / 26, 10) - 1) {\n alpha = String.fromCharCode(num % 26 + 0x41) + alpha;\n }\n\n return alpha;\n}\n\nexport const buildColumnsArray = (range) => {\n let i;\n const res = [];\n const rangeNum = range.split(':').map((val) => {\n return alphaToNum(val.replace(/[0-9]/g, ''));\n });\n const start = rangeNum[0];\n const end = rangeNum[1] + 1;\n\n for (i = start; i < end; i++) {\n res.push(numToAlpha(i));\n }\n\n return res;\n};\n\nexport const processShareOrder = (elders, orders) => {\n const linkGroupMappings = {};\n const log = [];\n elders.forEach((elder) => {\n if (elder.linkGroupName) {\n const elderOrders = orders.filter((({ elderId }) => elderId === elder.id));\n const data = linkGroupMappings[elder.linkGroupName] || {\n linkGroupName: elder.linkGroupName,\n elderIds: [],\n sharedOrders: [],\n };\n data.elderIds.push(elder.id);\n data.sharedOrders = [\n ...data.sharedOrders,\n ...elderOrders,\n ];\n linkGroupMappings[elder.linkGroupName] = data;\n }\n });\n\n Object.keys(linkGroupMappings).forEach((key) => {\n const { elderIds, sharedOrders } = linkGroupMappings[key];\n sharedOrders.forEach((order) => {\n let showLog = false;\n // 處理史家四人狀況,午餐一人,晚餐四人\n let numberOfMeals = elderIds.length - 1; // copy 到另外三人\n if (order.mealItems && order.mealItems.length === 1) { // 一種餐點,不同份數 (如果是多種餐點可能會錯掉,沒辦法產出正確報表)\n numberOfMeals = order.mealItems[0].quantity - 1; // 如果只有一份就不copy到其他人\n }\n const copiedTo = [];\n if (numberOfMeals < elderIds.length - 1) {\n showLog = true;\n }\n if (numberOfMeals > 0) {\n const elderIdsToShare = order.linkGroupElderIds && order.linkGroupElderIds.length !== 0 ? order.linkGroupElderIds : elderIds;\n elderIdsToShare.forEach((elderId) => {\n const matched = orders.find((x) => x.id === order.id && x.elderId === elderId);\n if (!matched && numberOfMeals > 0) {\n if (order.mealItems) {\n order.mealItems[0].quantity -= 1;\n }\n const copiedOrder = JSON.parse(JSON.stringify(order));\n copiedOrder.elderId = elderId;\n if (copiedOrder.mealItems) {\n copiedOrder.mealItems[0].quantity = 1;\n }\n orders.push(copiedOrder);\n numberOfMeals -= 1;\n copiedTo.push(elderId);\n }\n });\n }\n if (showLog) {\n const elderName = elders.find(({ id }) => id === order.elderId).name;\n const copiedToNames = copiedTo.map((elderId) => {\n const elder = elders.find(({ id }) => id === elderId);\n return elder.name;\n });\n // console.log(`家庭代碼缺少餐點 ${key} ${order.id} ${order.date} ${order.mealSlot} 訂單從 ${elderName} 複製到 ${copiedToNames.join(', ')}`);\n log.push({\n '編號': order.id,\n '家庭代碼': key,\n '訂單送餐對象': elderName,\n '日期': order.date,\n '餐別': order.mealSlot === 'lunch' ? '午餐' : '晚餐',\n '餐點分配對象': copiedToNames.join(','),\n });\n }\n });\n });\n return log;\n};\n\nexport const processDisadvantagedTypes = (selectedMonth, elders, inFromDate, inToDate) => {\n const fromDate = inFromDate || moment(selectedMonth).tz(TIME_ZONE).startOf('month').format('YYYY-MM-DD');\n const endDate = inToDate ?\n moment(inToDate).tz(TIME_ZONE).add(1, 'days').format('YYYY-MM-DD') :\n moment(selectedMonth).tz(TIME_ZONE).endOf('month').add(1, 'days').format('YYYY-MM-DD');\n elders.forEach((elder) => {\n const { disadvantagedTypesHistory, disadvantagedTypes } = elder;\n if (disadvantagedTypesHistory && disadvantagedTypesHistory.length !== 0) {\n const disadvantagedTypesSlot = [];\n disadvantagedTypesHistory.sort(sortBy('approvedDate')).forEach(({ approvedDate, disadvantagedTypes }, index) => {\n if (approvedDate === fromDate) {\n disadvantagedTypesSlot.push({\n start: approvedDate,\n type: disadvantagedTypes,\n });\n } else if (approvedDate > fromDate) {\n if (approvedDate <= endDate) {\n if (disadvantagedTypesSlot.length === 0) {\n disadvantagedTypesSlot.push({\n start: fromDate,\n end: approvedDate,\n type: index === 0 ? '一般' : disadvantagedTypesHistory[index - 1].disadvantagedTypes,\n });\n disadvantagedTypesSlot.push({\n start: approvedDate,\n type: disadvantagedTypes,\n });\n } else {\n disadvantagedTypesSlot[disadvantagedTypesSlot.length - 1].end = approvedDate;\n disadvantagedTypesSlot.push({\n start: approvedDate,\n type: disadvantagedTypes,\n });\n }\n } else { // approvedDate > endOfSelectedMonth\n if (disadvantagedTypesSlot.length === 0) {\n disadvantagedTypesSlot.push({\n start: fromDate,\n type: index === 0 ? '一般' : disadvantagedTypesHistory[index - 1].disadvantagedTypes,\n });\n }\n }\n }\n });\n if (disadvantagedTypesSlot.length === 0) {\n disadvantagedTypesSlot.push({\n start: fromDate,\n type: disadvantagedTypesHistory[disadvantagedTypesHistory.length - 1].disadvantagedTypes,\n });\n }\n disadvantagedTypesSlot[disadvantagedTypesSlot.length - 1].end = endDate;\n elder.disadvantagedTypesSlot = disadvantagedTypesSlot;\n } else if (!disadvantagedTypes) {\n elder.disadvantagedTypesSlot = [{\n start: fromDate,\n end: endDate,\n type: '一般',\n }];\n }\n });\n};\n\nexport const unifyCellStyle = (worksheet, rowCount = 1, colRange = 'A:BB', style) => {\n const columnNames = buildColumnsArray(colRange);\n\n style = style || {\n alignment: {\n wrapText: true,\n vertical: 'top',\n // horizontal: 'center',\n },\n };\n\n Array(rowCount).fill('').map((x, index) => {\n columnNames.forEach((col) => {\n const name = `${col}${index+1}`;\n if (worksheet[name]) {\n worksheet[name].s = style;\n }\n });\n });\n\n return worksheet;\n};\n\nexport const numberToChineseUpper = (number) => {\n const chineseNumbers = ['', '壹', '貳', '參', '肆', '伍', '陸', '柒', '捌', '玖'];\n const chineseUnits = ['', '拾', '佰', '仟'];\n const chineseBigUnits = ['', '萬', '億', '兆', '京'];\n\n const numStr = number.toString();\n let result = '';\n let groupCount = 0;\n let groupStr = '';\n\n for (let i = numStr.length - 1; i >= 0; i--) {\n const digit = parseInt(numStr[i]);\n if (digit !== 0) {\n groupStr = chineseNumbers[digit] + chineseUnits[groupCount % 4] + groupStr;\n } else {\n if (groupStr !== '') {\n groupStr = '零' + groupStr;\n }\n }\n\n if (groupCount % 4 === 3 || i === 0) {\n result = groupStr + chineseBigUnits[Math.floor(groupCount / 4)] + result;\n groupStr = '';\n }\n groupCount++;\n }\n\n if (result === '') {\n return '零';\n }\n\n return result;\n};\n\nexport const getWeeksOfMonth = (month) => {\n const weeks = [];\n\n const firstDayOfMonth = moment(month, 'YYYY-MM').startOf('month');\n const lastDayOfMonth = moment(month, 'YYYY-MM').endOf('month');\n\n const startOfWeek = firstDayOfMonth.clone().startOf('week').add(1, 'days'); // Monday\n\n while (startOfWeek <= lastDayOfMonth) {\n const endOfWeek = startOfWeek.clone().add(6, 'days');\n weeks.push({\n start: startOfWeek.clone().format('YYYY-MM-DD'),\n end: endOfWeek.format('YYYY-MM-DD'),\n });\n startOfWeek.add(7, 'days');\n }\n\n return weeks;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Icon from '@material-ui/core/Icon';\nimport EmojiObjectsOutlinedIcon from '@material-ui/icons/EmojiObjectsOutlined';\n\nexport default function LabelWithToolTip({ label, tooltip, color='#FFD700' }) {\n return (\n \n {label}\n \n \n \n \n \n \n );\n}\n\nLabelWithToolTip.propTypes = {\n label: PropTypes.string.isRequired,\n tooltip: PropTypes.string.isRequired,\n color: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport { utils, write } from 'xlsx';\nimport JSZip from 'jszip';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport TextField from '@material-ui/core/TextField';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { download } from 'utilities/file';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { formatAddress, formatAge, formatGender } from 'utilities/format';\nimport { getEldersByClientByStatus, getOrdersByClientByDate } from './queries';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { processShareOrder, processDisadvantagedTypes } from './CountyPrsReport/workbooks/helpers';\nimport LabelWithToolTip from './LabelWithToolTip';\n\nconst DEFAULT_SERVICE_CODE = 'OT01';\nconst DEFAULT_GOV_QUALIFIED_PRICE = 100;\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nconst defaultLunchStartTime = '10:00';\nconst defaultLunchEndTime = '12:00';\nconst defaultDinnerStartTime = '16:00';\nconst defaultDinnerEndTime = '18:00';\n\n// 衛福部支審系統報表\n// Ministry of Health and Welfare Payment Review Report\nexport default function MohwPrsReport({ clientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n // const [clientIndex, setClientIndex] = useState(0);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeAllElders, setIncludeAllElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(true);\n const [groupByDistrict, setGroupByDistrict] = useState(false);\n const [groupByAge, setGroupByAge] = useState(false);\n const [mergeIntoOneFile, setMergeIntoOneFile] = useState(false);\n const [nameInNote, setNameInNote] = useState(false);\n const [deliveryByInServiceTime, setDeliveryByInServiceTime] = useState(false);\n const [useDeliveryStaffId, setUseDeliveryStaffId] = useState(false);\n const [displayExtraOptions, setDisplayExtraOptions] = useState(false);\n const [govQualifiedPrice, setGovQualifiedPrice] = useState(DEFAULT_GOV_QUALIFIED_PRICE);\n const [lunchStartTime, setlunchStartTime] = useState(defaultLunchStartTime);\n const [lunchEndTime, setlunchEndTime] = useState(defaultLunchEndTime);\n const [dinnerStartTime, setDinnerStartTime] = useState(defaultDinnerStartTime);\n const [dinnerEndTime, setDinnerEndTime] = useState(defaultDinnerEndTime);\n const [includeNonDisElders, setIncludeNonDisElders] = useState(false);\n const [applyDefaultDeliveryStaff, setApplyDefaultDeliveryStaff] = useState(false);\n const excludeNonFoodDeliveryOrders = true;\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n const monthString = from.format('YYYY/MM');\n const period = `${fromDate}__${toDate}`;\n // const client = clientOptions[clientIndex];\n const client = clientOptions.find(({ id }) => id === selectedClientId);\n\n global.logger.debug({\n // clientIndex,\n selectedClientId,\n client,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const allSummaryData = [];\n\n const deliveryStaffIds = [];\n\n const [\n elders,\n allOrders,\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId: client.id,\n status: includeAllElders ? undefined : { eq: '使用中' },\n filter: includeNonDisElders ? undefined : {\n isDisadvantaged: {\n eq: 1,\n },\n },\n }),\n asyncListAll(getOrdersByClientByDate, {\n clientId: client.id,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n ]);\n\n allOrders.forEach(({ deliveryStaffId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n });\n\n if (applyDefaultDeliveryStaff) {\n elders.forEach((elder) => {\n if (elder.defaultDeliveryStaffId && !deliveryStaffIds.includes(elder.defaultDeliveryStaffId)) {\n deliveryStaffIds.push(elder.defaultDeliveryStaffId);\n }\n });\n }\n\n global.logger.debug('deliveryStaffIds', deliveryStaffIds);\n\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n if (!useDeliveryStaffId) return {};\n\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n identificationCardId\n }\n }\n `, { id });\n return data;\n }));\n\n const summaryDataMapping = {};\n\n const zip = new JSZip();\n\n const zipDirs = {};\n\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n const filteredAllOrders = allOrders\n .filter(({ status }) => includedOrderStatus.includes(status));\n\n const shareOrderLog = processShareOrder(elders, filteredAllOrders);\n processDisadvantagedTypes(selectedMonth, elders);\n\n const getSanitizedElderName = (name) => name\n // .replace(/ /g, '')\n .replace(/\\\\/g, '')\n .replace(/\\//g, '')\n .replace(/\\?/g, '')\n .replace(/\\*/g, '')\n .replace(/\\[/g, '')\n .replace(/\\]/g, '');\n const getRowsByElder = (elder) => {\n let rows = [];\n const { disadvantagedTypesSlot = [] } = elder;\n if (disadvantagedTypesSlot.length === 0) {\n disadvantagedTypesSlot.push({\n start: moment(selectedMonth).tz(TIME_ZONE).startOf('month').format('YYYY-MM-DD'),\n end: moment(selectedMonth).tz(TIME_ZONE).endOf('month').add(1, 'days').format('YYYY-MM-DD'),\n type: '未知',\n });\n }\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n let orders = filteredAllOrders\n .filter(({ elderId }) => elderId === elder.id);\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n orders = orders.filter(({ date }) => date >= start && date < end);\n if (orders.length === 0) {\n return;\n }\n const sanitizedElderName = getSanitizedElderName(elder.name);\n const getRowsByOrders = (orders) => {\n return orders\n .sort((a, b) => a.mealSlot < b.mealSlot ? 1 : -1)\n .sort((a, b) => a.deliveryBy > b.deliveryBy ? 1 : -1)\n .map((order) => {\n const deliveryBy = moment(order.deliveryBy).tz(TIME_ZONE);\n const [year, mmdd] = deliveryBy.format('YYYY-MMDD').split('-');\n const dateString = `${(parseInt(year) - 1911)}${mmdd}`;\n let deliveryStaffId = order.deliveryStaffId;\n if (applyDefaultDeliveryStaff && elder.defaultDeliveryStaffId) {\n deliveryStaffId = elder.defaultDeliveryStaffId;\n }\n const deliveryStaff = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n\n let serviceStartHour =\n order.mealSlot === 'lunch' ? parseInt(lunchStartTime.split(':')[0]) : parseInt(dinnerStartTime.split(':')[0]);\n let serviceStartMinute =\n order.mealSlot === 'lunch' ? parseInt(lunchStartTime.split(':')[1]) : parseInt(dinnerStartTime.split(':')[1]);\n let serviceEndtHour =\n order.mealSlot === 'lunch' ? parseInt(lunchEndTime.split(':')[0]) : parseInt(dinnerEndTime.split(':')[0]);\n let serviceEndMinute =\n order.mealSlot === 'lunch' ? parseInt(lunchEndTime.split(':')[1]) : parseInt(dinnerEndTime.split(':')[1]);\n if (deliveryByInServiceTime) {\n // const offset = (order.direction && order.direction.durationInSeconds) ? order.direction.durationInSeconds : 0;\n const offset = 0; // 秉鑫決定不套用運送時間\n const serviceStart = moment(order.deliveryBy).add(offset, 'second').tz(TIME_ZONE);\n serviceStartHour = serviceStart.hour();\n serviceStartMinute = serviceStart.minute();\n const serviceEnd = moment(order.deliveryBy).add(30 * 60 + offset, 'second').tz(TIME_ZONE);\n serviceEndtHour = serviceEnd.hour();\n serviceEndMinute = serviceEnd.minute();\n }\n let serviceStaffIdentificationCardId = elder.supervisorId || '督導身分證字號';\n if (useDeliveryStaffId) {\n serviceStaffIdentificationCardId = deliveryStaff.identificationCardId;\n }\n return {\n '身分證字號': (elder.identificationCardId || '').toUpperCase(),\n '服務日期(請輸入7碼)': dateString, // ex: 107010 民國\n '服務項目代碼': elder.serviceCode || DEFAULT_SERVICE_CODE, // ex OT01\n '服務類別\\n1.補助\\n2.自費': 1, // elder.isDisadvantaged ? 1 : 2,\n '數量\\n(僅整數)': 1, // order.mealItems.reduce((sum, { quantity }) => sum + quantity, 0),\n '單價': govQualifiedPrice || order.total, // 核定單價\n '服務人員身分證': serviceStaffIdentificationCardId,\n '起始時段-小時\\n(24小時制)': serviceStartHour,\n '起始時段-分鐘': serviceStartMinute,\n '結束時段-小時\\n(24小時制)': serviceEndtHour,\n '結束時段-分鐘': serviceEndMinute,\n // below items are not required\n '備註': nameInNote ? sanitizedElderName : '',\n '服務人員身分證2': '',\n '服務人員身分證3': '',\n '服務人員身分證4': '',\n '服務人員身分證5': '',\n '不申報AA09填1': '',\n '訪視未遇填1': '',\n 'C碼必填-復能目標達成情形\\n1.尚未滿服務組數\\n2.滿服務組數且已達復能目標\\n3.滿服務組數但尚未達復能目標\\n4.未滿服務組數已結案,且已達復能目標\\n5.未滿服務組數已結案,但未達復能目標': '',\n 'C碼必填-復能目標': '',\n 'C碼必填-指導對象': '',\n 'C碼必填-服務內容': '',\n 'C碼必填-指導建議摘要': '',\n 'OT01必填-餐別\\n1.早餐\\n2.午餐\\n3.晚餐': order.mealSlot === 'lunch' ? 2 : 3,\n // 07/02/2023 支審系統新增欄位\n 'BD03、DA01使用-出發地': '',\n 'BD03、DA01使用-目的地': '',\n 'BD03、DA01使用-出發地(緯度)': '', // V14\n 'BD03、DA01使用-出發地(經度)': '', // V14\n 'BD03、DA01使用-目的地(緯度)': '', // V14\n 'BD03、DA01使用-目的地(經度)': '', // V14\n 'BD03、DA01使用-里程數(公里)': '',\n 'BD03、DA01使用-車號': '',\n // V13新增\n 'BD03必填-服務使用類型\\n1.社區式長照機構\\n2.社區服務據點(不含身障類)\\n3.輔具中心\\n4.身障日間照顧服務': '',\n };\n });\n };\n rows = rows.concat(getRowsByOrders(orders));\n });\n return rows;\n };\n const ageBase = moment(selectedMonth).tz(TIME_ZONE).endOf('month').valueOf();\n if (mergeIntoOneFile) {\n let allRows = [];\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n allRows = allRows.concat(getRowsByElder(elder));\n });\n const worksheet = utils.json_to_sheet(allRows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, '核銷報表');\n const wbout = write(workbook, { bookType: 'xls', bookSST: true, type: 'binary' });\n zip.file('核銷報表.xls', wbout, { binary: true });\n } else {\n if (!groupByDistrict) {\n if (groupByAge) {\n const eldersGroupByAge = elders.reduce((acc, elder) => {\n const age = formatAge(elder.birthday, ageBase);\n let key = '65歲以下';\n if (age >= 65) {\n key = '65歲以上';\n }\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(elder);\n return acc;\n }, {});\n Object.keys(eldersGroupByAge).forEach((key) => {\n const elders = eldersGroupByAge[key];\n let allRows = [];\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n allRows = allRows.concat(getRowsByElder(elder));\n });\n const worksheet = utils.json_to_sheet(allRows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `${key}核銷報表`);\n const wbout = write(workbook, { bookType: 'xls', bookSST: true, type: 'binary' });\n\n zip.file(`${key}.xls`, wbout, { binary: true });\n });\n } else {\n // 一位長輩一個檔案\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n const rows = getRowsByElder(elder);\n if (rows.length === 0) {\n return;\n }\n // \\ / ? * [ ]\n const sanitizedElderName = getSanitizedElderName(elder.name);\n\n const worksheet = utils.json_to_sheet(rows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `${sanitizedElderName} 核銷報表`);\n const wbout = write(workbook, { bookType: 'xls', bookSST: true, type: 'binary' });\n\n // 依照督導分裝\n if (elder.supervisorId) {\n if (!zipDirs[elder.supervisorId]) {\n zipDirs[elder.supervisorId] = zip.folder(elder.supervisorId);\n }\n zipDirs[elder.supervisorId].file(`午晚-${sanitizedElderName}.xls`, wbout, { binary: true });\n } else {\n zip.file(`午晚-${sanitizedElderName}.xls`, wbout, { binary: true });\n }\n });\n }\n } else { // 一個鄉鎮一個檔案\n const eldersGroupByDistrict = elders.reduce((acc, elder) => {\n const key = elder.address.district;\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(elder);\n return acc;\n }, {});\n Object.keys(eldersGroupByDistrict).sort().forEach((district) => {\n const elders = eldersGroupByDistrict[district];\n if (groupByAge) {\n const eldersGroupByAge = elders.reduce((acc, elder) => {\n const age = formatAge(elder.birthday, ageBase);\n let key = '65歲以下';\n if (age >= 65) {\n key = '65歲以上';\n }\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(elder);\n return acc;\n }, {});\n Object.keys(eldersGroupByAge).forEach((key) => {\n const elders = eldersGroupByAge[key];\n let allRows = [];\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n allRows = allRows.concat(getRowsByElder(elder));\n });\n const worksheet = utils.json_to_sheet(allRows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `${district}(${key})核銷報表`);\n const wbout = write(workbook, { bookType: 'xls', bookSST: true, type: 'binary' });\n\n zip.file(`${district}(${key}).xls`, wbout, { binary: true });\n });\n } else {\n let allRows = [];\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n allRows = allRows.concat(getRowsByElder(elder));\n });\n\n const worksheet = utils.json_to_sheet(allRows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `${district} 核銷報表`);\n const wbout = write(workbook, { bookType: 'xls', bookSST: true, type: 'binary' });\n\n zip.file(`${district}.xls`, wbout, { binary: true });\n }\n });\n }\n }\n\n // @送餐服務_服務明細\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n const { disadvantagedTypesSlot = [] } = elder;\n if (disadvantagedTypesSlot.length === 0) {\n disadvantagedTypesSlot.push({\n start: moment(selectedMonth).tz(TIME_ZONE).startOf('month').format('YYYY-MM-DD'),\n end: moment(selectedMonth).tz(TIME_ZONE).endOf('month').add(1, 'days').format('YYYY-MM-DD'),\n type: '未知',\n });\n }\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n let orders = filteredAllOrders\n .filter(({ elderId }) => elderId === elder.id)\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n orders = orders.filter(({ date }) => date >= start && date < end);\n if (orders.length === 0) {\n return;\n }\n\n const identificationCardId = elder.identificationCardId || elder.id;\n const serviceCode = elder.serviceCode || DEFAULT_SERVICE_CODE;\n\n const key = `${identificationCardId}__${serviceCode}__${type}`;\n\n let cost = 0;\n let price = 0;\n if (orders.length > 0) {\n if (orders[0].mealItems?.length > 0) {\n cost = orders[0].mealItems[0].cost || 0;\n price = orders[0].mealItems[0].price || 0;\n }\n }\n const data = summaryDataMapping[key] || {\n '繳費月份': monthString,\n '狀態': elder.status || '使用中',\n '姓名': elder.name,\n '身分證字號': identificationCardId,\n '性別': formatGender(elder.gender),\n '生日': (elder.birthday || ''),\n '年齡': formatAge(elder.birthday, ageBase),\n '身份別': type,\n '項次': serviceCode,\n '項目': '送餐',\n '進價': cost,\n '單價': price,\n '核定單價': govQualifiedPrice || (orders.length > 0 ? orders[0].total : 0),\n '核定量': elder.govQualifiedCount || 0,\n '服務量': 0,\n '午餐量': 0,\n '晚餐量': 0,\n '地址': formatAddress(elder.address),\n '家庭代碼': elder.linkGroupName || '',\n '合併資料': '',\n };\n\n // combine elder with the same identificationCardId;\n data['服務量'] += orders.length;\n data['合併資料'] += `${elder.name}(${orders.length}),`;\n\n orders.forEach((order) => {\n if (order.mealSlot === 'lunch') {\n data['午餐量'] += 1;\n } else {\n data['晚餐量'] += 1;\n }\n });\n\n if (!displayExtraOptions) {\n delete data['性別'];\n delete data['生日'];\n delete data['年齡'];\n delete data['身份別'];\n delete data['午餐量'];\n delete data['晚餐量'];\n }\n\n summaryDataMapping[key] = data;\n allSummaryData.push(data);\n });\n });\n\n const worksheet = utils.json_to_sheet(Object.keys(summaryDataMapping).map((key) => summaryDataMapping[key]));\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `送餐服務_服務明細`);\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`@送餐服務_服務明細.xlsx`, wbout, { binary: true });\n\n if (shareOrderLog && shareOrderLog.length !== 0) {\n const worksheet = utils.json_to_sheet(Object.keys(shareOrderLog).map((key) => shareOrderLog[key]));\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, '家庭代碼log');\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`shareOrderLog.xlsx`, wbout, { binary: true });\n }\n\n const zipContent = zip.generate({ type: 'blob' });\n download(`${client.name}__${selectedMonth}.zip`, zipContent);\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n setGovQualifiedPrice(clientOptions[0].facilitySettings?.govQualifiedPrice || DEFAULT_GOV_QUALIFIED_PRICE);\n setlunchStartTime(clientOptions[0].facilitySettings?.lunchStartTime || defaultLunchStartTime);\n setlunchEndTime(clientOptions[0].facilitySettings?.lunchEndTime || defaultLunchEndTime);\n setDinnerStartTime(clientOptions[0].facilitySettings?.dinnerStartTime || defaultDinnerStartTime);\n setDinnerEndTime(clientOptions[0].facilitySettings?.dinnerEndTime || defaultDinnerEndTime);\n }\n }, [clientOptions]);\n\n return (\n
\n

衛福部支審系統:送餐服務服務明細報表輸出

\n
\n \n {/* 機構\n setClientIndex(event.target.value)}\n disabled={isLoading}\n >\n {clientOptions.map((item, index) => (\n \n {item.name}\n \n ))}\n */}\n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n const client = clientOptions.find(({ id }) => id === value);\n if (client) {\n setGovQualifiedPrice(client.facilitySettings.govQualifiedPrice || DEFAULT_GOV_QUALIFIED_PRICE);\n setlunchStartTime(client.facilitySettings.lunchStartTime || defaultLunchStartTime);\n setlunchEndTime(client.facilitySettings.lunchEndTime || defaultLunchEndTime);\n setDinnerStartTime(client.facilitySettings.dinnerStartTime || defaultDinnerStartTime);\n setDinnerEndTime(client.facilitySettings.dinnerEndTime || defaultDinnerEndTime);\n }\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n setGovQualifiedPrice(e.target.value)}\n required\n />\n
\n
\n {\n setIncludeNonDisElders(e.target.checked);\n }}\n />\n }\n label={}\n />\n {\n setIncludeAllElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setUseDeliveryStaffId(e.target.checked);\n }}\n />\n }\n label={'帶入送餐大使至服務人員身分證'}\n />\n {\n setApplyDefaultDeliveryStaff(e.target.checked);\n if (e.target.checked) {\n setUseDeliveryStaffId(true);\n }\n }}\n />\n }\n label={}\n />\n {\n setDisplayExtraOptions(e.target.checked);\n }}\n />\n }\n label={'顯示性別/年齡/身份別/午晚餐服務量'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n {\n setGroupByDistrict(e.target.checked);\n }}\n />\n }\n label={'以鄉鎮市區歸檔'}\n />\n {\n setGroupByAge(e.target.checked);\n }}\n />\n }\n label={}\n />\n {\n setMergeIntoOneFile(e.target.checked);\n if (e.target.checked) {\n setGroupByDistrict(false);\n setGroupByAge(false);\n }\n }}\n />\n }\n label={'合併成一個檔'}\n />\n {\n setNameInNote(e.target.checked);\n }}\n />\n }\n label={'備註填入姓名'}\n />\n {\n setDeliveryByInServiceTime(e.target.checked);\n }}\n />\n }\n label={'服務時間套用訂單時間'}\n />\n
\n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n\nMohwPrsReport.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport { utils, write } from 'xlsx';\nimport JSZip from 'jszip';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { download } from 'utilities/file';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport {\n getRestaurantsByClientByIsActive,\n getRestaurantsByCountyByIsActive,\n listRestaurants,\n getOrdersByRestaurantByDate,\n getOrdersByStatusByDate,\n} from 'graphql/queries';\n\nimport { sortBy } from 'utilities/sorting';\nimport cache from 'utilities/cache';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function RestaurantReport({ clientOptions }) {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [restaurantOptions, setRestaurantOptions] = useState([]);\n const [selectedRestaurantId, setSelectedRestaurantId] = useState();\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n const excludeNonFoodDeliveryOrders = false; // 包含所有訂單類別\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n const period = `${fromDate}__${toDate}`;\n // TODO: limit the clientId if applied\n\n const restaurant = restaurantOptions.find(({ id }) => id === selectedRestaurantId);\n const facilityId = cache.get('app:facilityId');\n\n global.logger.debug({\n selectedRestaurantId,\n restaurant,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const deliveryStaffIds = [];\n let allOrders;\n if (selectedRestaurantId === 'N/A') {\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n const allOrdersByStatus = await Promise.all(includedOrderStatus.map((status) =>\n asyncListAll(getOrdersByStatusByDate, {\n status,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n ));\n allOrders = [].concat(...allOrdersByStatus);\n } else {\n ([\n allOrders,\n ] = await Promise.all([\n asyncListAll(getOrdersByRestaurantByDate, {\n restaurantId: selectedRestaurantId,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n ]));\n }\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter((x) => (facilityId) ? x.clientId === facilityId : true)\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n orders\n .forEach(({ deliveryStaffId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n });\n\n const [deliveryStaffs] = await Promise.all([\n Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n identificationCardId\n }\n }\n `, { id });\n return data;\n })),\n ]);\n\n const zip = new JSZip();\n const mappings = {};\n\n orders.forEach((order) => {\n const {\n date,\n mealSlot,\n clientId,\n deliveryStaffId,\n restaurantId,\n mealItems,\n } = order;\n const client = clientOptions.find(({ id }) => id === clientId) || { id: '無', name: '無' };\n const deliveryStaff = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n const key = `${date}__${clientId}__${restaurantId}__${deliveryStaffId}`;\n\n mappings[key] = mappings[key] || {\n '日期': date,\n '機構': client.name,\n '餐廳': restaurant.name,\n '送餐大使': deliveryStaff ? deliveryStaff.name : '',\n '午餐餐點數量': 0,\n '晚餐餐點數量': 0,\n '總進價': 0,\n };\n\n const mealItemCount = mealItems.reduce((sum, item) => {\n return sum + item.quantity;\n }, 0);\n const cost = mealItems.reduce((sum, item) => {\n return sum + item.cost * item.quantity;\n }, 0);\n if (mealSlot === 'lunch') {\n mappings[key]['午餐餐點數量'] += mealItemCount;\n } else {\n mappings[key]['晚餐餐點數量'] += mealItemCount;\n }\n mappings[key]['總進價'] += cost;\n });\n\n const workbook = utils.book_new();\n\n const clientMappings = {};\n\n const rows = Object.keys(mappings)\n .map((key) => {\n const clientName = mappings[key]['機構'];\n clientMappings[clientName] = clientMappings[clientName] || [];\n clientMappings[clientName].push(mappings[key]);\n\n return mappings[key];\n })\n .sort(sortBy('日期'))\n .sort(sortBy('機構'));\n\n const worksheet = utils.json_to_sheet(rows);\n utils.book_append_sheet(workbook, worksheet, `餐廳製餐數`);\n\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`@餐廳製餐數.xlsx`, wbout, { binary: true });\n\n Object.keys(clientMappings)\n .forEach((clientName) => {\n const rows = clientMappings[clientName].sort(sortBy('日期'));\n\n const normalizedName = `${clientName.replace(/[^\\u4e00-\\u9fa5]/g, '')}`;\n const workbook = utils.book_new();\n const worksheet = utils.json_to_sheet(rows);\n utils.book_append_sheet(workbook, worksheet, normalizedName);\n\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`${normalizedName}.xlsx`, wbout, { binary: true });\n });\n\n const zipContent = zip.generate({ type: 'blob' });\n download(`${restaurant.name}__機構製餐數__${selectedMonth}.zip`, zipContent);\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n (async () => {\n const facilityId = cache.get('app:facilityId');\n const county = cache.get('app:location');\n const isFacilityAdmin = facilityId ? true : false;\n\n let restaurantOptions = [];\n\n if (facilityId) {\n restaurantOptions = await asyncListAll(getRestaurantsByClientByIsActive, {\n clientId: facilityId,\n });\n } else\n if (county) {\n restaurantOptions = await asyncListAll(getRestaurantsByCountyByIsActive, {\n county,\n });\n } else {\n restaurantOptions = await asyncListAll(listRestaurants, {});\n }\n\n restaurantOptions.sort(sortBy('name'));\n if (!isFacilityAdmin) {\n restaurantOptions.unshift({\n id: 'N/A',\n name: '全部餐廳',\n });\n }\n\n setRestaurantOptions(restaurantOptions);\n })();\n }, []);\n\n return (\n
\n

餐廳製餐數報表輸出

\n \n name)}\n values={restaurantOptions.map(({ id }) => id)}\n required={true}\n value={selectedRestaurantId}\n label=\"餐廳\"\n onChange={(value) => setSelectedRestaurantId(value)}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n\nRestaurantReport.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport JSZip from 'jszip';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { download } from 'utilities/file';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport {\n getOrdersByClientByDate,\n getOrdersByStatusByDate,\n} from './queries';\nimport { sortBy } from 'utilities/sorting';\nimport cache from 'utilities/cache';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { unifyCellStyle } from './CountyPrsReport/workbooks/helpers';\nimport { utils, write } from 'sheetjs-style';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function RestaurantReport({ clientOptions: inClientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [clientOptions, setClientOptions] = useState([]);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n const excludeNonFoodDeliveryOrders = false; // 包含所有訂單類別\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n const period = `${fromDate}__${toDate}`;\n const client = clientOptions.find(({ id }) => id === selectedClientId);\n\n global.logger.debug({\n selectedClientId,\n client,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const deliveryStaffIds = [];\n const restaurantIds = [];\n\n let allOrders;\n if (client.id === 'N/A') {\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n const allOrdersByStatus = await Promise.all(includedOrderStatus.map((status) =>\n asyncListAll(getOrdersByStatusByDate, {\n status,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n ));\n allOrders = [].concat(...allOrdersByStatus);\n } else {\n ([\n allOrders,\n ] = await Promise.all([\n asyncListAll(getOrdersByClientByDate, {\n clientId: client.id,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n ]));\n }\n\n allOrders.forEach(({ deliveryStaffId, restaurantId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n if (restaurantId && !restaurantIds.includes(restaurantId)) {\n restaurantIds.push(restaurantId);\n }\n });\n\n const [deliveryStaffs, restaurants] = await Promise.all([\n Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n identificationCardId\n }\n }\n `, { id });\n return data;\n })),\n Promise.all(restaurantIds.map(async (id) => {\n const { data: { getRestaurant: data } } = await request( /* GraphQL */ `\n query GetRestaurant($id: ID!) {\n getRestaurant(id: $id) {\n id\n name\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n }\n }\n `, { id });\n return data;\n })),\n ]);\n\n const zip = new JSZip();\n const mappings = {};\n const mappingsByRestaurant = {};\n const mealStatistic = {};\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n restaurants.forEach((restaurant) => {\n let orders = allOrders\n .filter(({ restaurantId }) => restaurantId === restaurant.id)\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n orders.forEach((order) => {\n const {\n date,\n mealSlot,\n clientId,\n deliveryStaffId,\n restaurantId,\n mealItems,\n } = order;\n const client = clientOptions.find(({ id }) => id === clientId) || { id: '無', name: '無' };\n const deliveryStaff = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n const key = `${date}__${clientId}__${restaurantId}__${deliveryStaffId}`;\n\n mappings[key] = mappings[key] || {\n '日期': date,\n '機構': client.name,\n '餐廳': restaurant.name,\n '送餐大使': deliveryStaff ? deliveryStaff.name : '',\n '午餐餐點數量': 0,\n '晚餐餐點數量': 0,\n '總進價': 0,\n };\n mappingsByRestaurant[restaurantId] = mappingsByRestaurant[restaurantId] || {\n '餐廳': restaurant.name,\n '午餐餐點數量': 0,\n '晚餐餐點數量': 0,\n '餐點份數': '',\n '總進價': 0,\n };\n mealStatistic[restaurantId] = mealStatistic[restaurantId] || {};\n\n const mealItemCount = mealItems.reduce((sum, item) => {\n return sum + item.quantity;\n }, 0);\n const cost = mealItems.reduce((sum, item) => {\n return sum + item.cost * item.quantity;\n }, 0);\n\n if (mealSlot === 'lunch') {\n mappings[key]['午餐餐點數量'] += mealItemCount;\n mappingsByRestaurant[restaurantId]['午餐餐點數量'] += mealItemCount;\n } else {\n mappings[key]['晚餐餐點數量'] += mealItemCount;\n mappingsByRestaurant[restaurantId]['晚餐餐點數量'] += mealItemCount;\n }\n mealItems.forEach(({ name, quantity, cost }) => {\n const key =`${name}(${cost})`;\n if (!mealStatistic[restaurantId][key]) {\n mealStatistic[restaurantId][key] = 0;\n }\n mealStatistic[restaurantId][key] += quantity;\n });\n mappingsByRestaurant[restaurantId]['總進價'] += cost;\n mappings[key]['總進價'] += cost;\n });\n });\n\n Object.keys(mappingsByRestaurant).forEach((restaurantId) => {\n const mealStatisticString = [];\n Object.keys(mealStatistic[restaurantId]).forEach((mealName) => {\n const mealCount = mealStatistic[restaurantId][mealName];\n mealStatisticString.push(`${mealName} * ${mealCount}`);\n });\n mappingsByRestaurant[restaurantId]['餐點份數'] = mealStatisticString.join('\\n');\n });\n const workbook = utils.book_new();\n\n const restaurantMappings = {};\n\n Object.keys(mappings).forEach((key) => {\n const restaurantName = mappings[key]['餐廳'];\n restaurantMappings[restaurantName] = restaurantMappings[restaurantName] || [];\n restaurantMappings[restaurantName].push(mappings[key]);\n });\n\n const rowsByRestaurant = Object.keys(mappingsByRestaurant)\n .map((key) => mappingsByRestaurant[key])\n .sort(sortBy('餐廳'));\n\n const worksheet = utils.json_to_sheet(rowsByRestaurant);\n worksheet['!cols'] = [\n { wch: 30 }, { wch: 8 },\n { wch: 8 }, { wch: 50 },\n { wch: 8 },\n ];\n unifyCellStyle(worksheet, rowsByRestaurant.length + 1);\n utils.book_append_sheet(workbook, worksheet, `餐廳製餐數`);\n\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`@餐廳製餐數.xlsx`, wbout, { binary: true });\n\n Object.keys(restaurantMappings)\n .forEach((restaurantName) => {\n const rows = restaurantMappings[restaurantName].sort(sortBy('日期'));\n\n const normalizedName = `${restaurantName.replace(/[^\\u4e00-\\u9fa5]/g, '')}`;\n const workbook = utils.book_new();\n const worksheet = utils.json_to_sheet(rows);\n utils.book_append_sheet(workbook, worksheet, normalizedName);\n\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`${normalizedName}.xlsx`, wbout, { binary: true });\n });\n\n const zipContent = zip.generate({ type: 'blob' });\n download(`${client.name}__餐廳製餐數__${selectedMonth}.zip`, zipContent);\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n const isFacilityAdmin = cache.get('app:facilityId');\n\n const clientOptions = JSON.parse(JSON.stringify(inClientOptions));\n if (!isFacilityAdmin && inClientOptions.length > 0 && inClientOptions[0].id !== 'N/A') {\n clientOptions.unshift({\n id: 'N/A',\n name: '全部機構',\n });\n }\n\n setClientOptions(clientOptions);\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n }\n }, [inClientOptions]);\n\n return (\n
\n

餐廳製餐數報表輸出(按機構)

\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => setSelectedClientId(value)}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n\nRestaurantReport.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import React, { useState } from 'react';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport { utils, writeFile } from 'xlsx';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nimport { request, asyncListAll } from 'utilities/graph';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport {\n getOrder,\n getPandagoOrdersByProcessStatusByShouldBeSentToPandago,\n} from './queries';\nimport { sortBy } from 'utilities/sorting';\nimport { formatAddress, formatDatetime } from 'utilities/format';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\n/**\n熊貓計算方式\n起價70+5/每公里\n\n愛鄰計算方式\n基本配送一公里70元,超過一公里,一至三公里,\n每公里加收10元,3公里以上每一公里加收15元,不足1公里以1公里計算\n */\n\nexport default function PandagoReport() {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n const period = `${fromDate}__${toDate}`;\n\n global.logger.debug({\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n allPandagoOrders,\n ] = await Promise.all([\n asyncListAll(getPandagoOrdersByProcessStatusByShouldBeSentToPandago, {\n processStatus: 'fulfilled',\n shouldBeSentToPandagoAt: {\n between: [fromISOString, toISOString],\n },\n limit: 1000,\n }),\n ]);\n\n const data = await Promise.all(\n allPandagoOrders.map(async ({\n orderId,\n pandagoOrderId,\n status,\n paymentMethod,\n amount,\n fee,\n cancelledBy,\n cancelledReason,\n driver,\n }) => {\n const { data: { getOrder: order } } = await request(getOrder, { id: orderId });\n\n if (!order) {\n return {\n '日期': '',\n '餐別': '',\n '編號': pandagoOrderId,\n '餐廳': '',\n '名字': '',\n '狀態': status,\n '銀色大門訂單狀態': '無批配訂單',\n '收費方式': paymentMethod,\n '應收費金額': amount,\n '預估距離': '',\n // '預估車程': '',\n '預估送餐費用': '',\n '實際送餐費用': fee,\n '標記': '',\n '餐廳地址': '',\n '餐廳地址經緯度': '',\n 'Google起點經緯度': '',\n '送餐地址': '',\n '送餐經緯度': '',\n 'Google終點經緯度': '',\n '送餐員姓名': '',\n '送餐員電話': '',\n '取消者': cancelledBy,\n '取消原因': cancelledReason,\n };\n }\n\n const {\n date,\n mealSlot,\n status: orderStatus,\n elder: { name: elderName, address: elderAddress },\n restaurant: { name: restaurantName, address: restaurantAddress },\n direction: {\n // startAddress,\n // endAddress,\n distance,\n // duration,\n startLocation,\n endLocation,\n distanceInMeters,\n },\n } = order;\n\n const {\n name: driverName,\n phoneNumber: driverPhoneNumber,\n } = driver;\n\n const calculatedFee = 70 + (distanceInMeters > 1000 ? Math.round((distanceInMeters - 1000) / 1000) * 5 : 0);\n\n const flag = calculatedFee !== fee ? '*' : '';\n return {\n '日期': formatDatetime(date, { year: true, day: true, weekday: false, hour: false, minute: false, second: false }),\n '餐別': mealSlot === 'lunch' ? '午餐' : '晚餐',\n '編號': pandagoOrderId,\n '餐廳': restaurantName,\n '名字': elderName,\n '狀態': status,\n '銀色大門訂單狀態': orderStatus,\n '收費方式': paymentMethod,\n '應收費金額': amount,\n '預估距離': distance,\n // '預估車程': duration,\n '預估送餐費用': calculatedFee,\n '實際送餐費用': fee,\n '標記': flag,\n '餐廳地址': formatAddress(restaurantAddress),\n '餐廳地址經緯度': `${restaurantAddress.lat},${restaurantAddress.lng}`,\n 'Google起點經緯度': `${startLocation.lat},${startLocation.lng}`,\n '送餐地址': formatAddress(elderAddress),\n '送餐地址經緯度': `${elderAddress.lat},${elderAddress.lng}`,\n 'Google終點經緯度': `${endLocation.lat},${endLocation.lng}`,\n '送餐員姓名': driverName,\n '送餐員電話': driverPhoneNumber,\n '取消者': cancelledBy,\n '取消原因': cancelledReason,\n };\n }),\n );\n\n global.logger.debug(data);\n\n const rows = data\n .sort(sortBy('日期'));\n\n const worksheet = utils.json_to_sheet(rows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `Pandago`);\n writeFile(workbook, `Pandago送餐資訊__${selectedMonth}.xlsx`);\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n
\n

Pandago 月訂單輸出

\n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n","import React, { useState } from 'react';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport { utils, writeFile } from 'xlsx';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nimport { request, asyncListAll } from 'utilities/graph';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport {\n getOrder,\n getUberOrdersByProcessStatusByShouldBeSentToUber,\n} from './queries';\nimport { sortBy } from 'utilities/sorting';\nimport { formatAddress, formatDatetime } from 'utilities/format';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function UberReport() {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n const period = `${fromDate}__${toDate}`;\n\n global.logger.debug({\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n allUberOrders,\n ] = await Promise.all([\n asyncListAll(getUberOrdersByProcessStatusByShouldBeSentToUber, {\n processStatus: 'fulfilled',\n shouldBeSentToUberAt: {\n between: [fromISOString, toISOString],\n },\n limit: 1000,\n }),\n ]);\n\n const data = await Promise.all(\n allUberOrders.map(async ({\n orderId,\n uberDeliveryId,\n uuid,\n status,\n fee,\n // cancelledBy,\n undeliverableReason,\n cancelledReason,\n courier,\n }) => {\n const { data: { getOrder: order } } = await request(getOrder, { id: orderId });\n\n if (!order) {\n return {\n '日期': '',\n '編號': uberDeliveryId,\n 'uuid': uuid,\n '餐廳': '',\n '名字': '',\n '狀態': status,\n '銀色大門訂單狀態': '無批配訂單',\n '預估距離': '',\n // '預估車程': '',\n '預估送餐費用': '',\n '實際送餐費用': fee,\n '標記': '',\n '餐廳地址': '',\n '餐廳地址經緯度': '',\n 'Google起點經緯度': '',\n '送餐地址': '',\n '送餐地址經緯度': '',\n 'Google終點經緯度': '',\n // '取消者': cancelledBy,\n '送餐員姓名': '',\n '送餐員電話': '',\n '取消原因': cancelledReason,\n '無法送達': undeliverableReason,\n };\n }\n\n const {\n date,\n mealSlot,\n status: orderStatus,\n elder: { name: elderName, address: elderAddress },\n restaurant: { name: restaurantName, address: restaurantAddress },\n direction: {\n // startAddress,\n // endAddress,\n distance,\n // duration,\n startLocation,\n endLocation,\n distanceInMeters,\n },\n } = order;\n\n const {\n name: driverName,\n phoneNumber: driverPhoneNumber,\n } = courier;\n\n /**\n Uber計算方式\n $85\n 1到3公里加$10\n 3公里後每公里加$15\n */\n const calculatedFee = 75 +\n ((distanceInMeters < 1000) ? 0 :\n (1000 <= distanceInMeters && distanceInMeters < 3000) ? 10 : 10 + (Math.ceil((distanceInMeters - 3000) / 1000) * 15));\n\n const flag = calculatedFee !== fee ? '*' : '';\n return {\n '日期': formatDatetime(date, { year: true, day: true, weekday: false, hour: false, minute: false, second: false }),\n '餐別': mealSlot === 'lunch' ? '午餐' : '晚餐',\n '編號': uberDeliveryId,\n 'uuid': uuid,\n '餐廳': restaurantName,\n '名字': elderName,\n '狀態': status,\n '銀色大門訂單狀態': orderStatus,\n '預估距離': distance,\n // '預估車程': duration,\n '預估送餐費用': calculatedFee,\n '實際送餐費用': fee,\n '標記': flag,\n '餐廳地址': formatAddress(restaurantAddress),\n '餐廳地址經緯度': `${restaurantAddress.lat},${restaurantAddress.lng}`,\n 'Google起點經緯度': `${startLocation.lat},${startLocation.lng}`,\n '送餐地址': formatAddress(elderAddress),\n '送餐地址經緯度': `${elderAddress.lat},${elderAddress.lng}`,\n 'Google終點經緯度': `${endLocation.lat},${endLocation.lng}`,\n '送餐員姓名': driverName,\n '送餐員電話': driverPhoneNumber,\n // '取消者': cancelledBy,\n '取消原因': cancelledReason,\n '無法送達': undeliverableReason,\n };\n }),\n );\n\n global.logger.debug(data);\n\n const rows = data\n .sort(sortBy('日期'));\n\n const worksheet = utils.json_to_sheet(rows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `Uber`);\n writeFile(workbook, `Uber送餐資訊__${selectedMonth}.xlsx`);\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n
\n

Uber 月訂單輸出

\n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n","import React, { useState } from 'react';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport { utils, writeFile } from 'xlsx';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nimport { request, asyncListAll } from 'utilities/graph';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport {\n getOrder,\n getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove,\n} from './queries';\nimport { sortBy } from 'utilities/sorting';\nimport { formatAddress, formatDatetime } from 'utilities/format';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function LalamoveReport() {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n const period = `${fromDate}__${toDate}`;\n\n global.logger.debug({\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n allLalamoveOrders,\n ] = await Promise.all([\n asyncListAll(getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove, {\n processStatus: 'fulfilled',\n shouldBeSentToLalamoveAt: {\n between: [fromISOString, toISOString],\n },\n limit: 1000,\n }),\n ]);\n\n console.log(allLalamoveOrders);\n const data = await Promise.all(\n allLalamoveOrders.map(async ({\n orderId,\n orderIds,\n lalamoveDeliveryId,\n status,\n fee,\n driver,\n distance: lalamoveDistance,\n priceBreakdown,\n }) => {\n let orders;\n if (orderIds && orderIds.length !== 0) {\n const results = await Promise.all(orderIds.map((id) => request(getOrder, { id })));\n console.log(results);\n orders = results.map((result) => result.data.getOrder);\n } else {\n const { data: { getOrder: order } } = await request(getOrder, { id: orderId });\n orders = [order];\n }\n console.log(orders);\n const {\n base = '',\n extraMileage = '',\n } = priceBreakdown || {};\n\n if (!orders || orders.length === 0) {\n return {\n '日期': '',\n '編號': lalamoveDeliveryId,\n '餐廳': '',\n '名字': '',\n '狀態': status,\n '銀色大門訂單狀態': '無批配訂單',\n '預估距離': '',\n 'lalamove預估距離': '',\n '預估送餐費用': '',\n '實際送餐費用': fee,\n '基本費用': base,\n '額外里程費用': extraMileage,\n '標記': '',\n '餐廳地址': '',\n '餐廳地址經緯度': '',\n 'Google起點經緯度': '',\n '送餐地址': '',\n '送餐地址經緯度': '',\n 'Google終點經緯度': '',\n '送餐員姓名': '',\n '送餐員電話': '',\n };\n }\n\n const {\n date,\n mealSlot,\n status: orderStatus,\n restaurant: { name: restaurantName, address: restaurantAddress },\n direction: {\n distance,\n startLocation,\n // distanceInMeters,\n },\n } = orders[0];\n\n const elderName = orders.map(({ elder: { name } }) => name).join('、\\n');\n const elderAddressList = orders.map(({ elder: { address } }) => address);\n const endLocationList = orders.map(({ direction: { endLocation } }) => endLocation);\n const {\n name: driverName = '',\n phone: driverPhoneNumber = '',\n } = driver || {};\n\n // const calculatedFee = 75 +\n // ((distanceInMeters < 1000) ? 0 :\n // (1000 <= distanceInMeters && distanceInMeters < 3000) ? 10 : 10 + (Math.ceil((distanceInMeters - 3000) / 1000) * 15));\n\n // const flag = calculatedFee !== fee ? '*' : '';\n // TODO\n const calculatedFee = '';\n const flag = '';\n\n return {\n '日期': formatDatetime(date, { year: true, day: true, weekday: false, hour: false, minute: false, second: false }),\n '餐別': mealSlot === 'lunch' ? '午餐' : '晚餐',\n '編號': lalamoveDeliveryId,\n '餐廳': restaurantName,\n '名字': elderName,\n '狀態': status,\n '銀色大門訂單狀態': orderStatus,\n '預估距離': distance,\n 'lalamove預估距離': lalamoveDistance ? `${lalamoveDistance.value} ${lalamoveDistance.unit}`: '',\n '預估送餐費用': calculatedFee,\n '實際送餐費用': fee,\n '基本費用': base,\n '額外里程費用': extraMileage,\n '標記': flag,\n '餐廳地址': formatAddress(restaurantAddress),\n '餐廳地址經緯度': `${restaurantAddress.lat},${restaurantAddress.lng}`,\n 'Google起點經緯度': `${startLocation.lat},${startLocation.lng}`,\n '送餐地址': elderAddressList.map((address) => formatAddress(address)).join('、\\n'),\n '送餐地址經緯度': elderAddressList.map((address) => `${address.lat},${address.lng}`).join('、\\n'),\n 'Google終點經緯度': endLocationList.map((location) => `${location.lat},${location.lng}`).join('、\\n'),\n '送餐員姓名': driverName,\n '送餐員電話': driverPhoneNumber,\n };\n }),\n );\n\n global.logger.debug(data);\n\n const rows = data\n .sort(sortBy('日期'));\n\n const worksheet = utils.json_to_sheet(rows);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `Lalamove`);\n writeFile(workbook, `Lalamove送餐資訊__${selectedMonth}.xlsx`);\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n
\n

Lalamove 月訂單輸出

\n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n","import {\n countiesDistricts,\n} from '@silvergatedelivery/constants';\nimport { formatAge, formatGender } from 'utilities/format';\nimport { utils, writeFile, write } from 'xlsx';\nconst COUNTY = '嘉義縣';\nconst deliverySubsidy = 125;\nconst mealCentralGovSubsidyLow = 100;\nconst mealCentralGovSubsidyMidLow = 90;\nconst mealLocalGovSubsidyMidLow = 10;\n\n\nexport default function writeChiayi({\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n pandagoOrders,\n selectedMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n const [year, month] = selectedMonth.split('-');\n const yearMonthTitle = `${parseInt(year)-1911}年${month}月`;\n\n const workbook = utils.book_new();\n\n\n // 移除沒有弱勢身份和其他身份的訂單\n const ordersForDisvantaged = orders.filter((order) => {\n const { disadvantagedTypesSlot } = elders.find((elder) => elder.id === order.elderId) || {};\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n const slot = disadvantagedTypesSlot.find(({ start, end }) => order.date >= start && order.date < end);\n if (slot && (slot.type === '一般' || !['中低2.5倍', '中低1.5倍', '低收'].includes(slot.type))) {\n return false;\n }\n }\n return true;\n });\n\n utils.book_append_sheet(workbook, getWorksheetElders(elders, ordersForDisvantaged), `個案`);\n utils.book_append_sheet(workbook, getWorksheetStatistics(elders, ordersForDisvantaged, yearMonthTitle), `統計表`);\n utils.book_append_sheet(workbook, getWorksheetStatistics([], [], yearMonthTitle), `核增統計表`);\n utils.book_append_sheet(workbook, getWorksheetAugementList([], []), `核增清冊`);\n utils.book_append_sheet(\n workbook,\n getWorksheetDeliveryFee(elders, ordersForDisvantaged, deliveryStaffs, pandagoOrders, yearMonthTitle, clientName),\n `車馬(送餐大使)`);\n utils.book_append_sheet(\n workbook,\n getWorksheetDeliveryFee(elders, ordersForDisvantaged, deliveryStaffs, pandagoOrders, yearMonthTitle, clientName, true),\n `車馬(Pandago)`);\n\n if (process.env.JEST_WORKER_ID) {\n return write(workbook, { type: 'buffer', bookType: 'xlsx' });\n }\n\n writeFile(workbook, `${clientName}__${COUNTY}核銷報表__${selectedMonth}.xlsx`, { bookSST: true, cellStyles: true });\n}\n\nfunction getWorksheetElders(elders = [], allOrders = []) {\n const elderRows = [];\n\n elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .map(({\n id,\n name,\n identificationCardId,\n gender,\n birthday,\n disadvantagedTypes,\n disadvantagedTypesSlot,\n address: {\n district,\n },\n }) => {\n const elderOrders = allOrders\n .filter(({ elderId }) => elderId === id);\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n if (type === '一般') {\n return;\n }\n const filteredOrders = elderOrders.filter(({ date }) => date >= start && date < end);\n if (filteredOrders.length === 0) {\n return;\n }\n const existingRow = elderRows.find(({ 身分證字號, 身份別 }) => 身分證字號 === identificationCardId && 身份別 === type);\n if (existingRow) {\n existingRow.服務量 += filteredOrders.length;\n existingRow.午餐量 += filteredOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length;\n existingRow.晚餐量 += filteredOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length;\n } else {\n elderRows.push({\n 姓名: name,\n 身分證字號: identificationCardId,\n 性別: formatGender(gender),\n 年齡: formatAge(birthday),\n 身份別: type,\n 服務量: filteredOrders.length,\n 午餐量: filteredOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length,\n 晚餐量: filteredOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length,\n 地址: district,\n 核增: '',\n });\n }\n });\n } else {\n if (elderOrders.length === 0) {\n return;\n }\n elderRows.push({\n 姓名: name,\n 身分證字號: identificationCardId,\n 性別: formatGender(gender),\n 年齡: formatAge(birthday),\n 身份別: disadvantagedTypes,\n 服務量: elderOrders.length,\n 午餐量: elderOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length,\n 晚餐量: elderOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length,\n 地址: district,\n 核增: '',\n });\n }\n });\n const worksheet = utils.json_to_sheet(elderRows);\n\n worksheet['!cols'] = [\n { wch: 13 }, { wch: 13 },\n { wch: 5 }, { wch: 6 },\n { wch: 10 }, { wch: 8 },\n { wch: 8 }, { wch: 8 },\n { wch: 8 }, { wch: 10 },\n ];\n\n return worksheet;\n}\n\nfunction getWorksheetStatistics(elders = [], orders = [], yearMonthTitle) {\n const districs = countiesDistricts.filter(({ county }) => county === COUNTY).reduce((all, { districts: items }) => {\n return [...all, ...items];\n }, []);\n\n // https://docs.sheetjs.com/docs/solutions/processing#worksheet\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n let totalLunchCount = 0;\n let totalDinnerCount = 0;\n const districtLunch = districs.reduce((obj, districtName) => {\n obj[districtName] = 0;\n return obj;\n }, { '鄉鎮': '午餐' });\n\n const districtDinner = districs.reduce((obj, districtName) => {\n obj[districtName] = 0;\n return obj;\n }, { '鄉鎮': '晚餐' });\n\n orders.forEach(({ elderId, mealSlot }) => {\n const elder = elders.find(({ id }) => id === elderId);\n const { district } = elder.address;\n if (mealSlot === 'lunch') {\n districtLunch[district]++;\n totalLunchCount++;\n } else {\n districtDinner[district]++;\n totalDinnerCount++;\n }\n });\n\n if (totalLunchCount !== 0 || totalDinnerCount !== 0) {\n districs.forEach((districtName) => {\n if (districtLunch[districtName] === 0 && districtDinner[districtName] === 0) {\n delete districtLunch[districtName];\n delete districtDinner[districtName];\n }\n });\n }\n\n districtLunch['合計'] = totalLunchCount;\n districtDinner['合計'] = totalDinnerCount;\n\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 7 } });\n\n utils.sheet_add_aoa(worksheet, [[`${yearMonthTitle} 老人營養餐飲服務核銷統計表`]], { origin: 'A1' });\n // utils.sheet_add_aoa(worksheet, [['鄉鎮', ...districs, '合計']], { origin: 'A2' });\n // utils.sheet_add_aoa(worksheet, [['午餐']], { origin: 'A3' });\n // utils.sheet_add_aoa(worksheet, [['晚餐']], { origin: 'A4' });\n utils.sheet_add_json(\n worksheet, [districtLunch, districtDinner], { origin: 'A2', skipHeader: false });\n\n worksheet['!merges'].push({ s: { r: 5, c: 0 }, e: { r: 7, c: 0 } });\n worksheet['!merges'].push({ s: { r: 5, c: 1 }, e: { r: 5, c: 7 } });\n utils.sheet_add_aoa(worksheet, [['服務人數']], { origin: 'B6' });\n worksheet['!merges'].push({ s: { r: 6, c: 1 }, e: { r: 6, c: 2 } });\n utils.sheet_add_aoa(worksheet, [['中低2.5倍']], { origin: 'B7' });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'B8' });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'C8' });\n worksheet['!merges'].push({ s: { r: 6, c: 3 }, e: { r: 6, c: 4 } });\n utils.sheet_add_aoa(worksheet, [['中低1.5倍']], { origin: 'D7' });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'D8' });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'E8' });\n worksheet['!merges'].push({ s: { r: 6, c: 5 }, e: { r: 6, c: 6 } });\n utils.sheet_add_aoa(worksheet, [['低收']], { origin: 'F7' });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'F8' });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'G8' });\n worksheet['!merges'].push({ s: { r: 6, c: 7 }, e: { r: 7, c: 7 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'H7' });\n\n worksheet['!merges'].push({ s: { r: 5, c: 8 }, e: { r: 5, c: 11 } });\n utils.sheet_add_aoa(worksheet, [['服務人次']], { origin: 'I6' });\n worksheet['!merges'].push({ s: { r: 6, c: 8 }, e: { r: 7, c: 8 } });\n utils.sheet_add_aoa(worksheet, [['中低2.5倍']], { origin: 'I7' });\n worksheet['!merges'].push({ s: { r: 6, c: 9 }, e: { r: 7, c: 9 } });\n utils.sheet_add_aoa(worksheet, [['中低1.5倍']], { origin: 'J7' });\n worksheet['!merges'].push({ s: { r: 6, c: 10 }, e: { r: 7, c: 10 } });\n utils.sheet_add_aoa(worksheet, [['低收']], { origin: 'K7' });\n worksheet['!merges'].push({ s: { r: 6, c: 11 }, e: { r: 7, c: 11 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'L7' });\n\n worksheet['!merges'].push({ s: { r: 5, c: 12 }, e: { r: 5, c: 14 } });\n utils.sheet_add_aoa(worksheet, [['金額']], { origin: 'M6' });\n worksheet['!merges'].push({ s: { r: 6, c: 12 }, e: { r: 7, c: 12 } });\n utils.sheet_add_aoa(worksheet, [['縣市政府補助']], { origin: 'M7' });\n worksheet['!merges'].push({ s: { r: 6, c: 13 }, e: { r: 7, c: 13 } });\n utils.sheet_add_aoa(worksheet, [['中央補助']], { origin: 'N7' });\n worksheet['!merges'].push({ s: { r: 6, c: 14 }, e: { r: 7, c: 14 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'O7' });\n\n const shortYearMonthTitle = yearMonthTitle.replace('年', '').replace('月', '');\n utils.sheet_add_aoa(worksheet, [[`${shortYearMonthTitle}(午餐)`]], { origin: 'A9' });\n utils.sheet_add_aoa(worksheet, [[`${shortYearMonthTitle}(晚餐)`]], { origin: 'A10' });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'A11' });\n\n const disadvantagedTypeList = ['中低2.5倍', '中低1.5倍', '低收'];\n const getSampleData = () => {\n return {\n // 個案數量\n '中低2.5倍男': 0,\n '中低2.5倍女': 0,\n '中低1.5倍男': 0,\n '中低1.5倍女': 0,\n '低收男': 0,\n '低收女': 0,\n '服務人數合計': 0,\n // 餐點數量\n '中低2.5倍': 0,\n '中低1.5倍': 0,\n '低收': 0,\n '服務人次合計': 0,\n // 金額\n '縣市政府補助': 0,\n '中央補助': 0,\n '金額合計': 0,\n };\n };\n\n const rate = {\n '縣市': {\n '中低2.5倍': mealLocalGovSubsidyMidLow,\n '中低1.5倍': 0,\n '低收': 0,\n },\n '中央': {\n '中低2.5倍': mealCentralGovSubsidyMidLow,\n '中低1.5倍': mealCentralGovSubsidyLow,\n '低收': mealCentralGovSubsidyLow,\n },\n };\n\n const data = {\n lunch: getSampleData(),\n dinner: getSampleData(),\n total: getSampleData(),\n };\n\n elders.forEach(({ id, disadvantagedTypes, disadvantagedTypesSlot, gender, name }) => {\n if (disadvantagedTypes && !disadvantagedTypeList.includes(disadvantagedTypes)) {\n return;\n }\n let genderString = formatGender(gender);\n if (!['男', '女'].includes(genderString)) {\n console.error(`${name} 沒有設定性別`);\n genderString = '男';\n }\n const elderOrders = orders.filter(({ elderId }) => elderId === id);\n\n const countMappings = {\n lunch: false,\n dinner: false,\n };\n elderOrders.forEach(({ mealSlot, date }) => {\n let type = disadvantagedTypes;\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n const slot = disadvantagedTypesSlot.find(({ start, end }) => date >= start && date < end);\n type = slot.type;\n }\n if (!['中低2.5倍', '中低1.5倍', '低收'].includes(type)) {\n return;\n }\n if (type) {\n if (!countMappings[mealSlot]) {\n data[mealSlot][`${type}${genderString}`]++;\n data[mealSlot][`服務人數合計`]++;\n countMappings[mealSlot] = true;\n }\n\n data[mealSlot][`${type}`]++;\n data[mealSlot][`服務人次合計`]++;\n\n data[mealSlot]['縣市政府補助'] += 1 * rate['縣市'][type];\n data[mealSlot]['中央補助'] += 1 * rate['中央'][type];\n data[mealSlot]['金額合計'] += 1 * rate['縣市'][type] + 1 * rate['中央'][type];\n }\n });\n });\n\n Object.keys(data.total).map((key) => {\n data.total[key] = data.lunch[key] + data.dinner[key];\n });\n\n utils.sheet_add_json(\n worksheet, [data.lunch, data.dinner, data.total], { origin: 'B9', skipHeader: true });\n\n return worksheet;\n}\n\nfunction getWorksheetAugementList() {\n // https://docs.sheetjs.com/docs/solutions/processing#worksheet\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [\n { s: { r: 0, c: 0 }, e: { r: 0, c: 10 } },\n ];\n utils.sheet_add_aoa(worksheet, [[`照顧組合服務費用項目核增清冊`]], { origin: 'A1' });\n utils.sheet_add_aoa(worksheet, [['序號', '身分證號', '個案姓名', '福利身分別', '服務日期', '給(支)付價格', '次數', '申報費用', '目前居住縣市', '目前居住行政區', '服務人員']], { origin: 'A2' });\n return worksheet;\n}\n\nfunction getWorksheetDeliveryFee(elders, orders, deliveryStaffs, pandagoOrders, yearMonthTitle, clientName, pandagoSheet = false) {\n const mappings = {};\n let totalCount = 0;\n\n orders.forEach(({ id: orderId, elderId, mealSlot, deliveryStaffId, date: fullDate }) => {\n const { name: elderName, address: { district } } = elders.find(({ id }) => id === elderId);\n const { name: deliveryStaffName } = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n const pandagoOrder = pandagoOrders.find((x) => x.orderId === orderId);\n const padnagoDeliveryStaffName = pandagoOrder ? `${pandagoOrder.driver.name} ${pandagoOrder.driver.phoneNumber}` : undefined;\n\n if (!!pandagoOrder !== pandagoSheet) {\n return;\n }\n\n const key = `${padnagoDeliveryStaffName || deliveryStaffName}__${deliveryStaffId}__${mealSlot}`;\n mappings[key] = mappings[key] || {\n '鄉鎮': [],\n '編號': '', // fill later\n '志工姓名': padnagoDeliveryStaffName || deliveryStaffName,\n '午餐/晚餐': mealSlot === 'lunch'? '午餐':'晚餐',\n '單價(元)': deliverySubsidy,\n '送餐天數(天)': 0,\n '合計(元)': 0,\n '服務個案姓名': [],\n '送餐日期': {},\n };\n\n if (!mappings[key]['鄉鎮'].includes(district)) {\n mappings[key]['鄉鎮'].push(district);\n }\n\n if (!mappings[key]['服務個案姓名'].includes(elderName)) {\n mappings[key]['服務個案姓名'].push(elderName);\n }\n\n const date = fullDate.split('-').pop();\n\n if (!mappings[key]['送餐日期'][date]) {\n mappings[key]['送餐天數(天)']++;\n mappings[key]['合計(元)'] += deliverySubsidy;\n mappings[key]['送餐日期'][date] = 0;\n totalCount++;\n }\n\n mappings[key]['送餐日期'][date] = 1;\n });\n\n const data = Object.keys(mappings)\n .sort((a, b) => a < b ? 1 : -1)\n .map((key, index) => {\n const item = mappings[key];\n\n return Object.assign(item, {\n 鄉鎮: item['鄉鎮'].join('、\\n'),\n 編號: index + 1,\n 服務個案姓名: item['服務個案姓名'].reduce((groups, item) => {\n const lastGroup = groups[groups.length - 1];\n if (lastGroup && lastGroup.length < 3) {\n lastGroup.push(item);\n } else {\n groups.push([item]);\n }\n return groups;\n }, []).map((group) => `${group.join('、')}`).join('\\n'),\n 送餐日期: Object.keys(item['送餐日期'])\n .sort((a, b) => a > b ? 1 : -1)\n .reduce((array, dateKey) => {\n const previousItem = array[array.length - 1];\n\n if (previousItem && previousItem.dateKey) {\n const [from, to] = previousItem.dateKey.split('-');\n const lastDate = to || from;\n if (parseInt(lastDate) + 1 === parseInt(dateKey)) {\n previousItem.dateKey = `${from}-${dateKey}`;\n previousItem.value += item['送餐日期'][dateKey];\n return array;\n }\n }\n\n array.push({\n dateKey,\n value: item['送餐日期'][dateKey],\n });\n\n return array;\n }, [])\n .map(({ dateKey, value }) => `${dateKey}(${value})`)\n .join(', '),\n });\n });\n\n // https://docs.sheetjs.com/docs/solutions/processing#worksheet\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [\n { s: { r: 0, c: 0 }, e: { r: 0, c: 7 } },\n { s: { r: 1, c: 0 }, e: { r: 1, c: 7 } },\n ];\n utils.sheet_add_aoa(worksheet, [[`補助長期照顧營養餐飲服務 ${yearMonthTitle} 志工服務及志工交通費${pandagoSheet ? '(熊貓)' : '(大使)'}`]], { origin: 'A1' });\n utils.sheet_add_aoa(worksheet, [[`服務單位: ${clientName}`]], { origin: 'A2' });\n utils.sheet_add_aoa(worksheet, [['鄉鎮', '編號', '志工姓名', '午餐/晚餐', '單價(元)', '送餐天數(天)', '合計(元)', '服務個案姓名', '送餐日期']], { origin: 'A3' });\n utils.sheet_add_json(worksheet, data, { origin: 'A4', skipHeader: true });\n\n const offset = 3 + data.length;\n worksheet['!merges'].push({ s: { r: offset, c: 0 }, e: { r: offset, c: 4 } });\n utils.sheet_add_aoa(worksheet, [[`合計`]], { origin: `A${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalCount]], { origin: `F${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalCount * deliverySubsidy]], { origin: `G${offset+1}` });\n\n utils.sheet_add_aoa(worksheet, [[`承辦人簽章:`]], { origin: `A${offset+3}` });\n utils.sheet_add_aoa(worksheet, [[`主管簽章:`]], { origin: `F${offset+3}` });\n\n worksheet['!cols'] = [\n { wch: 13 },\n { wch: 5 },\n { wch: 20 },\n { wch: 13 },\n { wch: 8 },\n { wch: 13 },\n { wch: 10 },\n { wch: 45 },\n { wch: 40 },\n ];\n\n return worksheet;\n}\n","import moment from 'moment';\nimport {\n countiesDistricts,\n} from '@silvergatedelivery/constants';\nimport { formatAge, formatGender } from 'utilities/format';\nimport { utils, writeFile, write } from 'sheetjs-style';\n\nimport { getMonthDates } from './helpers';\nimport { unifyCellStyle } from './helpers';\n\nconst COUNTY = '苗栗縣';\nconst deliverySubsidy = 125;\nconst mealCentralGovSubsidyLow = 100;\nconst mealCentralGovSubsidyMidLow = 90;\nconst selfPaidMidLow = 10;\n\nexport default function writeMiaoli({\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n pandagoOrders,\n selectedMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n const [year, month] = selectedMonth.split('-');\n const yearMonthTitle = `${parseInt(year)-1911}年${month}月`;\n\n const workbook = utils.book_new();\n\n // 移除沒有弱勢身份的訂單\n const ordersForDisvantaged = orders.filter((order) => {\n const { disadvantagedTypesSlot } = elders.find((elder) => elder.id === order.elderId) || {};\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n const slot = disadvantagedTypesSlot.find(({ start, end }) => order.date >= start && order.date < end);\n if (slot && slot.type === '一般') {\n return false;\n }\n }\n return true;\n });\n\n const params = {\n elders,\n orders: ordersForDisvantaged,\n pandagoOrders,\n deliveryStaffs,\n yearMonthTitle,\n clientName,\n selectedMonth,\n };\n\n utils.book_append_sheet(workbook, getWorksheetElders(params), `個案`);\n utils.book_append_sheet(workbook, getWorksheetStatistics(params), `餐費費用總表`);\n utils.book_append_sheet(workbook, getWorksheetApplication(params), `經費需求表`);\n utils.book_append_sheet(workbook, getWorksheetDeliveryFee(params), `志工交通費用印領清冊(送餐大使)`);\n utils.book_append_sheet(workbook, getWorksheetDeliveryFeePandago(params), `志工交通費用印領清冊(Pandago)`);\n\n if (process.env.JEST_WORKER_ID) {\n return write(workbook, { type: 'buffer', bookType: 'xlsx' });\n }\n\n writeFile(workbook, `${clientName}__${COUNTY}核銷報表__${selectedMonth}.xlsx`);\n}\n\nfunction getWorksheetElders({ elders = [], orders = [] }) {\n const elderRows = [];\n elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .map(({\n id,\n name,\n identificationCardId,\n gender,\n birthday,\n disadvantagedTypes,\n disadvantagedTypesSlot,\n linkGroupName,\n address: {\n district,\n },\n }) => {\n const elderOrders = orders\n .filter(({ elderId }) => elderId === id);\n\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n if (type === '一般') {\n return;\n }\n const filteredOrders = elderOrders.filter(({ date }) => date >= start && date < end);\n if (filteredOrders.length === 0) {\n return;\n }\n const existingRow = elderRows.find(({ 身分證字號, 身份別 }) => 身分證字號 === identificationCardId && 身份別 === type);\n if (existingRow) {\n existingRow.服務量 += filteredOrders.length;\n existingRow.午餐量 += filteredOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length;\n existingRow.晚餐量 += filteredOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length;\n } else {\n elderRows.push({\n 姓名: name,\n 身分證字號: identificationCardId,\n 性別: formatGender(gender),\n 年齡: formatAge(birthday),\n 身份別: type,\n 服務量: filteredOrders.length,\n 午餐量: filteredOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length,\n 晚餐量: filteredOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length,\n 地址: district,\n 家庭代碼: linkGroupName,\n // 核增: '',\n });\n }\n });\n } else {\n if (elderOrders.length === 0) {\n return;\n }\n elderRows.push({\n 姓名: name,\n 身分證字號: identificationCardId,\n 性別: formatGender(gender),\n 年齡: formatAge(birthday),\n 身份別: disadvantagedTypes,\n 服務量: elderOrders.length,\n 午餐量: elderOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length,\n 晚餐量: elderOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length,\n 地址: district,\n 家庭代碼: linkGroupName,\n // 核增: '',\n });\n }\n });\n const worksheet = utils.json_to_sheet(elderRows);\n\n worksheet['!cols'] = [\n { wch: 13 }, { wch: 13 },\n { wch: 5 }, { wch: 6 },\n { wch: 10 }, { wch: 8 },\n { wch: 8 }, { wch: 8 },\n { wch: 8 }, { wch: 10 },\n ];\n\n return worksheet;\n}\n\nfunction getWorksheetStatistics({ elders, orders, yearMonthTitle, clientName, selectedMonth }) {\n const districs = countiesDistricts.filter(({ county }) => county === COUNTY).reduce((all, { districts: items }) => {\n return [...all, ...items];\n }, []);\n\n const yearTitle = yearMonthTitle.split('年')[0];\n const fromMonth = moment(selectedMonth).startOf('month').format('MM/DD');\n const toMonth = moment(selectedMonth).endOf('month').format('MM/DD');\n\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`單位名稱:${clientName}`]], { origin: 'A1' });\n\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 1, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`補助${yearTitle}年度長期照顧營養餐飲服務 餐費費用總表`]], { origin: 'A2' });\n\n worksheet['!merges'].push({ s: { r: 2, c: 0 }, e: { r: 2, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`送餐期間:${yearTitle}/${fromMonth}-${yearTitle}/${toMonth}`]], { origin: 'A3' });\n\n const mappingA = [...districs, '金額合計'].reduce((obj, key) => {\n obj[key] = obj[key] || {\n '鄉鎮市': key,\n '餐費金額': 0,\n '案家自付金額': 0, // TODO: what's this\n '補助金額': 0,\n };\n\n return obj;\n }, {});\n\n const mappingB = [...districs, '金額合計'].reduce((obj, key) => {\n obj[key] = obj[key] || {\n '送餐鄉鎮別': key,\n '補助低收入戶金額': 0,\n '補助中低收入戶金額': 0,\n '案家自費': 0,\n '小計': 0,\n '補助金額': 0,\n '人數': 0,\n '人次': 0,\n };\n\n return obj;\n }, {});\n\n const countedElderIds = [];\n orders.forEach(({ elderId, date }) => {\n const {\n disadvantagedTypes,\n disadvantagedTypesSlot,\n address: { district },\n } = elders.find(({ id }) => id === elderId);\n\n let type = disadvantagedTypes;\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n const slot = disadvantagedTypesSlot.find(({ start, end }) => date >= start && date < end);\n type = slot.type;\n }\n\n const defaultPaidFee = mealCentralGovSubsidyLow;\n const defaultSelfPaidFee = 0;\n\n let paidFee = defaultPaidFee;\n let selfPaidFee = defaultSelfPaidFee;\n switch (type) {\n case '低收':\n paidFee = mealCentralGovSubsidyLow;\n selfPaidFee = 0;\n\n mappingB[district]['補助低收入戶金額'] += paidFee;\n mappingB['金額合計']['補助低收入戶金額'] += paidFee;\n break;\n case '中低收':\n paidFee = mealCentralGovSubsidyMidLow;\n selfPaidFee = selfPaidMidLow;\n\n mappingB[district]['補助中低收入戶金額'] += paidFee;\n mappingB['金額合計']['補助中低收入戶金額'] += paidFee;\n break;\n default:\n }\n\n mappingA[district]['餐費金額'] += defaultPaidFee;\n mappingA[district]['案家自付金額'] += selfPaidFee;\n mappingA[district]['補助金額'] += paidFee;\n\n mappingA['金額合計']['餐費金額'] += defaultPaidFee;\n mappingA['金額合計']['案家自付金額'] += selfPaidFee;\n mappingA['金額合計']['補助金額'] += paidFee;\n\n\n mappingB[district]['案家自費'] += selfPaidFee;\n mappingB['金額合計']['案家自費'] += selfPaidFee;\n\n mappingB[district]['小計'] += (paidFee + selfPaidFee);\n mappingB['金額合計']['小計'] += (paidFee + selfPaidFee);\n\n mappingB[district]['補助金額'] += paidFee;\n mappingB['金額合計']['補助金額'] += paidFee;\n\n if (!countedElderIds.includes(elderId)) {\n mappingB[district]['人數'] += 1;\n mappingB['金額合計']['人數'] += 1;\n countedElderIds.push(elderId);\n }\n\n mappingB[district]['人次']++;\n mappingB['金額合計']['人次']++;\n });\n\n const districtsFeesA = Object.keys(mappingA).map((key) => {\n if (mappingA[key]['補助金額'] === 0) {\n return null;\n } else {\n return mappingA[key];\n }\n }).filter((x) => x);\n const districtsFeesB = Object.keys(mappingB).map((key) => {\n if (mappingB[key]['小計'] === 0) {\n return null;\n } else {\n return mappingB[key];\n }\n }).filter((x) => x);\n\n utils.sheet_add_json(worksheet, districtsFeesA, { origin: 'A5', skipHeader: false });\n\n const offset = districtsFeesA.length + 8;\n utils.sheet_add_json(worksheet, districtsFeesB, { origin: `A${offset}`, skipHeader: false });\n\n const offset2 = offset + districtsFeesB.length + 2;\n utils.sheet_add_aoa(worksheet, [[`承辦人簽章:`]], { origin: `A${offset2}` });\n utils.sheet_add_aoa(worksheet, [[`主管簽章:`]], { origin: `F${offset2}` });\n\n return worksheet;\n}\n\nfunction getWorksheetApplication({ elders, orders, pandagoOrders, deliveryStaffs, yearMonthTitle, clientName, selectedMonth }) {\n const [yearTitle, monthTitle] = yearMonthTitle.split('年');\n const fromMonth = moment(selectedMonth).startOf('month').format('MM/DD');\n const toMonth = moment(selectedMonth).endOf('month').format('MM/DD');\n\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n let totalPaid = 0;\n\n const disadvantagedTypeList = ['低收', '中低收'];\n const mappings = {\n 低收: {\n 單位: '人次',\n 數量: 0,\n 單價: mealCentralGovSubsidyLow,\n 金額: 0,\n 說明: '低收入戶',\n },\n 中低收: {\n 單位: '人次',\n 數量: 0,\n 單價: mealCentralGovSubsidyMidLow,\n 金額: 0,\n 說明: '中低收入戶',\n },\n 大使: {\n 單位: '趟',\n 數量: 0,\n 單價: deliverySubsidy,\n 金額: 0,\n 說明: '大使',\n dates: [],\n },\n 熊貓: {\n 單位: '趟',\n 數量: 0,\n 單價: deliverySubsidy,\n 金額: 0,\n 說明: '熊貓',\n dates: [],\n },\n };\n\n orders.forEach(({ id: orderId, elderId, deliveryStaffId, date, mealSlot }) => {\n const {\n disadvantagedTypes,\n disadvantagedTypesSlot,\n } = elders.find(({ id }) => id === elderId);\n const { name: deliveryStaffName } = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n let type = disadvantagedTypes;\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n const slot = disadvantagedTypesSlot.find(({ start, end }) => date >= start && date < end);\n type = slot.type;\n }\n\n if (disadvantagedTypeList.includes(type)) {\n mappings[type]['數量']++;\n mappings[type]['金額'] += mappings[type]['單價'];\n\n totalPaid += mappings[type]['單價'];\n }\n\n const pandagoOrder = pandagoOrders.find((x) => x.orderId === orderId);\n const padnagoDeliveryStaffName = pandagoOrder ? `${pandagoOrder.driver.name}(pandago)` : undefined;\n\n const dateKey = `${date}__${deliveryStaffId}__${mealSlot}__${padnagoDeliveryStaffName || deliveryStaffName}`;\n if (pandagoOrder) {\n if (!mappings['熊貓'].dates.includes(dateKey)) {\n mappings['熊貓']['數量']++;\n mappings['熊貓']['金額'] += mappings['熊貓']['單價'];\n totalPaid += mappings['熊貓']['單價'];\n mappings['熊貓'].dates.push(dateKey);\n }\n } else if (!mappings['大使'].dates.includes(dateKey)) {\n mappings['大使']['數量']++;\n mappings['大使']['金額'] += mappings['大使']['單價'];\n totalPaid += mappings['大使']['單價'];\n mappings['大使'].dates.push(dateKey);\n }\n });\n\n const data = Object.keys(mappings).map((key) => {\n delete mappings[key].dates;\n return mappings[key];\n });\n\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`年度期間:${yearTitle}/${fromMonth}-${yearTitle}/${toMonth}`]], { origin: 'A1' });\n\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 1, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`單位:${clientName}`]], { origin: 'A2' });\n\n worksheet['!merges'].push({ s: { r: 2, c: 0 }, e: { r: 2, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`計畫名稱:${yearTitle}年度苗栗縣政府特約長期照顧-營養餐飲`]], { origin: 'A3' });\n\n worksheet['!merges'].push({ s: { r: 6, c: 0 }, e: { r: 6, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`經費需求表`]], { origin: 'A7' });\n\n utils.sheet_add_aoa(worksheet, [['項次', '項目', '月份']], { origin: 'A9' });\n\n worksheet['!merges'].push({ s: { r: 9, c: 0 }, e: { r: 10, c: 0 } });\n worksheet['!merges'].push({ s: { r: 9, c: 1 }, e: { r: 10, c: 1 } });\n worksheet['!merges'].push({ s: { r: 9, c: 2 }, e: { r: 10, c: 2 } });\n utils.sheet_add_aoa(worksheet, [['1', '業務費', monthTitle]], { origin: 'A10' });\n\n worksheet['!merges'].push({ s: { r: 11, c: 0 }, e: { r: 12, c: 0 } });\n worksheet['!merges'].push({ s: { r: 11, c: 1 }, e: { r: 12, c: 1 } });\n worksheet['!merges'].push({ s: { r: 11, c: 2 }, e: { r: 12, c: 2 } });\n utils.sheet_add_aoa(worksheet, [['2', '志工交通費', monthTitle]], { origin: 'A12' });\n\n worksheet['!merges'].push({ s: { r: 13, c: 0 }, e: { r: 13, c: 4 } });\n utils.sheet_add_aoa(worksheet, [[`合計`]], { origin: 'A14' });\n utils.sheet_add_aoa(worksheet, [['申請補助金額', totalPaid]], { origin: 'F14' });\n\n utils.sheet_add_json(worksheet, data, { origin: 'D9', skipHeader: false });\n\n worksheet['!merges'].push({ s: { r: 16, c: 0 }, e: { r: 16, c: 2 } });\n utils.sheet_add_aoa(worksheet, [[`製表人:`]], { origin: `A17` });\n\n return worksheet;\n}\n\nfunction getWorksheetDeliveryFee({ elders, orders, deliveryStaffs, yearMonthTitle, clientName, selectedMonth }) {\n const mappings = {};\n\n let totalCount = 0;\n\n orders.forEach(({ id: orderId, elderId, mealSlot, deliveryStaffId, date: fullDate }) => {\n const { name, address: { district } } = elders.find(({ id }) => id === elderId);\n // exclude pandago\n const deliveryStaff = deliveryStaffs.find(({ id, username }) => id === deliveryStaffId && username !== 'pandago');\n\n if (!deliveryStaff) {\n return;\n }\n\n const elderName = name.replace(/ /g, '').split('(')[0];\n\n // const key = `${district}__${mealSlot}__${deliveryStaffId}`;\n const key = `${deliveryStaff.name}__${deliveryStaffId}__${mealSlot}`;\n mappings[key] = mappings[key] || {\n '鄉鎮': [],\n '編號': '', // fill later\n '志工姓名': deliveryStaff.name,\n '午餐/晚餐': mealSlot === 'lunch' ? '午餐' : '晚餐',\n '單價(元)': deliverySubsidy,\n '送餐天數(天)': 0,\n '合計(元)': 0,\n '服務個案姓名': [],\n '送餐日期': {},\n 'dateMappings': getMonthDates(selectedMonth).reduce((obj, item) => {\n obj[item.date] = {\n label: item.label,\n elders: [],\n };\n return obj;\n }, {}),\n };\n\n if (!mappings[key]['鄉鎮'].includes(district)) {\n mappings[key]['鄉鎮'].push(district);\n }\n\n if (!mappings[key]['服務個案姓名'].includes(elderName)) {\n mappings[key]['服務個案姓名'].push(elderName);\n }\n\n const date = fullDate.split('-').pop();\n\n if (!mappings[key]['送餐日期'][date]) {\n mappings[key]['送餐天數(天)']++;\n mappings[key]['合計(元)'] += deliverySubsidy;\n mappings[key]['送餐日期'][date] = 0;\n totalCount++;\n }\n\n mappings[key]['送餐日期'][date] = 1;\n\n if (!mappings[key].dateMappings[fullDate].elders.includes(elderName)) {\n mappings[key].dateMappings[fullDate].elders.push(elderName);\n }\n });\n\n const data = Object.keys(mappings)\n .sort((a, b) => a < b ? 1 : -1)\n .map((key, index) => {\n const item = mappings[key];\n\n const data = Object.assign(item, {\n 鄉鎮: item['鄉鎮'].join('、\\n'),\n 編號: index + 1,\n 服務個案姓名: item['服務個案姓名'].reduce((groups, item) => {\n const lastGroup = groups[groups.length - 1];\n if (lastGroup && lastGroup.length < 3) {\n lastGroup.push(item);\n } else {\n groups.push([item]);\n }\n return groups;\n }, []).map((group) => `${group.join('、')}`).join('\\n'),\n 送餐日期: Object.keys(item['送餐日期'])\n .sort((a, b) => a > b ? 1 : -1)\n .reduce((array, dateKey) => {\n const previousItem = array[array.length - 1];\n\n if (previousItem && previousItem.dateKey) {\n const [from, to] = previousItem.dateKey.split('-');\n const lastDate = to || from;\n if (parseInt(lastDate) + 1 === parseInt(dateKey)) {\n previousItem.dateKey = `${from}-${dateKey}`;\n previousItem.value++;\n return array;\n }\n }\n\n array.push({\n dateKey,\n value: item['送餐日期'][dateKey],\n });\n\n return array;\n }, [])\n .map(({ dateKey, value }) => `${dateKey}(${value})`)\n .join('、\\n'),\n ...Object.keys(item.dateMappings).reduce((obj, date) => {\n const { label, elders } = item.dateMappings[date];\n obj[label] = elders.join('、\\n');\n return obj;\n }, {}),\n });\n\n delete data.dateMappings;\n\n return data;\n });\n\n // https://docs.sheetjs.com/docs/solutions/processing#worksheet\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [\n { s: { r: 0, c: 0 }, e: { r: 0, c: 7 } },\n { s: { r: 1, c: 0 }, e: { r: 1, c: 7 } },\n ];\n utils.sheet_add_aoa(worksheet, [[`補助長期照顧營養餐飲服務 ${yearMonthTitle} 志工交通費清冊`]], { origin: 'A1' });\n utils.sheet_add_aoa(worksheet, [[`服務單位: ${clientName}`]], { origin: 'A2' });\n const dateLabels = getMonthDates(selectedMonth).map(({ label }) => label);\n utils.sheet_add_aoa(worksheet, [[\n '鄉鎮', '編號', '志工姓名', '午餐/晚餐', '單價(元)', '送餐天數(天)', '合計(元)', '服務個案姓名', '送餐日期', ...dateLabels,\n ]], { origin: 'A3' });\n utils.sheet_add_json(worksheet, data, { origin: 'A4', skipHeader: true });\n\n const offset = 3 + data.length;\n worksheet['!merges'].push({ s: { r: offset, c: 0 }, e: { r: offset, c: 4 } });\n utils.sheet_add_aoa(worksheet, [[` 合計`]], { origin: `A${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalCount]], { origin: `F${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalCount * deliverySubsidy]], { origin: `G${offset+1}` });\n\n utils.sheet_add_aoa(worksheet, [[`承辦人簽章:`]], { origin: `A${offset+3}` });\n utils.sheet_add_aoa(worksheet, [[`主管簽章:`]], { origin: `F${offset+3}` });\n\n unifyCellStyle(worksheet, offset + 5);\n\n worksheet['!cols'] = [\n { wch: 13 },\n { wch: 5 },\n { wch: 20 },\n { wch: 13 },\n { wch: 8 },\n { wch: 13 },\n { wch: 10 },\n { wch: 45 },\n { wch: 40 },\n ...dateLabels.map(() => ({ wch: 10 })),\n ];\n\n return worksheet;\n}\n\nfunction getWorksheetDeliveryFeePandago({ elders, orders, deliveryStaffs, pandagoOrders, yearMonthTitle, clientName, selectedMonth }) {\n const [yearTitle] = yearMonthTitle.split('年');\n\n const mappings = {};\n let totalCount = 0;\n\n orders.forEach(({ id: orderId, elderId, mealSlot, deliveryStaffId, date: fullDate }) => {\n const { name: elderNameOriginal, address: { district } } = elders.find(({ id }) => id === elderId);\n const deliveryStaff = deliveryStaffs.find(({ id, username }) => id === deliveryStaffId && username === 'pandago');\n\n // only include pandago orders\n if (!deliveryStaff) return;\n const { driver: { name: deliveryStaffNameOriginal, phoneNumber } } = pandagoOrders.find((x) => x.orderId === orderId);\n\n const elderName = elderNameOriginal.replace(/ /g, '').split('(')[0];\n const deliveryStaffName = `${deliveryStaffNameOriginal} ${phoneNumber}`;\n const key = `${mealSlot}__${deliveryStaffId}__${deliveryStaffName}`;\n mappings[key] = mappings[key] || {\n '鄉鎮': [],\n '編號': '', // fill later\n '志工姓名': deliveryStaffName,\n '午餐/晚餐': mealSlot === 'lunch' ? '午餐' : '晚餐',\n '單價(元)': deliverySubsidy,\n '送餐天數(天)': 0,\n '合計(元)': 0,\n '服務個案姓名': [],\n '送餐日期': [],\n 'dateMappings': getMonthDates(selectedMonth).reduce((obj, item) => {\n obj[item.date] = {\n label: item.label,\n elders: [],\n };\n return obj;\n }, {}),\n };\n\n if (!mappings[key]['鄉鎮'].includes(district)) {\n mappings[key]['鄉鎮'].push(district);\n }\n\n if (!mappings[key]['服務個案姓名'].includes(elderName)) {\n mappings[key]['服務個案姓名'].push(elderName);\n }\n\n const date = moment(fullDate).format('MM/DD');\n\n if (!mappings[key]['送餐日期'].includes(date)) {\n mappings[key]['送餐天數(天)']++;\n mappings[key]['合計(元)'] += deliverySubsidy;\n mappings[key]['送餐日期'].push(date);\n totalCount++;\n }\n\n mappings[key]['送餐日期'][date] = 1;\n\n if (!mappings[key].dateMappings[fullDate].elders.includes(elderName)) {\n mappings[key].dateMappings[fullDate].elders.push(elderName);\n }\n });\n const data = Object.keys(mappings)\n .map((key, index) => {\n const item = mappings[key];\n\n const data = Object.assign(item, {\n 鄉鎮: item['鄉鎮'].join('、\\n'),\n 服務個案姓名: item['服務個案姓名'].join('、\\n'),\n 送餐日期: item['送餐日期'].join('、\\n'),\n ...Object.keys(item.dateMappings).reduce((obj, date) => {\n const { label, elders } = item.dateMappings[date];\n obj[label] = elders.join('、\\n');\n return obj;\n }, {}),\n });\n\n delete data.dateMappings;\n\n return data;\n });\n data.sort((a, b) => a['鄉鎮'] < b['鄉鎮'] ? 1 : -1);\n data.forEach((item, index) => {\n item['編號'] = index + 1;\n });\n // https://docs.sheetjs.com/docs/solutions/processing#worksheet\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [\n { s: { r: 0, c: 0 }, e: { r: 0, c: 7 } },\n { s: { r: 1, c: 0 }, e: { r: 1, c: 7 } },\n ];\n\n utils.sheet_add_aoa(worksheet, [[`補助${yearTitle}年度苗栗縣老人送餐服務計畫 ${yearMonthTitle} 志工交通費清冊`]], { origin: 'A1' });\n utils.sheet_add_aoa(worksheet, [[`服務單位: ${clientName}`]], { origin: 'A2' });\n utils.sheet_add_aoa(worksheet, [[\n '鄉鎮', '編號', '志工姓名', '午餐/晚餐', '單價(元)', '送餐天數(天)', '合計(元)', '服務個案姓名', '送餐日期', ...getMonthDates(selectedMonth).map(({ label }) => label),\n ]], { origin: 'A3' });\n utils.sheet_add_json(worksheet, data, { origin: 'A4', skipHeader: true });\n\n const offset = 3 + data.length;\n worksheet['!merges'].push({ s: { r: offset, c: 0 }, e: { r: offset, c: 4 } });\n utils.sheet_add_aoa(worksheet, [[`合計`]], { origin: `A${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalCount]], { origin: `F${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalCount * deliverySubsidy]], { origin: `G${offset+1}` });\n\n utils.sheet_add_aoa(worksheet, [[`承辦人簽章:`]], { origin: `A${offset+3}` });\n utils.sheet_add_aoa(worksheet, [[`主管簽章:`]], { origin: `F${offset+3}` });\n\n unifyCellStyle(worksheet, offset + 5);\n\n worksheet['!cols'] = [\n { wch: 13 },\n { wch: 5 },\n { wch: 20 },\n { wch: 10 },\n { wch: 8 },\n { wch: 13 },\n { wch: 10 },\n { wch: 45 },\n { wch: 40 },\n ];\n\n return worksheet;\n}\n","import { formatGender, formatAddress } from 'utilities/format';\nimport { utils, write } from 'sheetjs-style';\nimport JSZip from 'jszip';\nimport { getMonthDates } from './helpers';\nimport { unifyCellStyle } from './helpers';\nimport { download } from 'utilities/file';\n\nconst COUNTY = '雲林縣';\n\nconst monthMapping = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'];\nconst weekdays = ['週日', '週一', '週二', '週三', '週四', '週五', '週六'];\n\nexport default function writeYunlin({\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n pandagoOrders,\n selectedMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n const [year, month] = selectedMonth.split('-');\n const yearMonthTitle = `${parseInt(year)-1911}年${month.replace(/^0+/, '')}月份`;\n\n // 移除沒有弱勢身份的訂單\n // const ordersForDisvantaged = orders.filter((order) => {\n // const { disadvantagedTypesSlot } = elders.find((elder) => elder.id === order.elderId) || {};\n // if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n // const slot = disadvantagedTypesSlot.find(({ start, end }) => order.date >= start && order.date < end);\n // if (slot && slot.type === '一般') {\n // return false;\n // }\n // }\n // return true;\n // });\n\n const zip = new JSZip();\n\n const params = {\n elders,\n // orders: ordersForDisvantaged,\n orders,\n pandagoOrders,\n deliveryStaffs,\n yearMonthTitle,\n clientName,\n selectedMonth,\n };\n const workbookElder = utils.book_new();\n utils.book_append_sheet(workbookElder, getWorksheetElders(params), `${monthMapping[parseInt(month) - 1]}月份`);\n const workbookDeliveryStaff = utils.book_new();\n utils.book_append_sheet(workbookDeliveryStaff, getWorksheetDeliveryStaff(params), `${monthMapping[parseInt(month) - 1]}月份`);\n\n if (process.env.JEST_WORKER_ID) {\n return [\n write(workbookElder, { type: 'buffer', bookType: 'xlsx' }),\n write(workbookDeliveryStaff, { type: 'buffer', bookType: 'xlsx' }),\n ];\n }\n\n const wboutElder = write(workbookElder, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`志工送餐名冊-${clientName}.xlsx`, wboutElder, { binary: true });\n\n const wboutDeliveryStaff = write(workbookDeliveryStaff, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`志工次數月統計表-${clientName}.xlsx`, wboutDeliveryStaff, { binary: true });\n\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${COUNTY}核銷報表__${selectedMonth}.zip`, zipContent);\n}\n\nfunction getWorksheetElders({ elders = [], orders = [], deliveryStaffs, yearMonthTitle, clientName, selectedMonth }) {\n const elderRows = [];\n const monthDates = getMonthDates(selectedMonth, 'MM/DD');\n let index = 1;\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n let rowIndex = 4;\n elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .map(({\n id,\n name,\n identificationCardId,\n gender,\n address,\n }) => {\n const elderOrders = orders\n .filter(({ elderId }) => elderId === id);\n if (elderOrders.length === 0) {\n return;\n }\n const lunchOrders = elderOrders\n .filter(({ mealSlot }) => mealSlot === 'lunch');\n const dinnerOrders = elderOrders\n .filter(({ mealSlot }) => mealSlot === 'dinner');\n const formatElderRow = (orders) => {\n const elderRow = {\n 序號: index,\n 姓名: name,\n 性別: formatGender(gender),\n 身分證字號: identificationCardId,\n 地址: formatAddress(address, { includeZipCode: false }),\n };\n const deliveryStaffIds = [...new Set(orders.map(({ deliveryStaffId }) => deliveryStaffId))];\n const deliveryStaffNames = deliveryStaffIds.map((deliveryStaffId) => {\n return (deliveryStaffs.find(({ id }) => id === deliveryStaffId) || {}).name || '';\n });\n monthDates.forEach(({ date, label }) => {\n const elderOrdersByDate = orders.filter((order) => order.date === date);\n elderRow[label] = elderOrdersByDate.length;\n });\n elderRow['志工'] = deliveryStaffNames.join('、\\n');\n elderRow['合計'] = lunchOrders.length + dinnerOrders.length;\n elderRows.push(elderRow);\n };\n if (lunchOrders.length !== 0) {\n formatElderRow(lunchOrders);\n rowIndex += 1;\n }\n if (dinnerOrders.length !== 0) {\n formatElderRow(dinnerOrders);\n rowIndex += 1;\n }\n if (lunchOrders.length !== 0 && dinnerOrders.length !== 0) {\n worksheet['!merges'].push({ s: { r: rowIndex - 2, c: 0 }, e: { r: rowIndex - 1, c: 0 } });\n worksheet['!merges'].push({ s: { r: rowIndex - 2, c: 1 }, e: { r: rowIndex - 1, c: 1 } });\n worksheet['!merges'].push({ s: { r: rowIndex - 2, c: 2 }, e: { r: rowIndex - 1, c: 2 } });\n worksheet['!merges'].push({ s: { r: rowIndex - 2, c: 3 }, e: { r: rowIndex - 1, c: 3 } });\n worksheet['!merges'].push({ s: { r: rowIndex - 2, c: 4 }, e: { r: rowIndex - 1, c: 4 } });\n worksheet['!merges'].push({\n s: { r: rowIndex - 2, c: Object.keys(elderRows[0]).length - 1 },\n e: { r: rowIndex - 1, c: Object.keys(elderRows[0]).length - 1 },\n });\n delete elderRows[elderRows.length - 1]['序號'],\n delete elderRows[elderRows.length - 1]['姓名'],\n delete elderRows[elderRows.length - 1]['性別'];\n delete elderRows[elderRows.length - 1]['身分證字號'];\n delete elderRows[elderRows.length - 1]['地址'];\n delete elderRows[elderRows.length - 1]['合計'];\n }\n index += 1;\n });\n\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: monthDates.length + 6 } });\n utils.sheet_add_aoa(worksheet, [[`${clientName} 服務紀錄志工送餐名冊`]], { origin: 'A1' });\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 1, c: monthDates.length + 6 } });\n utils.sheet_add_aoa(worksheet, [[yearMonthTitle]], { origin: 'A2' });\n const dateLabels = monthDates.map(({ label }) => label);\n const weekLabels = monthDates.map(({ date }) => {\n const dateObj = new Date(date);\n return weekdays[dateObj.getDay()];\n });\n worksheet['!merges'].push({ s: { r: 2, c: 0 }, e: { r: 3, c: 0 } });\n worksheet['!merges'].push({ s: { r: 2, c: 1 }, e: { r: 3, c: 1 } });\n worksheet['!merges'].push({ s: { r: 2, c: 2 }, e: { r: 3, c: 2 } });\n worksheet['!merges'].push({ s: { r: 2, c: 3 }, e: { r: 3, c: 3 } });\n worksheet['!merges'].push({ s: { r: 2, c: 4 }, e: { r: 3, c: 4 } });\n worksheet['!merges'].push({ s: { r: 2, c: monthDates.length + 5 }, e: { r: 3, c: monthDates.length + 5 } });\n worksheet['!merges'].push({ s: { r: 2, c: monthDates.length + 6 }, e: { r: 3, c: monthDates.length + 6 } });\n utils.sheet_add_aoa(worksheet, [['序號', '姓名', '性別', '身分證字號', '地址', ...dateLabels, '志工', '合計']], { origin: 'A3' });\n utils.sheet_add_aoa(worksheet, [[...weekLabels]], { origin: 'F4' });\n utils.sheet_add_json(worksheet, elderRows, { origin: 'A5', skipHeader: true });\n\n unifyCellStyle(worksheet, elderRows.length + 3);\n worksheet['A1'].s = {\n ...worksheet['A1'].s,\n font: { bold: true, sz: 26 },\n alignment: { horizontal: 'center' },\n };\n worksheet['A2'].s = { ...worksheet['A2'].s, alignment: { horizontal: 'right' } };\n worksheet['!cols'] = [\n { wch: 5 }, { wch: 13 },\n { wch: 5 }, { wch: 14 },\n { wch: 43 },\n ...monthDates.map(() => ({ wch: 5 })),\n { wch: 13 }, { wch: 5 },\n ];\n worksheet['!rows'] = [{ hpx: 34 }];\n return worksheet;\n}\n\nfunction getWorksheetDeliveryStaff({ elders, orders, deliveryStaffs, yearMonthTitle, clientName, selectedMonth }) {\n const monthDates = getMonthDates(selectedMonth, 'MM/DD');\n const data = [];\n let index = 1;\n const totalByDate = {};\n deliveryStaffs.forEach(({ id, name }) => {\n const deliveryStaffOrders = orders.filter(({ deliveryStaffId }) => deliveryStaffId === id);\n if (deliveryStaffOrders.length === 0) {\n return;\n }\n let total = 0;\n const row = {\n '序號': index,\n '志工': name,\n };\n monthDates.forEach(({ date, label }) => {\n if (!totalByDate[date]) {\n totalByDate[date] = 0;\n }\n const elderOrdersByDate = deliveryStaffOrders.filter(({ date: orderDate }) => orderDate === date);\n let value = 0;\n if (elderOrdersByDate.some(({ mealSlot }) => mealSlot === 'lunch')) {\n value += 1;\n total += 1;\n totalByDate[date] += 1;\n }\n if (elderOrdersByDate.some(({ mealSlot }) => mealSlot === 'dinner')) {\n value += 1;\n total += 1;\n totalByDate[date] += 1;\n }\n row[label] = value;\n });\n row['合計'] = total;\n if (!totalByDate['合計']) {\n totalByDate['合計'] = 0;\n }\n totalByDate['合計'] += total;\n data.push(row);\n index += 1;\n });\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [\n { s: { r: 0, c: 1 }, e: { r: 0, c: monthDates.length + 1 } },\n { s: { r: 1, c: 1 }, e: { r: 1, c: monthDates.length + 1 } },\n { s: { r: 2, c: 0 }, e: { r: 3, c: 0 } },\n { s: { r: 2, c: monthDates.length + 2 }, e: { r: 3, c: monthDates.length + 2 } },\n ];\n utils.sheet_add_aoa(worksheet, [[clientName]], { origin: 'B1' });\n utils.sheet_add_aoa(worksheet, [[`${yearMonthTitle}志工服務天數統計表`]], { origin: 'B2' });\n const dateLabels = monthDates.map(({ label }) => label);\n const weekLabels = monthDates.map(({ date }) => {\n const dateObj = new Date(date);\n return weekdays[dateObj.getDay()];\n });\n utils.sheet_add_aoa(worksheet, [['序號', '日期', ...dateLabels, '合計']], { origin: 'A3' });\n utils.sheet_add_aoa(worksheet, [['志工', ...weekLabels]], { origin: 'B4' });\n utils.sheet_add_json(worksheet, data, { origin: 'A5', skipHeader: true });\n const offset = data.length + 5;\n worksheet['!merges'].push({ s: { r: offset - 1, c: 0 }, e: { r: offset - 1, c: 1 } });\n utils.sheet_add_aoa(worksheet, [['志工合計']], { origin: `A${offset}` });\n utils.sheet_add_json(worksheet, [totalByDate], { origin: `C${offset}`, skipHeader: true });\n\n unifyCellStyle(worksheet, offset);\n worksheet['B1'].s = {\n ...worksheet['B1'].s,\n font: { bold: true, sz: 36 },\n alignment: { horizontal: 'center' },\n };\n worksheet['B2'].s = {\n ...worksheet['B2'].s,\n font: { bold: true, sz: 24 },\n alignment: { horizontal: 'center' },\n };\n\n worksheet['!cols'] = [\n { wch: 5 },\n { wch: 13 },\n ...dateLabels.map(() => ({ wch: 5 })),\n { wch: 5 },\n ];\n worksheet['!rows'] = [{ hpx: 50 }, { hpx: 33 }];\n\n return worksheet;\n}\n","import { formatGender, formatAge } from 'utilities/format';\nimport JSZip from 'jszip';\nimport { getMonthDates, buildColumnsArray } from './helpers';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nconst COUNTY = '桃園市';\nconst mealCentralGovSubsidyLow = 100;\nconst mealCentralGovSubsidyMidLow = 90;\n\nconst weekdays = ['日', '一', '二', '三', '四', '五', '六'];\n\nexport default async function writeTaoyuan({\n elders: allElders,\n orders: allOrders,\n selectedMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n const eldersGroupByDistrict = elders.reduce((acc, elder) => {\n const key = elder.address.district;\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(elder);\n return acc;\n }, {});\n\n const workbook = new ExcelJS.Workbook();\n const zip = new JSZip();\n\n await Object.keys(eldersGroupByDistrict).sort().reduce(async (chain, district) => {\n await chain;\n const elders = eldersGroupByDistrict[district];\n const worksheet = workbook.addWorksheet(district);\n const result = getWorksheetDistrict(worksheet, elders, orders, selectedMonth, district);\n if (!result) {\n workbook.removeWorksheet(worksheet.id);\n }\n }, Promise.resolve());\n\n try {\n if (workbook && workbook.worksheets && workbook.worksheets.length > 0) {\n const bufferDataByDistrict = await workbook.xlsx.writeBuffer();\n if (process.env.JEST_WORKER_ID) {\n return bufferDataByDistrict;\n }\n zip.file(`${clientName}__${selectedMonth}訂餐數統計.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedMonth}訂餐數統計.zip`, zipContent);\n }\n}\n\nfunction getWorksheetDistrict(worksheet, elders = [], orders = [], selectedMonth, district) {\n const elderRows = [];\n const dates = getMonthDates(selectedMonth, 'e');\n let elderIndex = 1;\n const rate = {\n '中低收': mealCentralGovSubsidyMidLow,\n '低收': mealCentralGovSubsidyLow,\n '一般': 0,\n };\n\n const totalRow = {\n 餐數小計: [0, 0],\n 餐數合計: 0,\n 餐費小計: 0,\n 服務費小計: 0,\n 合計: 0,\n };\n\n const totalLunchOrderCountList = [];\n const totalDinnerOrderCountList = [];\n\n elders.forEach((elder) => {\n const {\n id,\n name: elderName,\n disadvantagedTypesSlot,\n gender,\n birthday,\n govQualifiedCount,\n } = elder;\n const elderOrders = orders.filter(({ elderId }) => elderId === id);\n\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n const filteredOrders = elderOrders.filter(({ date }) => date >= start && date < end);\n if (filteredOrders.length === 0) {\n return;\n }\n if (type === '長照中低收') {\n type = '中低收';\n }\n let lunchCount = 0;\n let dinnerCount = 0;\n\n const lunchOrderCountList = dates.map(({ date }, index) => {\n const orderInDate = filteredOrders.filter((order) => order.date === date && order.mealSlot === 'lunch');\n const orderCount = orderInDate.reduce((acc, { mealItems }) => {\n if (!mealItems) {\n return 0;\n }\n const mealCount = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.quantity;\n }, 0);\n return acc + mealCount;\n }, 0);\n lunchCount += orderCount;\n if (totalLunchOrderCountList[index] === undefined) {\n totalLunchOrderCountList[index] = 0;\n }\n totalLunchOrderCountList[index] += orderCount;\n return orderCount;\n });\n const dinnerOrderCountList = dates.map(({ date }, index) => {\n const orderInDate = filteredOrders.filter((order) => order.date === date && order.mealSlot === 'dinner');\n const orderCount = orderInDate.reduce((acc, { mealItems }) => {\n if (!mealItems) {\n return 0;\n }\n const mealCount = mealItems.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.quantity;\n }, 0);\n return acc + mealCount;\n }, 0);\n dinnerCount += orderCount;\n if (totalDinnerOrderCountList[index] === undefined) {\n totalDinnerOrderCountList[index] = 0;\n }\n totalDinnerOrderCountList[index] += orderCount;\n return orderCount;\n });\n const ageBase = moment(selectedMonth).tz(TIME_ZONE).endOf('month').valueOf();\n elderRows.push({\n 編號: elderIndex,\n 地區: district,\n 姓名: elderName,\n 性別: formatGender(gender),\n 福利別: `${formatAge(birthday, ageBase) >= 65 ? '老' : '身'}:${type}`,\n 補助金額: rate[type],\n 核定餐次: govQualifiedCount,\n 餐別: ['午餐', '晚餐'],\n lunchOrders: lunchOrderCountList,\n dinnerOrders: dinnerOrderCountList,\n 餐數小計: [lunchCount, dinnerCount],\n 餐數合計: lunchCount + dinnerCount,\n 餐費小計: (lunchCount + dinnerCount) * rate[type],\n 服務費小計: (lunchCount + dinnerCount) * 38,\n 合計: (lunchCount + dinnerCount) * rate[type] + (lunchCount + dinnerCount) * 38,\n });\n totalRow['餐數小計'][0] += lunchCount;\n totalRow['餐數小計'][1] += dinnerCount;\n totalRow['餐數合計'] += lunchCount + dinnerCount,\n totalRow['餐費小計'] += (lunchCount + dinnerCount) * rate[type],\n totalRow['服務費小計'] += (lunchCount + dinnerCount) * 38;\n totalRow['合計'] += (lunchCount + dinnerCount) * rate[type] + (lunchCount + dinnerCount) * 38;\n elderIndex += 1;\n });\n }\n });\n\n const elderRowsCount = elderRows.length;\n\n if (elderRowsCount === 0) {\n return;\n }\n\n const range = 'A:AZ';\n const columnArray = buildColumnsArray(range);\n\n let rowIndex = 1;\n const fontName = 'Calibri';\n\n const columnHeader1 = ['編號', '地區', '姓名', '性別', '福利別', '補助金額', '核定餐次', '餐別'];\n const columnWidth1 = [2.67, 6.33, 9.17, 3.67, 13.67, 10.17, 10.17, 7.83];\n const columnHeader2 = ['餐數小計', '餐數合計', '餐費小計', ['服務費', '小計'], '合計'];\n const columnWidth2 = [10.17, 9.33, 9.33, 7.33, 6.67];\n\n columnHeader1.forEach((headerName, index) => {\n const column = columnArray[index];\n worksheet.mergeCells(`${column}${rowIndex}:${column}${rowIndex + 1}`);\n worksheet.getCell(`${column}${rowIndex}`).value = headerName === '編號' ? '' : headerName;\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getColumn(column).width = columnWidth1[index];\n });\n\n dates.forEach(({ label }, index) => {\n const column = columnArray[index + columnHeader1.length];\n worksheet.getCell(`${column}${rowIndex}`).value = index + 1;\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${column}${rowIndex + 1}`).value = weekdays[label];\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getColumn(column).width = 3.5;\n });\n\n columnHeader2.forEach((headerName, index) => {\n const column = columnArray[index + columnHeader1.length + dates.length];\n if (Array.isArray(headerName)) {\n worksheet.getCell(`${column}${rowIndex}`).value = headerName[0];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${column}${rowIndex + 1}`).value = headerName[1];\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n } else {\n worksheet.mergeCells(`${column}${rowIndex}:${column}${rowIndex + 1}`);\n worksheet.getCell(`${column}${rowIndex}`).value = headerName;\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n }\n worksheet.getColumn(column).width = columnWidth2[index];\n });\n rowIndex += 2;\n\n elderRows.sort((a, b) => a['福利別'] > b['福利別'] ? 1 : -1).forEach((row, elderIndex) => {\n columnHeader1.forEach((headerName, index) => {\n const column = columnArray[index];\n const oneRowHeaderName = Array.isArray(headerName) ? headerName.join() : headerName;\n if (Array.isArray(row[oneRowHeaderName])) {\n worksheet.getCell(`${column}${rowIndex}`).value = row[oneRowHeaderName][0];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${column}${rowIndex + 1}`).value = row[oneRowHeaderName][1];\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n } else {\n worksheet.mergeCells(`${column}${rowIndex}:${column}${rowIndex + 1}`);\n worksheet.getCell(`${column}${rowIndex}`).value = oneRowHeaderName === '編號' ? elderIndex + 1 : row[oneRowHeaderName];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n }\n });\n\n dates.forEach((date, index) => {\n const column = columnArray[index + columnHeader1.length];\n worksheet.getCell(`${column}${rowIndex}`).value = row.lunchOrders[index];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n if (row.lunchOrders[index] === 0) {\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName, color: { argb: 'FF9C0006' } };\n worksheet.getCell(`${column}${rowIndex}`).fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFFC7CE' }, bgColor: { argb: 'FFFFC7CE' } };\n } else {\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n }\n worksheet.getCell(`${column}${rowIndex + 1}`).value = row.dinnerOrders[index];\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n if (row.dinnerOrders[index] === 0) {\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName, color: { argb: 'FF9C0006' } };\n worksheet.getCell(`${column}${rowIndex + 1}`).fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFFC7CE' }, bgColor: { argb: 'FFFFC7CE' } };\n } else {\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n }\n });\n\n columnHeader2.forEach((headerName, index) => {\n const column = columnArray[index + columnHeader1.length + dates.length];\n const oneRowHeaderName = Array.isArray(headerName) ? headerName.join('') : headerName;\n if (Array.isArray(row[headerName])) {\n worksheet.getCell(`${column}${rowIndex}`).value = row[oneRowHeaderName][0];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${column}${rowIndex + 1}`).value = row[oneRowHeaderName][1];\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n } else {\n worksheet.mergeCells(`${column}${rowIndex}:${column}${rowIndex + 1}`);\n worksheet.getCell(`${column}${rowIndex}`).value = row[oneRowHeaderName];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n }\n });\n\n rowIndex += 2;\n });\n\n const column = columnArray[columnHeader1.length - 1];\n worksheet.mergeCells(`A${rowIndex}:${column}${rowIndex + 1}`);\n worksheet.getCell(`A${rowIndex}`).value = '合計';\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n\n dates.forEach((date, index) => {\n const column = columnArray[index + columnHeader1.length];\n worksheet.getCell(`${column}${rowIndex}`).value = totalLunchOrderCountList[index];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n if (totalLunchOrderCountList[index] === 0) {\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName, color: { argb: 'FF9C0006' } };\n worksheet.getCell(`${column}${rowIndex}`).fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFFC7CE' }, bgColor: { argb: 'FFFFC7CE' } };\n } else {\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n }\n worksheet.getCell(`${column}${rowIndex + 1}`).value = totalDinnerOrderCountList[index];\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n if (totalDinnerOrderCountList[index] === 0) {\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName, color: { argb: 'FF9C0006' } };\n worksheet.getCell(`${column}${rowIndex + 1}`).fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFFC7CE' }, bgColor: { argb: 'FFFFC7CE' } };\n } else {\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n }\n });\n columnHeader2.forEach((headerName, index) => {\n const column = columnArray[index + columnHeader1.length + dates.length];\n const oneRowHeaderName = Array.isArray(headerName) ? headerName.join('') : headerName;\n if (Array.isArray(totalRow[headerName])) {\n worksheet.getCell(`${column}${rowIndex}`).value = totalRow[oneRowHeaderName][0];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${column}${rowIndex + 1}`).value = totalRow[oneRowHeaderName][1];\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n } else {\n worksheet.mergeCells(`${column}${rowIndex}:${column}${rowIndex + 1}`);\n worksheet.getCell(`${column}${rowIndex}`).value = totalRow[oneRowHeaderName];\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n }\n });\n\n return worksheet;\n}\n","import { utils, writeFile, write } from 'xlsx';\nimport moment from 'moment';\nimport { getMonthDates, convertDateToZhFormat } from './helpers';\nimport { chunkArray } from 'utilities/array';\n\nconst COUNTY = '新北市';\nconst SUBSIDY_UNIT = 80;\nconst SUBSIDY_UNIT_REMOTE = 60; // additional\nconst REMOTE_DISTRICTS = [\n // 原住民區域\n '烏來區',\n // 偏遠地區\n '石碇區', '坪林區',\n '平溪區', '雙溪區', '貢寮區',\n];\n\nexport default function writeReport({\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n selectedMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n const [year, month] = selectedMonth.split('-');\n const yearMonthTitle = `${parseInt(year)-1911}年${month}月`;\n\n const workbook = utils.book_new();\n\n utils.book_append_sheet(workbook, getWorksheetCover(), `目錄`);\n\n utils.book_append_sheet(workbook, getWorksheetEldersForRegularDistricts({\n clientName,\n yearMonthTitle,\n elders,\n orders,\n deliveryStaffs,\n }), `附件1_照顧組合服務費用項目清冊`);\n\n utils.book_append_sheet(workbook, getWorksheetEldersForRemoteDistricts({\n clientName,\n yearMonthTitle,\n elders,\n orders,\n }), `附件1-2_(偏區)請領清冊`);\n\n utils.book_append_sheet(workbook, getWorksheetDeliveryList({\n clientName,\n yearMonthTitle,\n selectedMonth,\n elders,\n orders,\n deliveryStaffs,\n }), `附件2_志工到府送餐服務個案清冊`);\n\n utils.book_append_sheet(workbook, getWorksheetStatistics({\n clientName,\n yearMonthTitle,\n selectedMonth,\n elders,\n orders,\n }), `附件3_服務人數月報表`);\n\n if (process.env.JEST_WORKER_ID) {\n return write(workbook, { type: 'buffer', bookType: 'xlsx' });\n }\n\n writeFile(workbook, `${clientName}__${COUNTY}核銷報表__${selectedMonth}.xlsx`, { bookSST: true, cellStyles: true });\n}\n\nfunction getWorksheetCover() {\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n // Title\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 3 } });\n utils.sheet_add_aoa(worksheet, [[`新北市政府辦理長期照顧十年計畫2.0營養餐飲服務特約獎補助計畫`]], { origin: 'A1' });\n\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 1, c: 3 } });\n utils.sheet_add_aoa(worksheet, [[`每月紙本核銷應檢附文件`]], { origin: 'A2' });\n\n utils.sheet_add_aoa(worksheet, [[`編號`, '文件名稱', '備註']], { origin: 'A3' });\n utils.sheet_add_aoa(worksheet, [[`1`, '特約契約書影本(但申報前一月曾有申報紀錄者,免附)']], { origin: 'A4' });\n utils.sheet_add_aoa(worksheet, [[`2`, '營養餐飲服務補助領據']], { origin: 'A5' });\n utils.sheet_add_aoa(worksheet, [[`3`, '單位用印大、小章之長照服務提供者服務費用申報總表']], { origin: 'A6' });\n utils.sheet_add_aoa(worksheet, [[`4`, '照顧組合服務費用項目清冊。']], { origin: 'A7' });\n utils.sheet_add_aoa(worksheet, [[`5`, '到府送餐志工交通費及誤餐費請領清冊(一般區及偏區)']], { origin: 'A8' });\n utils.sheet_add_aoa(worksheet, [[`6`, '志工到府送餐服務個案清冊']], { origin: 'A9' });\n utils.sheet_add_aoa(worksheet, [[`7`, '營養餐飲服務月報表']], { origin: 'A10' });\n\n worksheet['!merges'].push({ s: { r: 7, c: 2 }, e: { r: 9, c: 2 } });\n utils.sheet_add_aoa(worksheet, [['5至7項除紙本資料外,電子檔請於每月10日前郵寄至承辦人信箱AO3581@ntpc.gov.tw']], { origin: 'C8' });\n\n worksheet['!cols'] = [\n { wch: 10 }, { wch: 80 }, { wch: 80 },\n ];\n\n return worksheet;\n}\n\nconst setDisadvantageHistoryWithEndDate = (inDisadvantagedTypesHistory) => {\n if (!inDisadvantagedTypesHistory || inDisadvantagedTypesHistory.length === 0) {\n return [{\n approvedDate: '2000-01-01',\n endDate: '',\n disadvantagedTypes: '無',\n }];\n }\n\n const disadvantagedTypesHistory = inDisadvantagedTypesHistory.map((item, index) => {\n let endDate = '';\n const nextItem = inDisadvantagedTypesHistory[index + 1];\n if (nextItem) {\n endDate = moment(nextItem.approvedDate).add(-1, 'days').format('YYYY-MM-DD');\n }\n\n item.endDate = endDate;\n\n return item;\n });\n\n return disadvantagedTypesHistory;\n};\n\nfunction getWorksheetEldersForRegularDistricts({ clientName, yearMonthTitle, elders = [], orders = [], deliveryStaffs = [] }) {\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n // Title\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 19 } });\n utils.sheet_add_aoa(worksheet, [[`照顧組合服務費用項目清冊`]], { origin: 'A1' });\n\n const getSubsidyRatioByDisadvantageType = (inType) => {\n if (inType.indexOf('中低')) {\n return 0.9;\n }\n return 1;\n };\n\n const elderRows = [];\n elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n // .filter(({\n // address: {\n // district,\n // },\n // }) => {\n // return !REMOTE_DISTRICTS.includes(district);\n // })\n .forEach(({\n id,\n name,\n identificationCardId,\n disadvantagedTypesHistory: inDisadvantagedTypesHistory,\n supervisorId,\n serviceCode,\n }) => {\n // Write row by disadvantagedTypesHistory\n const disadvantagedTypesHistory = setDisadvantageHistoryWithEndDate(inDisadvantagedTypesHistory);\n\n disadvantagedTypesHistory.forEach(({ disadvantagedTypes, approvedDate, endDate }) => {\n const planDescription = `${convertDateToZhFormat(approvedDate)}~${endDate ? convertDateToZhFormat(endDate) : '(計畫異動)'}`;\n const deliveryStaffNames = [];\n const servedDates = [];\n const elderOrders = orders\n .filter(({ elderId, date }) => elderId === id && approvedDate <= date && (endDate ? date <= endDate : true));\n\n elderOrders.forEach(({ deliveryStaffId, date }) => {\n const { name: deliveryStaffName } = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n if (!deliveryStaffNames.includes(deliveryStaffName)) {\n deliveryStaffNames.push(deliveryStaffName);\n }\n\n if (!servedDates.includes(date)) {\n servedDates.push(convertDateToZhFormat(date));\n }\n });\n\n const subsidyRatio = getSubsidyRatioByDisadvantageType(disadvantagedTypes);\n\n const count = elderOrders.length;\n const subsidySubTotal = count * SUBSIDY_UNIT;\n const subsidyDiscount = (1 - subsidyRatio) * subsidySubTotal;\n const subsidyTotal = subsidySubTotal - subsidyDiscount;\n\n if (count === 0) return;\n\n const row = {\n '身分證號': identificationCardId,\n '個案姓名': name,\n '採用計畫': planDescription,\n 'CMS\\n等級': serviceCode,\n '福利身份別': disadvantagedTypes,\n '服務項目\\n類別': 'OT01 營養 餐飲服務',\n '服務日期': chunkArray(servedDates.sort((a, b) => a > b ? 1 : -1), 3).map((g) => g.join(', ')).join(',\\n'),\n '給(支)付\\n價格': 80,\n '原民區或\\n離島支付\\n價格': 80,\n '次數': count,\n '申報費用': subsidySubTotal,\n '部分負擔\\n比率': `${subsidyRatio * 100}%`,\n '部分負擔\\n費用': subsidyDiscount,\n '補助比率': `${subsidyRatio * 100}%`,\n '申請(補助)\\n費用': subsidyTotal,\n '原住民或\\n離島申請\\n(補助)費用': '',\n '實際補助\\n金額': subsidyTotal,\n '服務當下\\n居住縣市': '新北市',\n '照管專員': supervisorId || '',\n '服務人員': deliveryStaffNames.join(','),\n };\n\n elderRows.push(row);\n });\n });\n\n utils.sheet_add_json(worksheet, elderRows, { origin: 'A2', skipHeader: false });\n\n\n worksheet['!cols'] = [\n { wch: 12 }, { wch: 10 }, { wch: 20 }, { wch: 10 },\n { wch: 30 }, { wch: 20 }, { wch: 30 },\n ];\n\n return worksheet;\n}\n\nfunction getWorksheetEldersForRemoteDistricts({ clientName, yearMonthTitle, elders = [], orders = [] }) {\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n // Title\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`新北市政府辦理長期照顧十年計畫2.0營養餐飲服務特約獎補助計畫`]], { origin: 'A1' });\n\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 1, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`(原住民族及偏遠地區)`]], { origin: 'A2' });\n\n worksheet['!merges'].push({ s: { r: 2, c: 0 }, e: { r: 2, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`新北市政府補助${clientName}到府送餐志工交通費及誤餐費${yearMonthTitle}份請領清冊`]], { origin: 'A3' });\n\n // Date Header\n worksheet['!merges'].push({ s: { r: 3, c: 0 }, e: { r: 4, c: 0 } });\n utils.sheet_add_aoa(worksheet, [['編號']], { origin: 'A4' });\n\n worksheet['!merges'].push({ s: { r: 3, c: 1 }, e: { r: 4, c: 1 } });\n utils.sheet_add_aoa(worksheet, [['姓名']], { origin: 'B4' });\n\n worksheet['!merges'].push({ s: { r: 3, c: 2 }, e: { r: 4, c: 2 } });\n utils.sheet_add_aoa(worksheet, [['區域']], { origin: 'C4' });\n\n worksheet['!merges'].push({ s: { r: 3, c: 3 }, e: { r: 4, c: 3 } });\n utils.sheet_add_aoa(worksheet, [['身分證']], { origin: 'D4' });\n\n worksheet['!merges'].push({ s: { r: 3, c: 4 }, e: { r: 4, c: 4 } });\n utils.sheet_add_aoa(worksheet, [['趟次數']], { origin: 'E4' });\n\n worksheet['!merges'].push({ s: { r: 3, c: 5 }, e: { r: 4, c: 5 } });\n utils.sheet_add_aoa(worksheet, [[`每趟單價${SUBSIDY_UNIT_REMOTE}元`]], { origin: 'F4' });\n\n utils.sheet_add_aoa(worksheet, [['補助金額']], { origin: 'G4' });\n utils.sheet_add_aoa(worksheet, [[`(趟次數*${SUBSIDY_UNIT_REMOTE}元)`]], { origin: 'G5' });\n\n worksheet['!merges'].push({ s: { r: 3, c: 7 }, e: { r: 4, c: 7 } });\n utils.sheet_add_aoa(worksheet, [['志工簽章']], { origin: 'H4' });\n\n worksheet['!merges'].push({ s: { r: 3, c: 8 }, e: { r: 4, c: 8 } });\n utils.sheet_add_aoa(worksheet, [['備註']], { origin: 'I4' });\n\n // Data\n let totalSubsidy = 0;\n const elderRows = elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .filter(({\n address: {\n district,\n },\n }) => {\n return REMOTE_DISTRICTS.includes(district);\n })\n .map(({\n id,\n name,\n identificationCardId,\n address: {\n district,\n },\n }, index) => {\n const elderOrders = orders.filter(({ elderId }) => elderId === id);\n\n const count = elderOrders.length;\n const subsidy = SUBSIDY_UNIT_REMOTE * count;\n totalSubsidy += subsidy;\n\n return {\n 編號: index + 1,\n 姓名: name,\n 區域: district,\n 身分證字號: identificationCardId,\n 趟次數: count,\n 補助單價: SUBSIDY_UNIT_REMOTE,\n 補助總額: subsidy,\n 志工簽章: '',\n 備註: '',\n };\n });\n\n utils.sheet_add_json(worksheet, elderRows, { origin: 'A6', skipHeader: true });\n\n // Summary\n const rowOffsetAnchor = 4 + elderRows.length + 1;\n worksheet['!merges'].push({ s: { r: rowOffsetAnchor, c: 0 }, e: { r: rowOffsetAnchor, c: 3 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: `A${rowOffsetAnchor+1}` });\n utils.sheet_add_aoa(worksheet, [[totalSubsidy]], { origin: `F${rowOffsetAnchor+1}` });\n\n worksheet['!merges'].push({ s: { r: rowOffsetAnchor + 1, c: 0 }, e: { r: rowOffsetAnchor + 1, c: 7 } });\n utils.sheet_add_aoa(worksheet, [\n [`*每送1趟補助${SUBSIDY_UNIT_REMOTE}元,每人每日最高補助新臺幣${SUBSIDY_UNIT_REMOTE*4}元,每人每月最高上限補助新臺幣${SUBSIDY_UNIT_REMOTE*120}元。`],\n ], { origin: `A${rowOffsetAnchor+2}` });\n worksheet['!merges'].push({ s: { r: rowOffsetAnchor + 2, c: 0 }, e: { r: rowOffsetAnchor + 2, c: 7 } });\n utils.sheet_add_aoa(worksheet, [\n [`*原住民族區:烏來區。`]], { origin: `A${rowOffsetAnchor+3}` });\n worksheet['!merges'].push({ s: { r: rowOffsetAnchor + 3, c: 0 }, e: { r: rowOffsetAnchor + 3, c: 7 } });\n utils.sheet_add_aoa(worksheet, [\n [`*偏遠地區:石碇區、坪林區、平溪區、雙溪區、貢寮區。`]], { origin: `A${rowOffsetAnchor+4}` });\n utils.sheet_add_aoa(worksheet, [[`填表人::`]], { origin: `A${rowOffsetAnchor+5}` });\n utils.sheet_add_aoa(worksheet, [[`主辦會計:`]], { origin: `C${rowOffsetAnchor+5}` });\n utils.sheet_add_aoa(worksheet, [[`單位主管:`]], { origin: `E${rowOffsetAnchor+5}` });\n\n worksheet['!cols'] = [\n { wch: 20 }, { wch: 20 },\n { wch: 20 }, { wch: 20 },\n { wch: 20 }, { wch: 20 },\n { wch: 20 }, { wch: 20 },\n ];\n\n return worksheet;\n}\n\nfunction getWorksheetDeliveryList({ clientName, selectedMonth, yearMonthTitle, elders = [], orders = [], deliveryStaffs = [] }) {\n const servedElderIds = [];\n\n const deliveryStaffGroupData = {};\n\n const monthDates = getMonthDates(selectedMonth);\n\n orders.forEach(({ elderId, deliveryStaffId, date: deliveryDate, mealSlot }) => {\n if (!servedElderIds.includes(elderId)) {\n servedElderIds.push(elderId);\n }\n\n const {\n name: deliveryStaffName,\n } = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n const {\n name: elderName,\n } = elders.find(({ id }) => id === elderId);\n\n const data = deliveryStaffGroupData[deliveryStaffId] || {\n deliveryStaffName,\n servedDates: [],\n elders: {},\n totalMealCount: 0,\n totalRunCount: 0,\n statisticsByDates: monthDates.reduce((obj, item) => {\n obj[item.date] = {\n meals: 0,\n count: 0,\n elderIds: [],\n };\n\n return obj;\n }, {}),\n };\n\n data.elders[elderName] = data.elders[elderName] || {\n elderName,\n lunchCount: 0,\n dinnerCount: 0,\n dates: monthDates.reduce((obj, item) => {\n obj[item.date] = {\n lunch: 0,\n dinner: 0,\n };\n\n return obj;\n }, {}),\n };\n\n if (!data.servedDates.includes(deliveryDate)) {\n data.servedDates.push(deliveryDate);\n }\n\n data.elders[elderName][`${mealSlot}Count`]++;\n data.elders[elderName].dates[deliveryDate][mealSlot]++;\n\n data.statisticsByDates[deliveryDate].meals++;\n data.totalMealCount++;\n if (!data.statisticsByDates[deliveryDate].elderIds.includes(elderId)) {\n data.statisticsByDates[deliveryDate].elderIds.push(elderId);\n data.statisticsByDates[deliveryDate].count++;\n data.totalRunCount++;\n }\n\n // assign back\n deliveryStaffGroupData[deliveryStaffId] = data;\n });\n\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n // Title\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`新北市政府辦理長期照顧十年計畫2.0營養餐飲服務特約獎補助計畫`]], { origin: 'A1' });\n\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 1, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`新北市政府補助${clientName}${yearMonthTitle}份營養餐飲送餐服務 志工服務個案清冊 本月服務個案數共計:${servedElderIds.length}人`]], { origin: 'A2' });\n\n\n // Group by Delivery Staff\n let rowOffsetAnchor = 2;\n Object.keys(deliveryStaffGroupData).map((deliveryStaffId, index) => {\n const {\n deliveryStaffName,\n servedDates,\n elders,\n statisticsByDates,\n totalMealCount,\n totalRunCount,\n } = deliveryStaffGroupData[deliveryStaffId];\n\n utils.sheet_add_aoa(worksheet, [[`${index+1}.志工姓名:${deliveryStaffName} 服務天數:${servedDates.length}天`]], { origin: `A${rowOffsetAnchor+1}` });\n utils.sheet_add_aoa(worksheet, [\n ['編號', '送餐時段', '姓名 / 日期', ...monthDates.map(({ date }) => moment(date).format('MM/DD')), '', '合計'],\n ], { origin: `A${rowOffsetAnchor+2}` });\n\n let elderRowOffsetAnchor = rowOffsetAnchor + 3;\n Object.keys(elders).map((elderId, elderIndex) => {\n const {\n elderName,\n dates: elderDates,\n lunchCount,\n dinnerCount,\n } = elders[elderId];\n\n worksheet['!merges'].push({ s: { r: elderRowOffsetAnchor - 1, c: 0 }, e: { r: elderRowOffsetAnchor, c: 0 } });\n worksheet['!merges'].push({ s: { r: elderRowOffsetAnchor - 1, c: 2 }, e: { r: elderRowOffsetAnchor, c: 2 } });\n utils.sheet_add_aoa(worksheet, [\n [`${elderIndex+1}`, '午', elderName, ...Object.keys(elderDates).map((x) => elderDates[x].lunch === 0 ? '' : elderDates[x].lunch), '', lunchCount],\n ], { origin: `A${elderRowOffsetAnchor}` });\n utils.sheet_add_aoa(worksheet, [\n [``, '晚', '', ...Object.keys(elderDates).map((x) => elderDates[x].dinner === 0 ? '' : elderDates[x].dinner), '', dinnerCount],\n ], { origin: `A${elderRowOffsetAnchor +1}` });\n\n elderRowOffsetAnchor = elderRowOffsetAnchor + 2;\n });\n\n worksheet['!merges'].push({ s: { r: elderRowOffsetAnchor - 1, c: 0 }, e: { r: elderRowOffsetAnchor - 1, c: 2 } });\n worksheet['!merges'].push({ s: { r: elderRowOffsetAnchor, c: 0 }, e: { r: elderRowOffsetAnchor, c: 2 } });\n utils.sheet_add_aoa(worksheet, [\n ['總計(餐次)', '', '', ...Object.keys(statisticsByDates).map((x) => statisticsByDates[x].meals), '', totalMealCount],\n ], { origin: `A${elderRowOffsetAnchor}` });\n\n utils.sheet_add_aoa(worksheet, [\n ['總計(趟次)', '', '', ...Object.keys(statisticsByDates).map((x) => statisticsByDates[x].count), '', totalRunCount],\n ], { origin: `A${elderRowOffsetAnchor+1}` });\n\n rowOffsetAnchor = elderRowOffsetAnchor + 3;\n });\n\n worksheet['!cols'] = [\n { wch: 10 }, { wch: 10 }, { wch: 10 },\n ];\n\n return worksheet;\n}\n\nconst getMappedDisadvantageType = (inType = '') => {\n if (inType.indexOf('原住民') > -1) {\n return '具原住民身份';\n }\n\n if (inType.indexOf('中低') > -1) {\n return '中低收入';\n }\n\n if (inType.indexOf('低收') > -1) {\n return '低收入戶';\n }\n\n return '一般戶';\n};\n\nfunction getWorksheetStatistics({ clientName, yearMonthTitle, elders = [], orders = [] }) {\n const byElderStatistic = {\n total: {\n '項目別': '總計',\n '總計': 0,\n '低收入戶': 0,\n '中低收入': 0,\n '一般戶': 0,\n '具原住民身分': 0,\n },\n male: {\n '項目別': '男',\n '總計': 0,\n '低收入戶': 0,\n '中低收入': 0,\n '一般戶': 0,\n '具原住民身分': 0,\n },\n female: {\n '項目別': '女',\n '總計': 0,\n '低收入戶': 0,\n '中低收入': 0,\n '一般戶': 0,\n '具原住民身分': 0,\n },\n };\n\n const byMealStatistic = {\n total: {\n '項目別': '總計',\n '總計': 0,\n '低收入戶': 0,\n '中低收入': 0,\n '一般戶': 0,\n '具原住民身分': 0,\n },\n male: {\n '項目別': '男',\n '總計': 0,\n '低收入戶': 0,\n '中低收入': 0,\n '一般戶': 0,\n '具原住民身分': 0,\n },\n female: {\n '項目別': '女',\n '總計': 0,\n '低收入戶': 0,\n '中低收入': 0,\n '一般戶': 0,\n '具原住民身分': 0,\n },\n };\n\n const servedElderIds = [];\n\n orders.forEach(({ elderId, date }) => {\n const {\n disadvantagedTypesHistory: inDisadvantagedTypesHistory,\n gender,\n } = elders.find(({ id }) => id === elderId);\n\n const disadvantagedTypesHistory = setDisadvantageHistoryWithEndDate(inDisadvantagedTypesHistory);\n const { disadvantagedTypes } = disadvantagedTypesHistory\n .find(({ approvedDate, endDate }) => approvedDate <= date && (endDate ? date <= endDate : true)) || {};\n const type = getMappedDisadvantageType(disadvantagedTypes);\n\n byMealStatistic.total['總計']++;\n byMealStatistic.total[type]++;\n byMealStatistic[gender]['總計']++;\n byMealStatistic[gender][type]++;\n\n if (!servedElderIds.includes(elderId)) {\n servedElderIds.push(elderId);\n byElderStatistic.total['總計']++;\n byElderStatistic.total[type]++;\n byElderStatistic[gender]['總計']++;\n byElderStatistic[gender][type]++;\n }\n });\n\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n // Title\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 5 } });\n utils.sheet_add_aoa(worksheet, [[`新北市政府辦理長期照顧十年計畫2.0營養餐飲服務特約獎補助計畫`]], { origin: 'A1' });\n\n // 受益人數\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 1, c: 5 } });\n utils.sheet_add_aoa(worksheet, [[`${clientName}${yearMonthTitle}份服務報表 (受益人數)`]], { origin: 'A2' });\n\n utils.sheet_add_json(worksheet, Object.keys(byElderStatistic).map((key) => byElderStatistic[key]), { origin: 'A3', skipHeader: false });\n\n // 服務餐次\n worksheet['!merges'].push({ s: { r: 8, c: 0 }, e: { r: 8, c: 5 } });\n utils.sheet_add_aoa(worksheet, [[`${clientName}${yearMonthTitle}份服務報表 (服務餐次)`]], { origin: 'A9' });\n\n utils.sheet_add_json(worksheet, Object.keys(byMealStatistic).map((key) => byMealStatistic[key]), { origin: 'A10', skipHeader: false });\n\n return worksheet;\n}\n","import JSZip from 'jszip';\nimport { buildColumnsArray } from './helpers';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport { formatAddress } from 'utilities/format';\nimport { request } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\n\nconst COUNTY = '屏東縣';\n\nconst remoteArea = ['三地門鄉', '霧臺鄉', '瑪家鄉', '泰武鄉', '來義鄉', '春日鄉', '獅子鄉', '牡丹鄉', '滿州鄉', '琉球鄉'];\n\nexport default async function writePingtung({\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n selectedMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n // const elders = allElders; // test\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n const restaurantIds = [];\n orders.forEach(({ restaurantId }) => {\n if (restaurantId && !restaurantIds.includes(restaurantId)) {\n restaurantIds.push(restaurantId);\n }\n });\n\n const restaurants = await Promise.all(restaurantIds.map(async (id) => {\n const { data: { getRestaurant: data } } = await request( /* GraphQL */ `\n query GetRestaurant($id: ID!) {\n getRestaurant(id: $id) {\n id\n name\n address {\n county\n district\n street\n }\n }\n }\n `, { id });\n return data;\n }));\n\n const month = selectedMonth.split('-')[1];\n\n const zip = new JSZip();\n\n const workbookDeliveryStaff = new ExcelJS.Workbook();\n const worksheetDeliveryStaff = workbookDeliveryStaff.addWorksheet(`${month}月`);\n getWorksheetDeliveryStaff(worksheetDeliveryStaff, elders, orders, deliveryStaffs, restaurants, selectedMonth, clientName);\n try {\n if (workbookDeliveryStaff && workbookDeliveryStaff.worksheets && workbookDeliveryStaff.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookDeliveryStaff.xlsx.writeBuffer();\n zip.file(`${selectedMonth}送餐志工交通費印領清冊.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n // const workbookElder = new ExcelJS.Workbook();\n // const worksheet = workbookElder.addWorksheet('照顧組合服務費用項目清冊');\n // getWorksheetElder(worksheet, elders, orders, deliveryStaffs, restaurants, selectedMonth, clientName);\n // try {\n // if (workbookElder && workbookElder.worksheets && workbookElder.worksheets.length > 0) {\n // const bufferDataByDistrict = await workbookElder.xlsx.writeBuffer();\n // zip.file(`${selectedMonth}照顧組合服務費用項目清冊.xlsx`, bufferDataByDistrict, { binary: true });\n // }\n // } catch (e) {\n // console.error(e);\n // }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedMonth}核銷報表.zip`, zipContent);\n }\n}\n\nfunction getWorksheetDeliveryStaff(worksheet, elders = [], orders = [], deliveryStaffs, restaurants, selectedMonth, clientName) {\n const [year, month] = selectedMonth.split('-');\n const ROCYear = parseInt(year) - 1911;\n const deliveryStaffRows = [];\n let total = 0;\n orders.sort((a, b) => {\n if (a.deliveryStaffId < b.deliveryStaffId) return 1;\n if (a.deliveryStaffId < b.deliveryStaffId) return -1;\n if (a.restaurantId < b.restaurantId) return 1;\n return -1;\n }).forEach((order) => {\n const deliveryStaffRowIndex = deliveryStaffRows.findIndex(\n (row) => row.deliveryStaffInfo.id === order.deliveryStaffId && row.restaurantInfo.id === order.restaurantId);\n const elder = elders.find(({ id }) => id === order.elderId);\n if (deliveryStaffRowIndex === -1) {\n const deliveryStaff = deliveryStaffs.find(({ id }) => id === order.deliveryStaffId);\n const restaurant = restaurants.find(({ id }) => id === order.restaurantId);\n const formatBirthday = (birthday) => {\n if (!birthday) return '';\n const [year, month, day] = birthday.split('-');\n const ROCYear = parseInt(year) - 1911;\n return `${ROCYear}/${month}/${day}`;\n };\n deliveryStaffRows.push({\n deliveryStaffInfo: {\n id: order.deliveryStaffId,\n name: deliveryStaff.name,\n birthday: formatBirthday(deliveryStaff.birthday),\n identificationCardId: deliveryStaff.identificationCardId || '',\n address: formatAddress(deliveryStaff.address) || '',\n },\n restaurantInfo: {\n id: order.restaurantId,\n name: restaurant.name,\n address: formatAddress(restaurant.address) || '',\n },\n elderInfos: [{\n id: order.elderId,\n name: elder.name,\n address: formatAddress(elder.address, { includeZipCode: false }),\n lunchCount: order.mealSlot === 'lunch' ? 1 : 0,\n dinnerCount: order.mealSlot === 'dinner' ? 1 : 0,\n }],\n subtotal: remoteArea.includes(elder.address.district) ? 150 : 125,\n });\n } else {\n const elderInfoIndex = deliveryStaffRows[deliveryStaffRowIndex].elderInfos.findIndex(({ id }) => id === order.elderId);\n if (elderInfoIndex === -1) {\n deliveryStaffRows[deliveryStaffRowIndex].elderInfos.push({\n id: order.elderId,\n name: elder.name,\n address: formatAddress(elder.address, { includeZipCode: false }),\n lunchCount: order.mealSlot === 'lunch' ? 1 : 0,\n dinnerCount: order.mealSlot === 'dinner' ? 1 : 0,\n });\n } else {\n if (order.mealSlot === 'lunch') {\n deliveryStaffRows[deliveryStaffRowIndex].elderInfos[elderInfoIndex].lunchCount += 1;\n } else {\n deliveryStaffRows[deliveryStaffRowIndex].elderInfos[elderInfoIndex].dinnerCount += 1;\n }\n }\n deliveryStaffRows[deliveryStaffRowIndex].subtotal += remoteArea.includes(elder.address.district) ? 150 : 125;\n }\n total += remoteArea.includes(elder.address.district) ? 150 : 125;\n });\n\n const fontName = 'Calibri';\n const range = 'A:AZ';\n const columnArray = buildColumnsArray(range);\n\n let rowIndex = 1;\n\n const columnWidth = [3.33, 13.33, 14.17, 10.83, 40, 6.83, 7.5, 9.33, 9.33, 9.33, 10.33];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n worksheet.mergeCells(`A${rowIndex}:K${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `${ROCYear}年度長照服務發展基金獎助-長期照顧十年計畫2.0-營養餐飲服務`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 16, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.getRow(rowIndex).height = 43.25;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:K${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `單位名稱:${clientName} ${ROCYear}年${month}月志工服務及交通費印領清冊 `;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.getRow(rowIndex).height = 37.25;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:A${rowIndex + 1}`);\n worksheet.getCell(`A${rowIndex}`).value = '序\\n號';\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`B${rowIndex}:B${rowIndex + 1}`);\n worksheet.getCell(`B${rowIndex}`).value = '志工姓名\\n出生年月日\\n身分證字號\\n地址';\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`B${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`C${rowIndex}:C${rowIndex + 1}`);\n worksheet.getCell(`C${rowIndex}`).value = '中央廚房\\n或\\n合作餐飲業者地址';\n worksheet.getCell(`C${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`C${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`C${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`D${rowIndex}:D${rowIndex + 1}`);\n worksheet.getCell(`D${rowIndex}`).value = '個案姓名';\n worksheet.getCell(`D${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`D${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`D${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`E${rowIndex}:E${rowIndex + 1}`);\n worksheet.getCell(`E${rowIndex}`).value = '個案地址';\n worksheet.getCell(`E${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`E${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`E${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`F${rowIndex}:G${rowIndex}`);\n worksheet.getCell(`F${rowIndex}`).value = '送餐天數';\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`F${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`F${rowIndex + 1}`).value = '中餐';\n worksheet.getCell(`F${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`F${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex + 1}`).value = '晚餐';\n worksheet.getCell(`G${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`G${rowIndex + 1}`).border = defaultBorder;\n\n worksheet.mergeCells(`H${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`H${rowIndex}`).value = '非偏鄉總計=(中餐+晚餐)x125\\n偏鄉總計=(中餐+晚餐)x150';\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`H${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`H${rowIndex + 1}`).value = '總計';\n worksheet.getCell(`H${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`H${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`I${rowIndex + 1}`).value = '自籌金額';\n worksheet.getCell(`I${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`I${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`I${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`J${rowIndex + 1}`).value = '補助金額';\n worksheet.getCell(`J${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`J${rowIndex + 1}`).border = defaultBorder;\n worksheet.mergeCells(`K${rowIndex}:K${rowIndex + 1}`);\n worksheet.getCell(`K${rowIndex}`).value = '簽章';\n worksheet.getCell(`K${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`K${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`K${rowIndex + 1}`).border = defaultBorder;\n\n worksheet.getRow(rowIndex).height = 36;\n worksheet.getRow(rowIndex + 1).height = 28;\n rowIndex += 2;\n\n deliveryStaffRows.forEach(({ deliveryStaffInfo, restaurantInfo, elderInfos, subtotal }, index) => {\n const rowCount = elderInfos.length;\n if (rowCount > 1) {\n worksheet.mergeCells(`A${rowIndex}:A${rowIndex + rowCount - 1}`);\n }\n worksheet.getCell(`A${rowIndex}`).value = index + 1;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n if (rowCount > 1) {\n worksheet.mergeCells(`B${rowIndex}:B${rowIndex + rowCount - 1}`);\n }\n worksheet.getCell(`B${rowIndex}`).value =\n `${deliveryStaffInfo.name}\\n${deliveryStaffInfo.birthday}\\n${deliveryStaffInfo.identificationCardId}\\n${deliveryStaffInfo.address}`;\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`B${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n if (rowCount > 1) {\n worksheet.mergeCells(`C${rowIndex}:C${rowIndex + rowCount - 1}`);\n }\n worksheet.getCell(`C${rowIndex}`).value = `${restaurantInfo.name}\\n${restaurantInfo.address}`;\n worksheet.getCell(`C${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n worksheet.getCell(`C${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`C${rowIndex}`).border = defaultBorder;\n elderInfos.sort(sortBy('name')).forEach((elderInfo, index) => {\n worksheet.getCell(`D${rowIndex + index}`).value = elderInfo.name;\n worksheet.getCell(`D${rowIndex + index}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`D${rowIndex + index}`).font = { size: 12, name: fontName };\n worksheet.getCell(`D${rowIndex + index}`).border = defaultBorder;\n worksheet.getCell(`E${rowIndex + index}`).value = elderInfo.address;\n worksheet.getCell(`E${rowIndex + index}`).alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n worksheet.getCell(`E${rowIndex + index}`).font = { size: 12, name: fontName };\n worksheet.getCell(`E${rowIndex + index}`).border = defaultBorder;\n worksheet.getCell(`F${rowIndex + index}`).value = elderInfo.lunchCount;\n worksheet.getCell(`F${rowIndex + index}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`F${rowIndex + index}`).font = { size: 12, name: fontName };\n worksheet.getCell(`F${rowIndex + index}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex + index}`).value = elderInfo.dinnerCount;\n worksheet.getCell(`G${rowIndex + index}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`G${rowIndex + index}`).font = { size: 12, name: fontName };\n worksheet.getCell(`G${rowIndex + index}`).border = defaultBorder;\n });\n if (rowCount > 1) {\n worksheet.mergeCells(`H${rowIndex}:H${rowIndex + rowCount - 1}`);\n }\n worksheet.getCell(`H${rowIndex}`).value = subtotal;\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`H${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n if (rowCount > 1) {\n worksheet.mergeCells(`I${rowIndex}:I${rowIndex + rowCount - 1}`);\n }\n worksheet.getCell(`I${rowIndex}`).value = 0;\n worksheet.getCell(`I${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`I${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`I${rowIndex}`).border = defaultBorder;\n if (rowCount > 1) {\n worksheet.mergeCells(`J${rowIndex}:J${rowIndex + rowCount - 1}`);\n }\n worksheet.getCell(`J${rowIndex}`).value = subtotal;\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`J${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`J${rowIndex}`).border = defaultBorder;\n if (rowCount > 1) {\n worksheet.mergeCells(`K${rowIndex}:K${rowIndex + rowCount - 1}`);\n }\n worksheet.getCell(`K${rowIndex}`).border = defaultBorder;\n rowIndex += rowCount;\n });\n\n worksheet.mergeCells(`A${rowIndex}:G${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = '合計';\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.getCell(`H${rowIndex}`).value = total;\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.getCell(`I${rowIndex}`).value = 0;\n worksheet.getCell(`I${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`I${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`I${rowIndex}`).border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.getCell(`J${rowIndex}`).value = total;\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`J${rowIndex}`).border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.getCell(`K${rowIndex}`).border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n rowIndex += 2;\n\n worksheet.mergeCells(`H${rowIndex}:K${rowIndex}`);\n worksheet.getCell(`H${rowIndex}`).value = '製表日期:';\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 12, name: fontName };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:K${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = '承辦人:       業務主管:       會計:       負責人:';\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 14, name: fontName };\n\n return worksheet;\n}\n\n// function getWorksheetElder(worksheet, elders = [], orders = [], deliveryStaffs, restaurants, selectedMonth, clientName) {\n// const fontName = 'Calibri';\n// const range = 'A:AZ';\n// const columnArray = buildColumnsArray(range);\n\n// let rowIndex = 1;\n\n// const columnWidth = [10.33, 14.33, 12.83, 24.83, 8.33, 21.83, 14.33, 45.67, 11.33, 11.33, 8.33, 14.33,\n// 8.33, 14.33, 11.33, 14.33, 14.33, 14.33, 14.33, 14.33, 14.33, 14.33, 14.33,\n// ];\n// columnWidth.forEach((_, index) => {\n// worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n// });\n\n// const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n// worksheet.mergeCells(`A${rowIndex}:W${rowIndex}`);\n// worksheet.getCell(`A${rowIndex}`).value = `照顧組合服務費用項目清冊`;\n// worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n// worksheet.getCell(`A${rowIndex}`).font = { size: 18, name: fontName };\n// rowIndex += 1;\n\n// worksheet.getCell(`A${rowIndex}`).value = `案號:`;\n// worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n// worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n// rowIndex += 1;\n\n// worksheet.getCell(`A${rowIndex}`).value = `服務單位:${clientName}`;\n// worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n// worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n// rowIndex += 1;\n\n// worksheet.getCell(`A${rowIndex}`).value = `版號:`;\n// worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n// worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n// worksheet.getCell(`W${rowIndex}`).value = `產製時間:2024/11/01 09:13`; // TODO\n// worksheet.getCell(`W${rowIndex}`).alignment = { horizontal: 'right', vertical: 'middle' };\n// worksheet.getCell(`W${rowIndex}`).font = { size: 12, name: fontName };\n// rowIndex += 1;\n\n// ['序號', '身分證號', '個案姓名', '採用計畫', 'CMS\\n等級', '福利身分別',\n// '服務項目\\n類別', '服務日期', '給(支)付\\n價格', '原民區或離島支付價格', '次數',\n// '申報費用', '部分負擔比率', '部分負擔\\n費用', '補助比率', '申請(補助)費用',\n// '原民區或離島申請(補助)費用', '實際補助\\n金額', '服務當下\\n居住縣市', '目前居住縣市',\n// '目前居住行政區', '照管專員', '服務人員'].forEach((header, index) => {\n// worksheet.getCell(`${columnArray[index]}${rowIndex}`).value = header;\n// worksheet.getCell(`${columnArray[index]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n// worksheet.getCell(`${columnArray[index]}${rowIndex}`).font = { size: 12, name: fontName };\n// worksheet.getCell(`${columnArray[index]}${rowIndex}`).border = defaultBorder;\n// });\n\n// return worksheet;\n// }\n","import JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport { sortBy } from 'utilities/sorting';\nimport { formatAddress } from 'utilities/format';\nimport { request } from 'utilities/graph';\nimport { getClientMonthlyStatementsByClientIdByMonth } from 'graphql/queries';\nimport { buildColumnsArray, convertDateToZhFormat, getROCYear, getMonthDates } from './helpers';\n\nconst COUNTY = '臺北市';\n\nconst typeMapping = {\n '低收': 1,\n '中低收': 2,\n '中低': 2,\n '近貧': 3,\n};\n\nconst mealUnitPrice = 100;\nconst deliveryStaffFeePerTrip = 300;\n\nexport default async function writeTaipei({\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n selectedMonth: selectedYearMonth = 'YYYY-MM',\n clientId,\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n // const elders = allElders; // test\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n\n const [selectedYear, selectedMonth] = selectedYearMonth.split('-');\n const ROCYear = parseInt(selectedYear) - 1911;\n\n const months = Array(12).fill('').map((_, i) => {\n const month = i + 1 < 10 ? '0' + (i + 1) : i + 1;\n return {\n monthLabel: `${i + 1}月`,\n yearMonth: `${selectedYear}-${month}`,\n };\n });\n const clientStatements = [].concat(...await Promise.all(months.map(async ({ yearMonth }) => {\n const { data: { getClientMonthlyStatementsByClientIdByMonth: { items } } } = await request(getClientMonthlyStatementsByClientIdByMonth, {\n clientId,\n month: {\n eq: yearMonth,\n },\n });\n return items;\n })));\n\n const statementsFilterdByCounty = clientStatements.filter(({ county }) => county === COUNTY);\n // const statementsFilterdByCounty = clientStatements; // test\n\n const zip = new JSZip();\n\n const workbookElder = new ExcelJS.Workbook();\n const worksheetElder = workbookElder.addWorksheet(`${ROCYear}.${selectedMonth}`);\n getWorksheetElder(worksheetElder, elders, orders, selectedYearMonth, clientName);\n try {\n if (workbookElder && workbookElder.worksheets && workbookElder.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookElder.xlsx.writeBuffer();\n zip.file(`${selectedYearMonth}膳費請領清冊.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n if (['03', '06', '09', '12'].includes(selectedMonth)) {\n const workbookElder = new ExcelJS.Workbook();\n const month = parseInt(selectedMonth);\n const worksheetElder = workbookElder.addWorksheet(`${month - 2}-${month}月`);\n getWorksheetElderBySeason(worksheetElder, elders, orders, statementsFilterdByCounty, selectedYearMonth, clientName);\n try {\n if (workbookElder && workbookElder.worksheets && workbookElder.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookElder.xlsx.writeBuffer();\n zip.file(`${selectedYearMonth}膳費請領清冊(季).xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n const workbookElder2 = new ExcelJS.Workbook();\n const worksheetElder2 = workbookElder2.addWorksheet(`${selectedMonth}月`);\n getWorksheetElder2(worksheetElder2, elders, orders, selectedYearMonth, clientName);\n try {\n if (workbookElder2 && workbookElder2.worksheets && workbookElder2.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookElder2.xlsx.writeBuffer();\n zip.file(`${selectedYearMonth}逐月明細表.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const workbookMonthly = new ExcelJS.Workbook();\n const worksheetMonthly = workbookMonthly.addWorksheet('月報表');\n getWorksheetYear(worksheetMonthly, selectedYearMonth, clientName);\n months.forEach(({ monthLabel, yearMonth }) => {\n const worksheet = workbookMonthly.addWorksheet(monthLabel);\n const clientStatement = statementsFilterdByCounty.find(({ month }) => month === yearMonth) || {};\n getWorksheetElderByMonth(worksheet, clientStatement, clientName, yearMonth, monthLabel);\n });\n try {\n if (workbookMonthly && workbookMonthly.worksheets && workbookMonthly.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookMonthly.xlsx.writeBuffer();\n zip.file(`${selectedYearMonth}月報表.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const workbookDeliveryStaff = new ExcelJS.Workbook();\n const worksheet = workbookDeliveryStaff.addWorksheet(selectedMonth);\n getWorksheetDeliveryStaff(worksheet, deliveryStaffs, orders, clientName, selectedYearMonth, `${selectedMonth}月`);\n // months.forEach(({ monthLabel, yearMonth }, index) => {\n // getWorksheetDeliveryStaff(worksheet, deliveryStaffs, orders, clientName, yearMonth, monthLabel);\n // });\n try {\n if (workbookDeliveryStaff && workbookDeliveryStaff.worksheets && workbookDeliveryStaff.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookDeliveryStaff.xlsx.writeBuffer();\n zip.file(`${selectedYearMonth}送餐人員誤餐交通費請領清冊.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedYearMonth}核銷報表.zip`, zipContent);\n }\n}\n\nfunction getWorksheetElder(worksheet, elders = [], orders = [], selectedYearMonth, clientName) {\n const elderRows = [];\n elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .map(({\n id,\n name,\n identificationCardId,\n birthday,\n disadvantagedTypesSlot,\n }) => {\n const elderOrders = orders\n .filter(({ elderId }) => elderId === id);\n\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n if (type === '一般') {\n return;\n }\n const filteredOrders = elderOrders.filter(({ date }) => date >= start && date < end);\n if (filteredOrders.length === 0) {\n return;\n }\n const lunchs = [];\n const dinners = [];\n filteredOrders.sort(sortBy('deliveryBy')).forEach(({ mealSlot, date }) => {\n const day = date.split('-')[2];\n if (mealSlot === 'lunch') {\n lunchs.push(day);\n } else {\n dinners.push(day);\n }\n });\n const serviceDates = '午:\\n' + lunchs.join(',') + '\\n晚:\\n' + dinners.join(',');\n elderRows.push({\n 姓名: name,\n 身分證字號: identificationCardId,\n 出生年月日: convertDateToZhFormat(birthday),\n 身份別: typeMapping[type],\n 供餐次數: filteredOrders.length,\n 服務日期: serviceDates,\n });\n });\n }\n });\n const fontName = 'Calibri';\n const range = 'A:AZ';\n const columnArray = buildColumnsArray(range);\n\n const [year, month] = selectedYearMonth.split('-');\n const ROCYear = parseInt(year) - 1911;\n\n let rowIndex = 1;\n\n const columnWidth = [5.83, 17.83, 22.67, 14.67, 76, 10, 13, 7, 13, 38, 22.33];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n worksheet.mergeCells(`A${rowIndex}:K${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `${clientName}`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 18, name: fontName, underline: true };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:K${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `「臺北市政府社會局 ${ROCYear} 年度補助辦理失能者營養餐飲服務計畫」`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 18, name: fontName };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:I${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = ` ${ROCYear} 年 ${month} 月份請領清冊`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 18, name: fontName };\n worksheet.mergeCells(`J${rowIndex}:K${rowIndex}`);\n worksheet.getCell(`J${rowIndex}`).value = `單 位:新台幣元`;\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'right', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex}`).font = { size: 18, name: fontName };\n rowIndex += 1;\n\n ['編號', '姓名', '身分證\\n統一編號', '出生\\n年月日', '服務日期', '身分別\\n低收:1\\n中低:2\\n近貧:3',\n '供餐次數', '單價', '補助金額', '蓋章', '備註'].forEach((header, index) => {\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).border = defaultBorder;\n worksheet.getRow(rowIndex).height = 84.75;\n });\n rowIndex += 1;\n const elderRowStart = rowIndex;\n elderRows.forEach((elderRow, index) => {\n worksheet.getCell(`A${rowIndex}`).value = index + 1;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`B${rowIndex}`).value = elderRow['姓名'];\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`C${rowIndex}`).value = elderRow['身分證字號'];\n worksheet.getCell(`C${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`C${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`C${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`D${rowIndex}`).value = elderRow['出生年月日'];\n worksheet.getCell(`D${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`D${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`D${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`E${rowIndex}`).value = elderRow['服務日期'];\n worksheet.getCell(`E${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n worksheet.getCell(`E${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`E${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`F${rowIndex}`).value = elderRow['身份別'];\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`F${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex}`).value = elderRow['供餐次數'];\n worksheet.getCell(`G${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`G${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`H${rowIndex}`).value = mealUnitPrice;\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`I${rowIndex}`).value = { formula: `=G${rowIndex}*H${rowIndex}` };\n worksheet.getCell(`I${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`I${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`I${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`J${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`K${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`K${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`K${rowIndex}`).border = defaultBorder;\n worksheet.getRow(rowIndex).height = 84.75;\n rowIndex += 1;\n });\n const elderRowEnd = rowIndex - 1;\n\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`B${rowIndex}:F${rowIndex}`);\n worksheet.getCell(`B${rowIndex}`).value = '合 計';\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 20, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex}`).value = { formula: `=SUM(G${elderRowStart}:G${elderRowEnd})` };\n worksheet.getCell(`G${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`G${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`I${rowIndex}`).value = { formula: `=SUM(I${elderRowStart}:I${elderRowEnd})` };\n worksheet.getCell(`I${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`I${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`I${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`J${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`K${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`K${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`K${rowIndex}`).border = defaultBorder;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:K${rowIndex}`);\n // eslint-disable-next-line max-len\n worksheet.getCell(`A${rowIndex}`).value = `填表人: 主辦會計: 單位主管:`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`K${rowIndex}`).border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n rowIndex += 3;\n\n worksheet.mergeCells(`A${rowIndex}:H${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `註:依支出憑證處理要點,如以指印或其他符號代替簽名者,經2人以上之簽名證明,亦與簽名生同等之效力`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n\n return worksheet;\n}\n\nfunction getWorksheetElderBySeason(worksheet, elders = [], orders = [], clientStatements = [], selectedYearMonth, clientName) {\n const elderRows = [];\n\n const fontName = 'Calibri';\n const range = 'A:AZ';\n const columnArray = buildColumnsArray(range);\n\n const [year, monthString] = selectedYearMonth.split('-');\n const ROCYear = parseInt(year) - 1911;\n const month = parseInt(monthString);\n\n [0, 1, 2].forEach((offset) => {\n const monthString = month - offset < 10 ? `0${month - offset}` : `${month - offset}`;\n const yearMonth = `${year}-${monthString}`;\n const clientStatement = clientStatements.find(({ month }) => month === yearMonth);\n if (clientStatement) {\n const { elderStatistics } = clientStatement;\n elderStatistics.forEach((elderStatistic) => {\n const {\n name, identificationCardId, birthday, disadvantagedTypes,\n } = elderStatistic;\n if (!name) {\n return;\n }\n const lunchDates = elderStatistic.lunchDates || [];\n const dinnerDates = elderStatistic.dinnerDates || [];\n if (lunchDates.length === 0 && dinnerDates.length === 0) {\n return;\n }\n const existingElderRow = elderRows.find(({ identificationCardId, disadvantagedTypes }) => (\n identificationCardId === elderStatistic.identificationCardId &&\n disadvantagedTypes === elderStatistic.disadvantagedTypes\n ));\n if (!existingElderRow) {\n elderRows.push({\n name,\n identificationCardId,\n birthday: birthday ? convertDateToZhFormat(birthday) : '',\n lunchDatesList: {\n [monthString]: lunchDates,\n },\n dinnerDatesList: {\n [monthString]: dinnerDates,\n },\n disadvantagedTypes,\n });\n } else {\n if (name) {\n existingElderRow.name = name || existingElderRow.name;\n }\n if (birthday) {\n existingElderRow.birthday = birthday ? convertDateToZhFormat(birthday) : '' || existingElderRow.birthday;\n }\n existingElderRow.lunchDatesList[monthString] = lunchDates;\n existingElderRow.dinnerDatesList[monthString] = dinnerDates;\n }\n });\n }\n });\n let rowIndex = 1;\n\n const columnWidth = [5.83, 17.83, 22.67, 14.67, 76, 10, 13, 13, 13, 7, 13, 38, 22.33];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n let cell;\n worksheet.mergeCells(`A${rowIndex}:N${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = `${clientName}`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 18, name: fontName, underline: true };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:N${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = `「臺北市政府社會局 ${ROCYear} 年度補助辦理失能者營養餐飲服務計畫」`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 18, name: fontName };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:L${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value =\n ` ${ROCYear} 年 ${month - 2}-${month} 月份請領清冊`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 18, name: fontName };\n worksheet.mergeCells(`M${rowIndex}:N${rowIndex}`);\n cell = worksheet.getCell(`M${rowIndex}`);\n cell.value = `單 位:新台幣元`;\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\n cell.font = { size: 18, name: fontName };\n rowIndex += 1;\n\n ['編號', '姓名', '身分證\\n統一編號', '出生\\n年月日', '服務日期', '身分別\\n低收:1\\n中低:2\\n近貧:3',\n `${month - 2}月\\n供餐次數`, `${month - 1}月\\n供餐次數`, `${month}月\\n供餐次數`,\n '供餐次數', '單價', '補助金額', '蓋章', '備註'].forEach((header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n worksheet.getRow(rowIndex).height = 84.75;\n });\n rowIndex += 1;\n const elderRowStart = rowIndex;\n elderRows.forEach((elderRow, index) => {\n let serviceDates = '';\n const mealCount = [0, 0, 0];\n [2, 1, 0].forEach((offset, index) => {\n const monthString = month - offset < 10 ? `0${month - offset}` : `${month - offset}`;\n serviceDates += `${monthString}月午:`;\n serviceDates += (elderRow.lunchDatesList[monthString] || []).join(',');\n serviceDates += '\\n';\n serviceDates += `${monthString}月晚:`;\n serviceDates += (elderRow.dinnerDatesList[monthString] || []).join(',');\n serviceDates += '\\n';\n mealCount[index] = (elderRow.lunchDatesList[monthString] || []).length + (elderRow.dinnerDatesList[monthString] || []).length;\n });\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = index + 1;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`B${rowIndex}`);\n cell.value = elderRow.name;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`C${rowIndex}`);\n cell.value = elderRow.identificationCardId;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`D${rowIndex}`);\n cell.value = elderRow.birthday;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`E${rowIndex}`);\n cell.value = serviceDates;\n cell.alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`F${rowIndex}`);\n cell.value = typeMapping[elderRow.disadvantagedTypes] || '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`G${rowIndex}`);\n cell.value = mealCount[0];\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell.fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'F9CE9C' }, bgColor: { argb: 'F9CE9C' } };\n cell = worksheet.getCell(`H${rowIndex}`);\n cell.value = mealCount[1];\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell.fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'F9CE9C' }, bgColor: { argb: 'F9CE9C' } };\n cell = worksheet.getCell(`I${rowIndex}`);\n cell.value = mealCount[2];\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell.fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'F9CE9C' }, bgColor: { argb: 'F9CE9C' } };\n cell = worksheet.getCell(`J${rowIndex}`);\n cell.value = { formula: `=SUM(G${rowIndex}:I${rowIndex})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell.fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'CBFFCC' }, bgColor: { argb: 'CBFFCC' } };\n cell = worksheet.getCell(`K${rowIndex}`);\n cell.value = mealUnitPrice;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell.fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'CBFFCC' }, bgColor: { argb: 'CBFFCC' } };\n cell = worksheet.getCell(`L${rowIndex}`);\n cell.value = { formula: `=J${rowIndex}*K${rowIndex}` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell.fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'CBFFCC' }, bgColor: { argb: 'CBFFCC' } };\n cell = worksheet.getCell(`M${rowIndex}`);\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`N${rowIndex}`);\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n worksheet.getRow(rowIndex).height = 84.75;\n rowIndex += 1;\n });\n const elderRowEnd = rowIndex - 1;\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`B${rowIndex}:F${rowIndex}`);\n cell = worksheet.getCell(`B${rowIndex}`);\n cell.value = '合 計';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 20, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`G${rowIndex}`);\n cell.value = { formula: `=SUM(G${elderRowStart}:G${elderRowEnd})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`H${rowIndex}`);\n cell.value = { formula: `=SUM(H${elderRowStart}:H${elderRowEnd})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`I${rowIndex}`);\n cell.value = { formula: `=SUM(I${elderRowStart}:I${elderRowEnd})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`J${rowIndex}`);\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`K${rowIndex}`);\n cell.value = { formula: `=SUM(K${elderRowStart}:K${elderRowEnd})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`L${rowIndex}`);\n cell.value = { formula: `=SUM(L${elderRowStart}:L${elderRowEnd})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`M${rowIndex}`);\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`N${rowIndex}`);\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:N${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n // eslint-disable-next-line max-len\n cell.value = `填表人: 主辦會計: 單位主管:`;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n worksheet.getCell(`K${rowIndex}`).border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n rowIndex += 3;\n\n worksheet.mergeCells(`A${rowIndex}:H${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = `註:依支出憑證處理要點,如以指印或其他符號代替簽名者,經2人以上之簽名證明,亦與簽名生同等之效力`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n\n return worksheet;\n}\n\nfunction getWorksheetElder2(worksheet, elders = [], orders = [], selectedYearMonth) {\n const monthDates = getMonthDates(selectedYearMonth, 'dddd');\n const elderRowsByType = [[], []]; // 補助戶, 一般戶\n elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .map(({\n id,\n name,\n disadvantagedTypesSlot,\n }) => {\n const elderOrders = orders\n .filter(({ elderId }) => elderId === id);\n\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n const filteredOrders = elderOrders.filter(({ date }) => date >= start && date < end);\n if (filteredOrders.length === 0) {\n return;\n }\n const lunchs = [];\n const dinners = [];\n filteredOrders.sort(sortBy('deliveryBy')).forEach(({ mealSlot, date }) => {\n const day = date.split('-')[2];\n if (mealSlot === 'lunch') {\n lunchs.push(parseInt(day));\n } else {\n dinners.push(parseInt(day));\n }\n });\n if (type === '一般') {\n elderRowsByType[1].push({\n name,\n disadvantagedType: type,\n lunchs,\n dinners,\n });\n } else {\n elderRowsByType[0].push({\n name,\n disadvantagedType: type,\n lunchs,\n dinners,\n });\n }\n });\n }\n });\n const fontName = 'Calibri';\n const range = 'A:AZ';\n const columnArray = buildColumnsArray(range);\n\n const [year, month] = selectedYearMonth.split('-');\n const ROCYear = parseInt(year) - 1911;\n\n let rowIndex = 1;\n\n worksheet.getColumn('B').width = 20;\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n let cell;\n worksheet.mergeCells(`A${rowIndex}:${columnArray[monthDates.length + 2]}${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value =\n `${ROCYear}年${month}月份營養餐飲服務逐月明細表(補助個案)\n說明:請在用餐日期內輸入長者當日用餐數量,若提供1餐請填1、若提供2餐請填2。`;\n cell.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n cell.font = { size: 24, name: fontName };\n worksheet.getRow(rowIndex).height = 60;\n rowIndex += 1;\n\n elderRowsByType.forEach((elderRows, elderTypeIndex) => {\n worksheet.mergeCells(`A${rowIndex}:${columnArray[monthDates.length + 2]}${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = elderTypeIndex === 0 ? '補助戶' : '一般戶';\n cell.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:B${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '日期';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n worksheet.mergeCells(`A${rowIndex + 1}:B${rowIndex + 1}`);\n cell = worksheet.getCell(`A${rowIndex + 1}`);\n cell.value = '星期';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach(({ label }, index) => {\n cell = worksheet.getCell(`${columnArray[index + 2]}${rowIndex}`);\n cell.value = index + 1;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[index + 2]}${rowIndex + 1}`);\n cell.value = label.replace('星期', '週');\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n });\n worksheet.mergeCells(`${columnArray[monthDates.length + 2]}${rowIndex}:${columnArray[monthDates.length + 2]}${rowIndex + 1}`);\n cell = worksheet.getCell(`${columnArray[monthDates.length + 2]}${rowIndex}`);\n cell.value = '合計';\n cell.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 2;\n let totalMealCount = 0;\n const elderRowStart = rowIndex;\n elderRows.forEach((elderRow) => {\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '姓名';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`B${rowIndex}`);\n cell.value = elderRow.name;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach((_, index) => {\n const lunchCount = elderRow.lunchs.includes(index + 1) ? 1 : 0;\n const dinnerCount = elderRow.dinners.includes(index + 1) ? 1 : 0;\n totalMealCount += lunchCount + dinnerCount;\n cell = worksheet.getCell(`${columnArray[index + 2]}${rowIndex}`);\n cell.value = lunchCount + dinnerCount || '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n });\n cell = worksheet.getCell(`${columnArray[monthDates.length + 2]}${rowIndex}`);\n cell.value = { formula: `=SUM(C${rowIndex}:${columnArray[monthDates.length + 1]}${rowIndex})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n });\n\n const elderRowEnd = rowIndex - 1;\n\n worksheet.mergeCells(`A${rowIndex}:B${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '小計';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach((_, index) => {\n cell = worksheet.getCell(`${columnArray[index + 2]}${rowIndex}`);\n cell.value = { formula: `=SUM(${columnArray[index + 2]}${elderRowStart}:${columnArray[index + 2]}${elderRowEnd})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n });\n cell = worksheet.getCell(`${columnArray[monthDates.length + 2]}${rowIndex}`);\n cell.value = { formula: `=SUM(${columnArray[monthDates.length + 2]}${elderRowStart}:${columnArray[monthDates.length + 2]}${elderRowEnd})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 24, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:${columnArray[monthDates.length + 2]}${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n if (elderTypeIndex === 0) {\n cell.value = `補助戶:${totalMealCount}(份)*${mealUnitPrice}(元)=$${totalMealCount * mealUnitPrice}`;\n } else {\n cell.value = `一般戶:${totalMealCount}(份)*${mealUnitPrice}(元)=$${totalMealCount * mealUnitPrice}`;\n }\n cell.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n cell.font = { size: 24, name: fontName };\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n rowIndex += 3;\n });\n\n return worksheet;\n}\n\nfunction getWorksheetYear(worksheet, selectedYearMonth, clientName) {\n const fontName = 'Calibri';\n const range = 'A:AZ';\n const columnArray = buildColumnsArray(range);\n const ROCYear = getROCYear(selectedYearMonth);\n\n let rowIndex = 2;\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n worksheet.mergeCells(`A${rowIndex}:AO${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `${ROCYear}年補助辦理失能者營養餐飲服務月報表`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 16, name: fontName, bold: true };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:Z${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `單位名稱:${clientName}`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 14, name: fontName };\n rowIndex += 2;\n\n worksheet.mergeCells(`A${rowIndex}:A${rowIndex + 2}`);\n worksheet.getCell(`A${rowIndex}`).value = `月份`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`B${rowIndex}:B${rowIndex + 2}`);\n worksheet.getCell(`B${rowIndex}`).value = `項目`;\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n ['低收入戶', '中低收入戶', '近貧', '一般戶'].forEach((header, index) => {\n const offset = 2 + index * 6;\n worksheet.mergeCells(`${columnArray[offset]}${rowIndex}:${columnArray[offset + 5]}${rowIndex}`);\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).font = { size: 12, name: fontName, bold: true };\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).border = defaultBorder;\n ['輕度失能', '中度失能', '重度失能'].forEach((header, index2) => {\n const offset2 = offset + index2 * 2;\n worksheet.mergeCells(`${columnArray[offset2]}${rowIndex + 1}:${columnArray[offset2 + 1]}${rowIndex + 1}`);\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 1}`).value = header;\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 2}`).value = '男';\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 2}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 2}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[offset2]}${rowIndex + 2}`).border = defaultBorder;\n worksheet.getCell(`${columnArray[offset2 + 1]}${rowIndex + 2}`).value = '女';\n worksheet.getCell(`${columnArray[offset2 + 1]}${rowIndex + 2}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset2 + 1]}${rowIndex + 2}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[offset2 + 1]}${rowIndex + 2}`).border = defaultBorder;\n });\n });\n ['受補助戶\\n(低收+中低+近貧)', '一般戶', '總計', '獨居\\n(本欄請獨立計算)', '原住民\\n(本欄請獨立計算)'].forEach((header, index) => {\n const offset = index * 3 + 26;\n worksheet.mergeCells(`${columnArray[offset]}${rowIndex}:${columnArray[offset + 2]}${rowIndex}`);\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).font = { size: 12, name: fontName, bold: true };\n worksheet.getCell(`${columnArray[offset]}${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`${columnArray[offset]}${rowIndex + 1}:${columnArray[offset + 2]}${rowIndex + 1}`);\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 1}`).value = '小計';\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 2}`).value = '男';\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 2}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 2}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[offset]}${rowIndex + 2}`).border = defaultBorder;\n worksheet.getCell(`${columnArray[offset + 1]}${rowIndex + 2}`).value = '女';\n worksheet.getCell(`${columnArray[offset + 1]}${rowIndex + 2}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset + 1]}${rowIndex + 2}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[offset + 1]}${rowIndex + 2}`).border = defaultBorder;\n worksheet.getCell(`${columnArray[offset + 2]}${rowIndex + 2}`).value = '合計';\n worksheet.getCell(`${columnArray[offset + 2]}${rowIndex + 2}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[offset + 2]}${rowIndex + 2}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[offset + 2]}${rowIndex + 2}`).border = defaultBorder;\n });\n worksheet.getRow(rowIndex).height = 38;\n rowIndex += 3;\n\n Array(12).fill('').map((_, i) => `${i + 1}月`).forEach((month) => {\n worksheet.mergeCells(`A${rowIndex}:A${rowIndex + 1}`);\n worksheet.getCell(`A${rowIndex}`).value = month;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`B${rowIndex}`).value = '人數';\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`B${rowIndex + 1}`).value = '人次';\n worksheet.getCell(`B${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex + 1}`).border = defaultBorder;\n [\n [`=SUM('1月'!AN:AN)`, `=SUM('1月'!BP:BP)`],\n [`=SUM('1月'!AO:AO)`, `=SUM('1月'!BQ:BQ)`],\n [`=SUM('1月'!AP:AP)`, `=SUM('1月'!BR:BR)`],\n [`=SUM('1月'!AQ:AQ)`, `=SUM('1月'!BS:BS)`],\n [`=SUM('1月'!AR:AR)`, `=SUM('1月'!BT:BT)`],\n [`=SUM('1月'!AS:AS)`, `=SUM('1月'!BU:BU)`],\n [`=SUM('1月'!AT:AT)`, `=SUM('1月'!BV:BV)`],\n [`=SUM('1月'!AU:AU)`, `=SUM('1月'!BW:BW)`],\n [`=SUM('1月'!AV:AV)`, `=SUM('1月'!BX:BX)`],\n [`=SUM('1月'!AW:AW)`, `=SUM('1月'!BY:BY)`],\n [`=SUM('1月'!AX:AX)`, `=SUM('1月'!BZ:BZ)`],\n [`=SUM('1月'!AY:AY)`, `=SUM('1月'!CA:CA)`],\n [`=SUM('1月'!AZ:AZ)`, `=SUM('1月'!CB:CB)`],\n [`=SUM('1月'!BA:BA)`, `=SUM('1月'!CC:CC)`],\n [`=SUM('1月'!BB:BB)`, `=SUM('1月'!CD:CD)`],\n [`=SUM('1月'!BC:BC)`, `=SUM('1月'!CE:CE)`],\n [`=SUM('1月'!BD:BD)`, `=SUM('1月'!CF:CF)`],\n [`=SUM('1月'!BE:BE)`, `=SUM('1月'!CG:CG)`],\n [`=SUM('1月'!BF:BF)`, `=SUM('1月'!CH:CH)`],\n [`=SUM('1月'!BG:BG)`, `=SUM('1月'!CI:CI)`],\n [`=SUM('1月'!BH:BH)`, `=SUM('1月'!CJ:CJ)`],\n [`=SUM('1月'!BI:BI)`, `=SUM('1月'!CK:CK)`],\n [`=SUM('1月'!BJ:BJ)`, `=SUM('1月'!CL:CL)`],\n [`=SUM('1月'!BK:BK)`, `=SUM('1月'!CM:CM)`],\n [`=C8+E8+G8+I8+K8+M8+O8+Q8+S8`, `=C9+E9+G9+I9+K9+M9+O9+Q9+S9`],\n [`=D8+F8+H8+J8+L8+N8+P8+R8+T8`, `=D9+F9+H9+J9+L9+N9+P9+R9+T9`],\n [`=SUM(C8:T8)`, `=SUM(C9:T9)`],\n [`=U8+W8+Y8`, `=U9+W9+Y9`],\n [`=V8+X8+Z8`, `=V9+X9+Z9`],\n [`=SUM(U8:Z8)`, `=SUM(U9:Z9)`],\n [`=AA8+AD8`, `=AA9+AD9`],\n [`=AB8+AE8`, `=AB9+AE9`],\n [`=SUM(C8:Z8)`, `=SUM(C9:Z9)`],\n [`=SUM('1月'!BL:BL)`, `=SUM('1月'!CN:CN)`],\n [`=SUM('1月'!BM:BM)`, `=SUM('1月'!CO:CO)`],\n [`=SUM(AJ8:AK8)`, `=SUM(AJ9:AK9)`],\n [`=SUM('1月'!BN:BN)`, `=SUM('1月'!BO:BO)`],\n [`=SUM('1月'!BO:BO)`, `=SUM('1月'!BQ:BQ)`],\n [`=SUM(AM8:AN8)`, `=SUM(AM9:AN9)`],\n ].forEach((value, index) => {\n const columnIndex = index + 2;\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex}`).value = { formula: value[0].replace(/8/g, rowIndex).replace('1月', month) };\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex + 1}`).value = { formula: value[1].replace(/9/g, rowIndex + 1).replace('1月', month) };\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`${columnArray[columnIndex]}${rowIndex + 1}`).fill =\n { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFF00' }, bgColor: { argb: 'FFFF00' } };\n });\n rowIndex += 2;\n });\n const lastRowBorder = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.mergeCells(`A${rowIndex}:A${rowIndex + 1}`);\n worksheet.getCell(`A${rowIndex}`).value = '合計';\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = lastRowBorder;\n worksheet.getCell(`B${rowIndex}`).value = '人數';\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = lastRowBorder;\n worksheet.getCell(`B${rowIndex + 1}`).value = '人次';\n worksheet.getCell(`B${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex + 1}`).border = lastRowBorder;\n Array(39).fill('').map((_, i) => i + 2).forEach((columnIndex) => {\n const column = columnArray[columnIndex];\n worksheet.getCell(`${column}${rowIndex}`).value = { formula: '=C8+C10+C12+C14+C16+C18+C20+C22+C24+C26+C28+C30'.replace(/C/g, column) };\n worksheet.getCell(`${column}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${column}${rowIndex}`).border = lastRowBorder;\n worksheet.getCell(`${column}${rowIndex + 1}`).value = { formula: '=C9+C11+C13+C15+C17+C19+C21+C23+C25+C27+C29+C31'.replace(/C/g, column) };\n worksheet.getCell(`${column}${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${column}${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${column}${rowIndex + 1}`).border = lastRowBorder;\n });\n\n return worksheet;\n}\n\nfunction getWorksheetElderByMonth(worksheet, clientStatement, clientName, yearMonth, monthLabel) {\n const fontName = 'Calibri';\n const range = 'A:CZ';\n const columnArray = buildColumnsArray(range);\n const ROCYear = getROCYear(yearMonth);\n\n let rowIndex = 1;\n\n worksheet.getColumn('C').width = 13;\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n worksheet.mergeCells(`B${rowIndex}:U${rowIndex}`);\n worksheet.getCell(`B${rowIndex}`).value = `${clientName} ${ROCYear} 年度 ${monthLabel}北市社會局失能者營養餐飲服務計畫名冊`;\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 16, name: fontName, bold: true };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:U${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `備註:\n1.性別、失能程度、福利身份別、獨居與否及原住民身分請以「1」註記(以上所有類別均須依照個案情況填寫,不可整欄空白),以利自動加總人數。\n2.用餐數量為當月餐次加總。(該月無用餐或暫停送餐之長者不可填寫於名冊上) \n3.該月新增個案請於備註欄備註開始送餐日。 `;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getRow(rowIndex).height = 66;\n rowIndex += 1;\n\n ['序號', '姓名', '身份證\\n統一編號', '出生年\\n(民國)', '聯絡電話'].forEach((header, index) => {\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).border = defaultBorder;\n });\n worksheet.mergeCells(`F${rowIndex}:G${rowIndex}`);\n worksheet.getCell(`F${rowIndex}`).value = '性別';\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`F${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`H${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`H${rowIndex}`).value = '失能程度';\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`K${rowIndex}:N${rowIndex}`);\n worksheet.getCell(`K${rowIndex}`).value = '福利身份';\n worksheet.getCell(`K${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`K${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`K${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`O${rowIndex}:Q${rowIndex}`);\n worksheet.getCell(`O${rowIndex}`).value = '獨居與否';\n worksheet.getCell(`O${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`O${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`O${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`R${rowIndex}`).value = '用餐\\n數量';\n worksheet.getCell(`R${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`R${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`R${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`S${rowIndex}:T${rowIndex}`);\n worksheet.getCell(`S${rowIndex}`).value = '原住民身分';\n worksheet.getCell(`S${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`S${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`S${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`U${rowIndex}`).value = '備註';\n worksheet.getCell(`U${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`U${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`U${rowIndex}`).border = defaultBorder;\n worksheet.getRow(rowIndex).height = 36;\n rowIndex += 1;\n\n ['', '', '', '', '', '男', '女', '輕', '中', '重',\n '低收', '中低', '近貧', '一般', '是', '否', '不詳', '', '是', '否', ''].forEach((header, index) => {\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).border = defaultBorder;\n });\n rowIndex += 1;\n let elderIndex = 0;\n (clientStatement.elderStatistics || []).forEach((elderRow, index) => {\n if (elderRow.orderCount === 0) {\n return;\n }\n elderIndex += 1;\n worksheet.getCell(`A${rowIndex}`).value = elderIndex;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`B${rowIndex}`).value = elderRow.name || '';\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`C${rowIndex}`).value = elderRow.identificationCardId || '';\n worksheet.getCell(`C${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`C${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`C${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`D${rowIndex}`).value = getROCYear(elderRow.birthday) || '';\n worksheet.getCell(`D${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`D${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`D${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`E${rowIndex}`).value = elderRow.phoneNumber || '';\n worksheet.getCell(`E${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`E${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`E${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`F${rowIndex}`).value = elderRow.gender === 'male' ? 1 : '';\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`F${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex}`).value = elderRow.gender === 'female' ? 1 : '';\n worksheet.getCell(`G${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`G${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`H${rowIndex}`).value = ['2級', '3級'].includes(elderRow.cmsLevel) ? 1 : '';\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`I${rowIndex}`).value = ['4級', '5級', '6級'].includes(elderRow.cmsLevel) ? 1 : '';\n worksheet.getCell(`I${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`I${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`I${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`J${rowIndex}`).value = ['7級', '8級'].includes(elderRow.cmsLevel) ? 1 : '';\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`J${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`K${rowIndex}`).value = elderRow.disadvantagedTypes === '低收' ? 1 : '';\n worksheet.getCell(`K${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`K${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`K${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`L${rowIndex}`).value = elderRow.disadvantagedTypes === '中低' ? 1 : '';\n worksheet.getCell(`L${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`L${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`L${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`M${rowIndex}`).value = elderRow.disadvantagedTypes === '近貧' ? 1 : '';\n worksheet.getCell(`M${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`M${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`M${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`N${rowIndex}`).value = elderRow.disadvantagedTypes === '一般' ? 1 : '';\n worksheet.getCell(`N${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`N${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`N${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`O${rowIndex}`).value = elderRow.isLivingAlone === 1 ? 1 : '';\n worksheet.getCell(`O${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`O${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`O${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`P${rowIndex}`).value = elderRow.isLivingAlone === 0 ? 1 : '';\n worksheet.getCell(`P${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`P${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`P${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`Q${rowIndex}`).value = elderRow.isLivingAlone === null || elderRow.isLivingAlone === undefined ? 1 : '';\n worksheet.getCell(`Q${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`Q${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`Q${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`R${rowIndex}`).value = elderRow.orderCount;\n worksheet.getCell(`R${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`R${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`R${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`S${rowIndex}`).value = elderRow.isIndigenous ? 1 : '';\n worksheet.getCell(`S${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`S${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`S${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`T${rowIndex}`).value = !elderRow.isIndigenous ? 1 : '';\n worksheet.getCell(`T${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`T${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`T${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`U${rowIndex}`).value = '';\n worksheet.getCell(`U${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`U${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`U${rowIndex}`).border = defaultBorder;\n rowIndex += 1;\n });\n worksheet.getRow(rowIndex - 1).eachCell((cell) => {\n cell.border = { ...defaultBorder, bottom: { style: 'thin' } };\n });\n\n // 公式表格\n rowIndex = 3;\n worksheet.mergeCells(`X${rowIndex}:Y${rowIndex}`);\n worksheet.getCell(`X${rowIndex}`).value = '性別';\n worksheet.getCell(`X${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`X${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`X${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`Z${rowIndex}:AB${rowIndex}`);\n worksheet.getCell(`Z${rowIndex}`).value = '失能程度';\n worksheet.getCell(`Z${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`Z${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`Z${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`AC${rowIndex}:AF${rowIndex}`);\n worksheet.getCell(`AC${rowIndex}`).value = '福利身份';\n worksheet.getCell(`AC${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`AC${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`AC${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`AG${rowIndex}:AI${rowIndex}`);\n worksheet.getCell(`AG${rowIndex}`).value = '獨居與否';\n worksheet.getCell(`AG${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`AG${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`AG${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`AJ${rowIndex}`).value = '用餐\\n數量';\n worksheet.getCell(`AJ${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`AJ${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`AJ${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`AK${rowIndex}:AL${rowIndex}`);\n worksheet.getCell(`AK${rowIndex}`).value = '原住民身分';\n worksheet.getCell(`AK${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`AK${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`AK${rowIndex}`).border = defaultBorder;\n rowIndex += 1;\n ['男', '女', '輕', '中', '重', '低收', '中低', '近貧', '一般', '是', '否', '不詳', '', '是', '否'].forEach((header, index) => {\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).border = defaultBorder;\n });\n rowIndex += 1;\n columnArray.slice(5, 20).forEach((column, index) => {\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).value = { formula: `=SUM(${column}:${column})` };\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index + 23]}${rowIndex}`).border =\n { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n });\n\n rowIndex = 2;\n // eslint-disable-next-line max-len\n ['低收入戶', '低收入戶', '低收入戶', '低收入戶', '低收入戶', '低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '近貧', '近貧', '近貧', '近貧', '近貧', '近貧', '一般戶', '一般戶', '一般戶', '一般戶', '一般戶', '一般戶', '獨居(本欄請獨立計算)', '獨居(本欄請獨立計算)', '原住民(本欄請獨立計算)', '原住民(本欄請獨立計算)', '低收入戶', '低收入戶', '低收入戶', '低收入戶', '低收入戶', '低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '中低收入戶', '近貧', '近貧', '近貧', '近貧', '近貧', '近貧', '一般戶', '一般戶', '一般戶', '一般戶', '一般戶', '一般戶', '獨居(本欄請獨立計算)', '獨居(本欄請獨立計算)', '原住民(本欄請獨立計算)', '原住民(本欄請獨立計算)']\n .forEach((header, index) => {\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).border = defaultBorder;\n });\n rowIndex += 1;\n // eslint-disable-next-line max-len\n ['輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '小計', '小計', '小計', '小計', '輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '輕度失能', '輕度失能', '中度失能', '中度失能', '重度失能', '重度失能', '小計', '小計', '小計', '小計']\n .forEach((header, index) => {\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).border = defaultBorder;\n });\n rowIndex += 1;\n // eslint-disable-next-line max-len\n ['男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女', '男', '女']\n .forEach((header, index) => {\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).border =\n { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n });\n rowIndex += 1;\n (clientStatement.elderStatistics || []).forEach((_, index) => {\n [\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),K5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),K5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),K5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),K5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),K5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),K5<>\"\"),1,0)',\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),L5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),L5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),L5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),L5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),L5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),L5<>\"\"),1,0)',\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),M5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),M5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),M5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),M5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),M5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),M5<>\"\"),1,0)',\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),N5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),N5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),N5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),N5<>\"\"),1,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),N5<>\"\"),1,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),N5<>\"\"),1,0)',\n '=IF(AND(F5<>\"\",O5<>\"\"),1,0)', '=IF(AND(G5<>\"\",O5<>\"\"),1,0)', ' =IF(AND(F5<>\"\",S5<>\"\"),1,0)', '=IF(AND(G5<>\"\",S5<>\"\"),1,0)',\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),K5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),K5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),K5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),K5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),K5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),K5<>\"\"),R5,0)',\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),L5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),L5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),L5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),L5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),L5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),L5<>\"\"),R5,0)',\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),M5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),M5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),M5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),M5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),M5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),M5<>\"\"),R5,0)',\n // eslint-disable-next-line max-len\n '=IF(AND(AND(F5<>\"\",H5<>\"\"),N5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",H5<>\"\"),N5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",I5<>\"\"),N5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",I5<>\"\"),N5<>\"\"),R5,0)', '=IF(AND(AND(F5<>\"\",J5<>\"\"),N5<>\"\"),R5,0)', '=IF(AND(AND(G5<>\"\",J5<>\"\"),N5<>\"\"),R5,0)',\n '=IF(AND(F5<>\"\",O5<>\"\"),R5,0)', '=IF(AND(G5<>\"\",O5<>\"\"),R5,0)', ' =IF(AND(F5<>\"\",S5<>\"\"),R5,0)', '=IF(AND(G5<>\"\",S5<>\"\"),R5,0)',\n ].forEach((formula, index) => {\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).value = { formula: formula.replace(/5/g, rowIndex) };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[index + 39]}${rowIndex}`).font = { size: 12, name: fontName };\n });\n rowIndex += 1;\n });\n\n return worksheet;\n}\n\nfunction getWorksheetDeliveryStaff(worksheet, deliveryStaffs = [], orders = [], clientName, yearMonth, monthLabel) {\n const deliveryStaffRows = [];\n deliveryStaffs\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .map(({\n id,\n name,\n identificationCardId,\n address,\n }) => {\n const deliveryStaffOrders = orders\n .filter(({ deliveryStaffId }) => deliveryStaffId === id);\n if (deliveryStaffOrders.length === 0) {\n return;\n }\n const lunchs = [];\n const dinners = [];\n deliveryStaffOrders.sort(sortBy('deliveryBy')).forEach(({ mealSlot, date }) => {\n const day = date.split('-')[2];\n if (mealSlot === 'lunch') {\n if (!lunchs.includes(day)) {\n lunchs.push(day);\n }\n } else {\n if (!dinners.includes(day)) {\n dinners.push(day);\n }\n }\n });\n deliveryStaffRows.push({\n 姓名: name,\n 身分證字號: identificationCardId,\n 戶籍地址: formatAddress(address, { includeZipCode: false }),\n 供餐次數: deliveryStaffOrders.length,\n 服務日期: { lunchs, dinners },\n });\n });\n\n const fontName = 'Calibri';\n const range = 'A:AZ';\n const columnArray = buildColumnsArray(range);\n\n const ROCYear = getROCYear(yearMonth);\n\n let rowIndex = 1;\n\n const columnWidth = [6, 10, 14, 36, 4.67, 40, 5.33, 11.83, 11.5, 31.83];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n worksheet.mergeCells(`A${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `${clientName}`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName, underline: true };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `「臺北市政府社會局 ${ROCYear} 年度補助辦理失能者營養餐飲服務計畫」`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `${ROCYear}年${monthLabel}份送餐人員誤餐交通費請領清冊`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n rowIndex += 1;\n\n ['編號', '姓名', '身分證統一編號', '戶籍地址(含里鄰)', '時段', '服務日期',\n '次數', '金額', '總金額', '蓋章'].forEach((header, index) => {\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).value = header;\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`${columnArray[index]}${rowIndex}`).border = defaultBorder;\n });\n\n rowIndex += 1;\n deliveryStaffRows.forEach((deliveryStaff, index) => {\n worksheet.mergeCells(`A${rowIndex}:A${rowIndex + 1}`);\n worksheet.getCell(`A${rowIndex}`).value = index + 1;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`B${rowIndex}:B${rowIndex + 1}`);\n worksheet.getCell(`B${rowIndex}`).value = deliveryStaff['姓名'];\n worksheet.getCell(`B${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`B${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`B${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`C${rowIndex}:C${rowIndex + 1}`);\n worksheet.getCell(`C${rowIndex}`).value = deliveryStaff['身分證字號'];\n worksheet.getCell(`C${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`C${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`C${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`D${rowIndex}:D${rowIndex + 1}`);\n worksheet.getCell(`D${rowIndex}`).value = deliveryStaff['戶籍地址'];\n worksheet.getCell(`D${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`D${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`D${rowIndex}`).border = defaultBorder;\n let total = 0;\n if (deliveryStaff['服務日期'].lunchs.length !== 0 && deliveryStaff['服務日期'].dinners.length !== 0) {\n worksheet.getCell(`E${rowIndex}`).value = '午';\n worksheet.getCell(`E${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`E${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`E${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`F${rowIndex}`).value = deliveryStaff['服務日期'].lunchs.join(',');\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 8, name: fontName };\n worksheet.getCell(`F${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex}`).value = deliveryStaff['服務日期'].lunchs.length;\n worksheet.getCell(`G${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`G${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`H${rowIndex}`).value = deliveryStaff['服務日期'].lunchs.length * deliveryStaffFeePerTrip;\n total += deliveryStaff['服務日期'].lunchs.length * deliveryStaffFeePerTrip;\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`E${rowIndex + 1}`).value = '晚';\n worksheet.getCell(`E${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`E${rowIndex + 1}`).font = { size: 12, name: fontName };\n worksheet.getCell(`E${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`F${rowIndex + 1}`).value = deliveryStaff['服務日期'].dinners.join(',');\n worksheet.getCell(`F${rowIndex + 1}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex + 1}`).font = { size: 8, name: fontName };\n worksheet.getCell(`F${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex + 1}`).value = deliveryStaff['服務日期'].dinners.length;\n worksheet.getCell(`G${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex + 1}`).font = { size: 14, name: fontName };\n worksheet.getCell(`G${rowIndex + 1}`).border = defaultBorder;\n worksheet.getCell(`H${rowIndex + 1}`).value = deliveryStaff['服務日期'].dinners.length * deliveryStaffFeePerTrip;\n total += deliveryStaff['服務日期'].dinners.length * deliveryStaffFeePerTrip;\n worksheet.getCell(`H${rowIndex + 1}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex + 1}`).font = { size: 14, name: fontName };\n worksheet.getCell(`H${rowIndex + 1}`).border = defaultBorder;\n } else {\n worksheet.mergeCells(`E${rowIndex}:E${rowIndex + 1}`);\n worksheet.getCell(`E${rowIndex}`).value = deliveryStaff['服務日期'].lunchs.length !== 0 ? '午' : '晚';\n worksheet.getCell(`E${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };\n worksheet.getCell(`E${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`E${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`F${rowIndex}:F${rowIndex + 1}`);\n worksheet.getCell(`F${rowIndex}`).value = deliveryStaff['服務日期'].lunchs.length !== 0 ?\n deliveryStaff['服務日期'].lunchs.join(',') : deliveryStaff['服務日期'].dinners.join(',');\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 8, name: fontName };\n worksheet.getCell(`F${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`G${rowIndex}:G${rowIndex + 1}`);\n worksheet.getCell(`G${rowIndex}`).value = deliveryStaff['服務日期'].lunchs.length !== 0 ?\n deliveryStaff['服務日期'].lunchs.length : deliveryStaff['服務日期'].dinners.length;\n worksheet.getCell(`G${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`G${rowIndex}`).border = defaultBorder;\n total = deliveryStaff['服務日期'].lunchs.length !== 0 ?\n deliveryStaff['服務日期'].lunchs.length * deliveryStaffFeePerTrip :\n deliveryStaff['服務日期'].dinners.length * deliveryStaffFeePerTrip;\n worksheet.mergeCells(`H${rowIndex}:H${rowIndex + 1}`);\n worksheet.getCell(`H${rowIndex}`).value = total;\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n }\n worksheet.mergeCells(`I${rowIndex}:I${rowIndex + 1}`);\n worksheet.getCell(`I${rowIndex}`).value = total;\n worksheet.getCell(`I${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`I${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`I${rowIndex}`).border = defaultBorder;\n worksheet.mergeCells(`J${rowIndex}:J${rowIndex + 1}`);\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`J${rowIndex}`).border = defaultBorder;\n rowIndex += 2;\n });\n\n worksheet.mergeCells(`A${rowIndex}:F${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = '合 計';\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`G${rowIndex}`).value = { formula: `=SUM(G5:G${deliveryStaffRows.length * 2 - 1 + 5})` };\n worksheet.getCell(`G${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`G${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`H${rowIndex}`).value = { formula: `=SUM(H5:H${deliveryStaffRows.length * 2 - 1 + 5})` };\n worksheet.getCell(`H${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`H${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`H${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`I${rowIndex}`).value = { formula: `=SUM(I5:I${deliveryStaffRows.length * 2 - 1 + 5})` };\n worksheet.getCell(`I${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`I${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`I${rowIndex}`).border = defaultBorder;\n worksheet.getCell(`J${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`J${rowIndex}`).font = { size: 14, name: fontName };\n worksheet.getCell(`J${rowIndex}`).border = defaultBorder;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:J${rowIndex}`);\n // eslint-disable-next-line max-len\n worksheet.getCell(`A${rowIndex}`).value = `填表人: 主辦會計: 單位主管:`;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { size: 12, name: fontName };\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' } };\n\n return worksheet;\n}\n","import JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport { sortBy } from 'utilities/sorting';\nimport { formatAddress } from 'utilities/format';\nimport { buildColumnsArray, getROCYear, convertDateToZhFormat } from './helpers';\nimport { toastr } from 'react-redux-toastr';\nimport moment from 'moment-timezone';\n\nconst COUNTY = '彰化縣';\n\nconst deliveryStaffFeePerOrder = 125;\n\nexport default async function writeChanghua({\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n selectedMonth: selectedYearMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n applyDefaultDeliveryStaff = false,\n weeksOfMonth,\n}) {\n const elders = allElders.filter(({ address }) => address.county === COUNTY);\n // const elders = allElders; // test\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let periodOrders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n periodOrders = periodOrders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n const orders = periodOrders.filter(({ date }) => date.startsWith(selectedYearMonth));\n\n const [selectedYear, selectedMonth] = selectedYearMonth.split('-');\n const ROCYear = parseInt(selectedYear) - 1911;\n\n const zip = new JSZip();\n\n const workbookDeliveryStaff = new ExcelJS.Workbook();\n const worksheet = workbookDeliveryStaff.addWorksheet(`${ROCYear}.${selectedMonth}`);\n getWorksheetDeliveryStaff(worksheet, deliveryStaffs, orders, elders, selectedYearMonth, selectedMonth, applyDefaultDeliveryStaff);\n try {\n if (workbookDeliveryStaff && workbookDeliveryStaff.worksheets && workbookDeliveryStaff.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookDeliveryStaff.xlsx.writeBuffer();\n zip.file(`${ROCYear}${selectedMonth}送餐人員配對名冊.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const workbookElderStatistics = new ExcelJS.Workbook();\n const worksheetElderStatistics = workbookElderStatistics.addWorksheet(`${ROCYear}${selectedMonth}人數人次統計表`);\n const firstDayOfMonth = moment(selectedYearMonth, 'YYYY-MM').startOf('month').format('YYYY-MM-DD');\n const lastDayOfMonth = moment(selectedYearMonth, 'YYYY-MM').endOf('month').format('YYYY-MM-DD');\n getWorksheetElderStatistics(worksheetElderStatistics, orders, elders, firstDayOfMonth, lastDayOfMonth);\n weeksOfMonth.forEach(({ start, end }) => {\n const [startYear, startMonth, startDay] = start.split('-');\n const [, endMonth, endDay] = end.split('-');\n const ROCYear = parseInt(startYear) - 1911;\n const ordersInPeriod = periodOrders.filter(({ date }) => date >= start && date <= end);\n const worksheetElderStatistics = workbookElderStatistics.addWorksheet(`${ROCYear}${startMonth}${startDay}-${endMonth}${endDay}人數人次統計表`);\n getWorksheetElderStatistics(worksheetElderStatistics, ordersInPeriod, elders, start, end);\n });\n try {\n if (workbookElderStatistics && workbookElderStatistics.worksheets && workbookElderStatistics.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookElderStatistics.xlsx.writeBuffer();\n zip.file(`${ROCYear}${selectedMonth}人數人次統計表.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedYearMonth}核銷報表.zip`, zipContent);\n }\n}\n\nfunction getWorksheetDeliveryStaff(worksheet, deliveryStaffs = [], orders = [], elders, yearMonth, selectedMonth, applyDefaultDeliveryStaff) {\n const deliveryStaffRows = [];\n deliveryStaffs\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .map(({\n id,\n name,\n identificationCardId,\n address,\n birthday,\n }) => {\n const deliveryStaffOrders = orders\n .filter(({ deliveryStaffId, elderId }) => {\n if (applyDefaultDeliveryStaff) {\n const elder = elders.find(({ id }) => id === elderId);\n if (elder.defaultDeliveryStaffId) {\n return elder.defaultDeliveryStaffId === id;\n }\n }\n return deliveryStaffId === id;\n });\n if (deliveryStaffOrders.length === 0) {\n return;\n }\n const lunchs = [];\n const dinners = [];\n const elderNames = [];\n deliveryStaffOrders.sort(sortBy('deliveryBy')).forEach(({ mealSlot, date, elderId }) => {\n const elder = elders.find(({ id }) => id === elderId);\n const day = date.split('-')[2];\n if (mealSlot === 'lunch') {\n if (!lunchs.includes(day)) {\n lunchs.push(day);\n }\n } else {\n if (!dinners.includes(day)) {\n dinners.push(day);\n }\n }\n if (!elderNames.includes(elder.name)) {\n elderNames.push(elder.name);\n }\n });\n deliveryStaffRows.push({\n 姓名: name,\n 身分證字號: identificationCardId,\n 生日: birthday ? convertDateToZhFormat(birthday) : '',\n 戶籍地址: formatAddress(address, { includeZipCode: false }),\n 服務日期: { lunchs, dinners },\n 送餐個案: elderNames.sort((a, b) => a > b ? 1 : -1),\n });\n });\n\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n\n const ROCYear = getROCYear(yearMonth);\n\n let rowIndex = 1;\n\n const columnWidth = [9, 10, 16, 14, 30, 40, 40, 9, 9, 9, 16, 16, 30];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n const defaultBorder = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n let cell;\n worksheet.mergeCells(`A${rowIndex}:M${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = `${ROCYear}年度營養餐飲服務-----營養餐飲人員配對名冊 ${selectedMonth} 月份-午、晚餐`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n rowIndex += 1;\n\n ['編號', '送餐人員\\n姓名', '送餐人員\\n身分證字號', '送餐人員\\n出生年月日', '送餐人員\\n戶籍地址', '送餐日期(午餐)', '送餐日期(晚餐)',\n '(午餐次數)', '(晚餐次數)', '午餐+晚餐次數', `補助當月\\n次數*${deliveryStaffFeePerOrder}元`, '送餐人員用印', '送餐個案']\n .forEach((header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n worksheet.getRow(rowIndex).height = 80;\n });\n rowIndex += 1;\n\n deliveryStaffRows.forEach((deliveryStaff, index) => {\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = index + 1;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`B${rowIndex}`);\n cell.value = deliveryStaff['姓名'];\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`C${rowIndex}`);\n cell.value = deliveryStaff['身分證字號'];\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`D${rowIndex}`);\n cell.value = deliveryStaff['生日'];\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`E${rowIndex}`);\n cell.value = deliveryStaff['戶籍地址'];\n cell.alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`F${rowIndex}`);\n cell.value = deliveryStaff['服務日期'].lunchs.join('.');\n cell.alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`G${rowIndex}`);\n cell.value = deliveryStaff['服務日期'].dinners.join('.');\n cell.alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`H${rowIndex}`);\n cell.value = deliveryStaff['服務日期'].lunchs.length;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`I${rowIndex}`);\n cell.value = deliveryStaff['服務日期'].dinners.length;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`J${rowIndex}`);\n cell.value = { formula: `=SUM(H${rowIndex}:I${rowIndex})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`K${rowIndex}`);\n cell.value = { formula: `=J${rowIndex}*${deliveryStaffFeePerOrder}` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`L${rowIndex}`);\n cell.value = '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`M${rowIndex}`);\n cell.value = deliveryStaff['送餐個案'].join('、');\n cell.alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n worksheet.getRow(rowIndex).height = 80;\n rowIndex += 1;\n });\n\n worksheet.mergeCells(`A${rowIndex}:G${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '總計';\n cell.alignment = { horizontal: 'right', vertical: 'middle' };\n cell.font = { size: 28, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`H${rowIndex}`);\n cell.value = deliveryStaffRows.length ? { formula: `=SUM(H3:H${deliveryStaffRows.length + 2})` } : '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`I${rowIndex}`);\n cell.value = deliveryStaffRows.length ? { formula: `=SUM(I3:I${deliveryStaffRows.length + 2})` } : '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`J${rowIndex}`);\n cell.value = deliveryStaffRows.length ? { formula: `=SUM(J3:J${deliveryStaffRows.length + 2})` } : '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`K${rowIndex}`);\n cell.value = deliveryStaffRows.length ? { formula: `=SUM(K3:K${deliveryStaffRows.length + 2})` } : '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`L${rowIndex}`);\n cell.value = '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`M${rowIndex}`);\n cell.value = '';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 14, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n worksheet.mergeCells(`A${rowIndex}:D${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = `製表人:`;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 12, name: fontName, color: { argb: 'F72020' } };\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.mergeCells(`E${rowIndex}:F${rowIndex}`);\n cell = worksheet.getCell(`E${rowIndex}`);\n cell.value = `會計:`;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 12, name: fontName, color: { argb: 'F72020' } };\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.mergeCells(`G${rowIndex}:J${rowIndex}`);\n cell = worksheet.getCell(`G${rowIndex}`);\n cell.value = `單位負責人:`;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 12, name: fontName, color: { argb: 'F72020' } };\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.mergeCells(`K${rowIndex}:M${rowIndex}`);\n cell = worksheet.getCell(`K${rowIndex}`);\n cell.value = `團體名稱:`;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 12, name: fontName, color: { argb: 'F72020' } };\n cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.getRow(rowIndex).height = 80;\n\n return worksheet;\n}\n\nfunction getWorksheetElderStatistics(worksheet, orders = [], elders, start, end) {\n const disadvantagedType = ['低收入戶', '中低收', '一般戶'];\n const cmsLevels = ['2級', '3級', '4級', '5級', '6級', '7級', '8級'];\n const ordersByDisadvantaged = {\n '低收入戶': [],\n '中低收': [],\n '一般戶': [],\n };\n const districts = [];\n orders.forEach((order) => {\n let type = '一般戶';\n const elder = elders.find((elder) => elder.id === order.elderId);\n if (!elder) {\n console.log(`can not find elder ${order.elderId} for order ${order.id}`);\n return;\n }\n if (!districts.includes(elder.address.district)) {\n districts.push(elder.address.district);\n }\n\n const { disadvantagedTypesSlot } = elder;\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n const slot = disadvantagedTypesSlot.find(({ start, end }) => order.date >= start && order.date < end);\n if (slot) {\n type = slot.type;\n }\n }\n // TODO: 先容錯,之後加設定\n if (['低收', '長照低收'].includes(type)) type = '低收入戶';\n if (['長照中低收'].includes(type)) type = '中低收';\n if (['一般'].includes(type)) type = '一般戶';\n if (!ordersByDisadvantaged[type]) {\n toastr.error(`${elder.name} 的身份別 \"${type}\" 無法辨識`);\n return;\n }\n ordersByDisadvantaged[type].push({ ...order, elder });\n });\n\n const fontName = 'Calibri';\n const range = 'A:BZ';\n const columnArray = buildColumnsArray(range);\n\n let rowIndex = 1;\n\n const columnWidth = [9, 7,\n 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 6, 6,\n 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 6, 6,\n 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 6, 6,\n 12, 12];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n const defaultBorder = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n let cell;\n worksheet.mergeCells(`A${rowIndex}:K${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n const [startYear, startMonth, startDay] = start.split('-');\n const [endYear, endMonth, endDay] = end.split('-');\n const ROCStartYear = parseInt(startYear) - 1911;\n const ROCEndYear = parseInt(endYear) - 1911;\n cell.value = `時間:${ROCStartYear}年${startMonth}月${startDay}日-${ROCEndYear}年${endMonth}月${endDay}日`;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n\n rowIndex = 3;\n worksheet.mergeCells(`A${rowIndex}:A${rowIndex + 3}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '鄉鎮';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n worksheet.mergeCells(`B${rowIndex}:B${rowIndex + 3}`);\n cell = worksheet.getCell(`B${rowIndex}`);\n cell.value = '項目';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n let columnIndex = 2;\n disadvantagedType.forEach((type) => {\n let currentRowIndex = rowIndex;\n worksheet.mergeCells(`${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + 13]}${currentRowIndex}`);\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = type;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 14]}${currentRowIndex}`);\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 15]}${currentRowIndex}`);\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n cmsLevels.forEach((cmsLevel, index) => {\n const offset = index * 2;\n worksheet.mergeCells(`${columnArray[columnIndex + offset]}${currentRowIndex}:${columnArray[columnIndex + offset + 1]}${currentRowIndex}`);\n cell = worksheet.getCell(`${columnArray[columnIndex + offset]}${currentRowIndex}`);\n cell.value = cmsLevel;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n });\n cell = worksheet.getCell(`${columnArray[columnIndex + 14]}${currentRowIndex}`);\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 15]}${currentRowIndex}`);\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n let currentColumnIndex = columnIndex;\n [{ label: '輕度', width: 4 }, { label: '中度', width: 6 }, { label: '重度', width: 4 }].forEach(({ label, width }) => {\n worksheet.mergeCells(`${columnArray[currentColumnIndex]}${currentRowIndex}:${columnArray[currentColumnIndex + width - 1]}${currentRowIndex}`);\n cell = worksheet.getCell(`${columnArray[currentColumnIndex]}${currentRowIndex}`);\n cell.value = label;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n currentColumnIndex += width;\n });\n cell = worksheet.getCell(`${columnArray[columnIndex + 14]}${currentRowIndex}`);\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 15]}${currentRowIndex}`);\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n currentColumnIndex = columnIndex;\n [\n { label: '男', width: 2 }, { label: '女', width: 2 },\n { label: '男', width: 3 }, { label: '女', width: 3 },\n { label: '男', width: 2 }, { label: '女', width: 2 },\n { label: '男', width: 1 }, { label: '女', width: 1 },\n ].forEach(({ label, width }) => {\n if (width > 1) {\n worksheet.mergeCells(`${columnArray[currentColumnIndex]}${currentRowIndex}:${columnArray[currentColumnIndex + width - 1]}${currentRowIndex}`);\n }\n cell = worksheet.getCell(`${columnArray[currentColumnIndex]}${currentRowIndex}`);\n cell.value = label;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n currentColumnIndex += width;\n });\n currentRowIndex += 1;\n\n columnIndex += 16;\n });\n\n let currentRowIndex = rowIndex;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 1]}${currentRowIndex}`);\n cell.border = defaultBorder;\n currentRowIndex += 1;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 1]}${currentRowIndex}`);\n cell.border = defaultBorder;\n currentRowIndex += 1;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 1]}${currentRowIndex}`);\n cell.border = defaultBorder;\n currentRowIndex += 1;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '總和';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`${columnArray[columnIndex + 1]}${currentRowIndex}`);\n cell.border = defaultBorder;\n rowIndex += 4;\n\n const total = {\n '人數': [],\n '人次': [],\n '午餐': [],\n '晚餐': [],\n };\n districts.sort().forEach((district) => {\n currentRowIndex = rowIndex;\n worksheet.mergeCells(`A${currentRowIndex}:A${currentRowIndex + 3}`);\n cell = worksheet.getCell(`A${currentRowIndex}`);\n cell.value = district;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n ['人數', '人次', '午餐', '晚餐'].forEach((label, index) => {\n cell = worksheet.getCell(`B${currentRowIndex + index}`);\n cell.value = label;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n });\n columnIndex = 2;\n const cmsLevelSeverity = [['2級', '3級'], ['4級', '5級', '6級'], ['7級', '8級']];\n const mergedCells = [2, 2, 3, 3, 2, 2];\n disadvantagedType.forEach((type) => {\n let index = 0;\n cmsLevelSeverity.forEach((cmsLevels) => {\n ['male', 'female'].forEach((gender) => {\n const orders = ordersByDisadvantaged[type].filter(({ elder }) => {\n return elder.address.district === district &&\n cmsLevels.includes(elder.cmsLevel) &&\n elder.gender === gender;\n });\n let currentRowIndex = rowIndex;\n ['人數', '人次', '午餐', '晚餐'].forEach((content) => {\n worksheet.mergeCells(`${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + mergedCells[index] - 1]}${currentRowIndex}`);\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = undefined;\n if (orders.length !== 0) {\n switch (content) {\n case '人數': {\n const uniqueElderIdsSet = new Set();\n orders.forEach(({ elderId }) => uniqueElderIdsSet.add(elderId));\n cell.value = uniqueElderIdsSet.size || undefined;\n break;\n }\n case '人次':\n cell.value = orders.length;\n break;\n case '午餐':\n cell.value = orders.filter(({ mealSlot }) => mealSlot === 'lunch').length || undefined;\n break;\n case '晚餐':\n cell.value = orders.filter(({ mealSlot }) => mealSlot === 'dinner').length || undefined;\n break;\n }\n }\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n });\n columnIndex += mergedCells[index];\n index += 1;\n });\n });\n\n currentRowIndex = rowIndex;\n ['人數', '人次', '午餐', '晚餐'].forEach((content) => {\n // 男總和\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = {\n formula: `=${columnArray[columnIndex - 14]}${currentRowIndex} + \\\n${columnArray[columnIndex - 10]}${currentRowIndex} + \\\n${columnArray[columnIndex - 4]}${currentRowIndex}`,\n };\n cell.border = defaultBorder;\n total[content].push(`${columnArray[columnIndex]}${currentRowIndex}`);\n // 女總和\n cell = worksheet.getCell(`${columnArray[columnIndex + 1]}${currentRowIndex}`);\n cell.value = {\n formula: `=${columnArray[columnIndex - 12]}${currentRowIndex} + \\\n${columnArray[columnIndex - 7]}${currentRowIndex} + \\\n${columnArray[columnIndex - 2]}${currentRowIndex}`,\n };\n cell.border = defaultBorder;\n total[content].push(`${columnArray[columnIndex + 1]}${currentRowIndex}`);\n currentRowIndex += 1;\n });\n columnIndex += 2;\n });\n\n rowIndex += 4;\n });\n\n if (districts.length > 0) {\n // column AY and AZ\n rowIndex = 7;\n\n cell = worksheet.getCell(`AY${rowIndex}`);\n cell.value = '人數';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`AZ${rowIndex}`);\n cell.value = { formula: `=${total['人數'].join('+')}` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n cell = worksheet.getCell(`AY${rowIndex}`);\n cell.value = '人次';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`AZ${rowIndex}`);\n cell.value = { formula: `=${total['人次'].join('+')}` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n cell = worksheet.getCell(`AY${rowIndex}`);\n cell.value = '午餐人次';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`AZ${rowIndex}`);\n cell.value = { formula: `=${total['午餐'].join('+')}` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n cell = worksheet.getCell(`AY${rowIndex}`);\n cell.value = '晚餐人次';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n cell = worksheet.getCell(`AZ${rowIndex}`);\n cell.value = { formula: `=${total['晚餐'].join('+')}` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 12, name: fontName };\n cell.border = defaultBorder;\n rowIndex += 1;\n\n let restCellRowCount = (districts.length - 1) * 4;\n while (restCellRowCount > 0) {\n cell = worksheet.getCell(`AY${rowIndex}`);\n cell.border = defaultBorder;\n cell = worksheet.getCell(`AZ${rowIndex}`);\n cell.border = defaultBorder;\n rowIndex += 1;\n restCellRowCount -= 1;\n }\n }\n\n return worksheet;\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { toastr } from 'react-redux-toastr';\n\nimport {\n counties,\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { asyncListAll, request } from 'utilities/graph';\nimport LabelWithToolTip from '../LabelWithToolTip';\n\nimport chiayi from './workbooks/chiayi';\nimport miaoli from './workbooks/miaoli';\nimport yunlin from './workbooks/yunlin';\nimport taoyuan from './workbooks/taoyuan';\nimport newTaipeiCity from './workbooks/newTaipeiCity';\nimport pingtung from './workbooks/pingtung';\nimport taipei from './workbooks/taipei';\nimport changhua from './workbooks/changhua';\n\nimport {\n getEldersByClientByStatus,\n getOrdersByClientByDate,\n getPandagoOrdersByOrderByCreatedAt,\n} from '../queries';\n\nimport { processShareOrder, processDisadvantagedTypes, getWeeksOfMonth } from './workbooks/helpers';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function CountyPrsReport({ clientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [selectedCounty, setSelectedCounty] = useState(counties[0]);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeInactiveElders, setIncludeInactiveElders] = useState(false);\n const [includeNonDisElders, setIncludeNonDisElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n const [applyDefaultDeliveryStaff, setApplyDefaultDeliveryStaff] = useState(false);\n const excludeNonFoodDeliveryOrders = true;\n\n const collectData = async () => {\n if (!['嘉義縣', '苗栗縣', '新北市', '雲林縣', '桃園市', '屏東縣', '臺北市', '彰化縣'].includes(selectedCounty)) {\n toastr.error(`尚未提供${selectedCounty}核銷報表`);\n return;\n }\n\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n let fromDate = from.format('YYYY-MM-DD');\n let toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n // const monthString = from.format('YYYY/MM');\n const period = `${fromDate}__${toDate}`;\n const {\n id: clientId,\n name,\n facilitySettings: { dba },\n } = clientOptions.find(({ id }) => id === selectedClientId);\n\n const clientName = dba || name;\n\n const weeksOfMonth = getWeeksOfMonth(selectedMonth);\n if (selectedCounty === '彰化縣') {\n fromDate = weeksOfMonth[0].start;\n toDate = weeksOfMonth[weeksOfMonth.length - 1].end;\n }\n\n global.logger.debug({\n selectedClientId,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n elders,\n orders,\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: includeInactiveElders ? undefined : { eq: '使用中' },\n filter: includeNonDisElders ? undefined : {\n isDisadvantaged: {\n eq: 1,\n },\n },\n limit: 1000,\n }),\n asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n ]);\n\n const deliveryStaffIds = [];\n orders.forEach(({ deliveryStaffId, elderId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n const elder = elders.find(({ id }) => id === elderId);\n if (elder?.defaultDeliveryStaffId && !deliveryStaffIds.includes(elder.defaultDeliveryStaffId)) {\n deliveryStaffIds.push(elder.defaultDeliveryStaffId);\n }\n });\n\n let pandagoDeliveryStaffId;\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n username\n identificationCardId\n birthday\n address {\n county\n district\n street\n }\n }\n }\n `, { id });\n\n if (data.username === 'pandago') {\n pandagoDeliveryStaffId = id;\n }\n\n return data;\n }));\n\n const pandagoOrders = await Promise.all(orders\n .filter(({ deliveryStaffId }) => deliveryStaffId === pandagoDeliveryStaffId)\n .map(async ({ id: orderId }) => {\n const [pandagoOrder] = await asyncListAll(getPandagoOrdersByOrderByCreatedAt, {\n orderId,\n limit: 1,\n });\n\n return pandagoOrder;\n }));\n\n processShareOrder(elders, orders);\n processDisadvantagedTypes(selectedMonth, elders, fromDate, toDate);\n\n switch (selectedCounty) {\n case '嘉義縣':\n chiayi({ elders, orders, deliveryStaffs, pandagoOrders, selectedMonth, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n return;\n case '苗栗縣':\n miaoli({ elders, orders, deliveryStaffs, pandagoOrders, selectedMonth, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n return;\n case '新北市':\n newTaipeiCity({ elders, orders, deliveryStaffs, pandagoOrders, selectedMonth, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n return;\n case '雲林縣':\n yunlin({ elders, orders, deliveryStaffs, pandagoOrders, selectedMonth, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n return;\n case '桃園市':\n await taoyuan({ elders, orders, selectedMonth, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n return;\n case '屏東縣':\n await pingtung({ elders, orders, deliveryStaffs, selectedMonth, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n return;\n case '臺北市':\n await taipei({ elders, orders, deliveryStaffs, selectedMonth, clientId, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n return;\n case '彰化縣':\n await changhua({ elders, orders, deliveryStaffs, selectedMonth, clientName,\n includeUndeliveredOrders, excludeNonFoodDeliveryOrders, applyDefaultDeliveryStaff, weeksOfMonth });\n return;\n default:\n }\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n const updateCounty = (client) => {\n if (client && client.county) {\n const targetCounty = counties.find((county) => county === client.county);\n if (targetCounty) {\n setSelectedCounty(targetCounty);\n }\n }\n };\n\n useEffect(() => {\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n updateCounty(clientOptions[0]);\n }\n }, [clientOptions]);\n\n return (\n
\n

縣市核銷報表

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n if (value) {\n const client = clientOptions.find(({ id }) => id === value);\n updateCounty(client);\n }\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 縣市\n setSelectedCounty(event.target.value)}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n\n
\n
\n {\n setIncludeNonDisElders(e.target.checked);\n }}\n />\n }\n label={}\n />\n {\n setIncludeInactiveElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n {selectedCounty === '彰化縣' &&\n {\n setApplyDefaultDeliveryStaff(e.target.checked);\n }}\n />\n }\n label={'套用預設送餐大使'}\n />}\n
\n\n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n\nCountyPrsReport.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import { formatGender } from 'utilities/format';\nimport { utils, write } from 'sheetjs-style';\nimport JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport moment from 'moment-timezone';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\n\nexport default function writeVulnerable({\n elders,\n orders: allOrders,\n deliveryStaffs,\n pandagoOrders,\n selectedMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n county,\n restaurants = [],\n oneWayDeliveryStaffFee,\n}) {\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n const zip = new JSZip();\n const [year, month] = selectedMonth.split('-');\n const yearMonthTitle = `${parseInt(year)-1911}年${month}月`.replace(/0([1-9])月/g, '$1月');\n\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n const elderOrders = orders\n .filter(({ elderId }) => elderId === elder.id);\n\n if (elderOrders.length === 0) {\n return;\n }\n\n // \\ / ? * [ ]\n const sanitizedElderName = elder.name\n // .replace(/ /g, '')\n .replace(/\\\\/g, '')\n .replace(/\\//g, '')\n .replace(/\\?/g, '')\n .replace(/\\*/g, '')\n .replace(/\\[/g, '')\n .replace(/\\]/g, '');\n\n let totalDeliveryStaffFee = 0;\n let totalDistanceInMeters = 0;\n const rows = elderOrders\n .sort((a, b) => a.mealSlot < b.mealSlot ? 1 : -1)\n .sort((a, b) => a.deliveryBy > b.deliveryBy ? 1 : -1)\n .map((order) => {\n totalDeliveryStaffFee += order.deliveryStaffFee;\n totalDistanceInMeters += order.direction?.distanceInMeters || 0;\n return {\n '送餐對象': sanitizedElderName,\n // '餐廳': (restaurants.find(({ id }) => id === order.restaurantId) || {}).name || '',\n '日期': moment(order.deliveryBy).tz(TIME_ZONE).format('YYYY/MM/DD'),\n '時段': order.mealSlot === 'lunch' ? '午餐' : '晚餐',\n // '狀態': orderStatus.find(({ value }) => value === order.status).label,\n '距離': order.direction ? order.direction.distance : 'N/A',\n '送餐費用': order.deliveryStaffFee,\n };\n });\n\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 4 } });\n utils.sheet_add_aoa(worksheet, [[`${clientName}${yearMonthTitle}脆弱家庭送餐里程明細`]], { origin: 'A1' });\n utils.sheet_add_json(worksheet, rows, { origin: 'A2' });\n utils.sheet_add_aoa(worksheet, [['統計', rows.length,\n `${Math.round(totalDistanceInMeters / 100) / 10}公里`,\n totalDeliveryStaffFee]], { origin: `B${rows.length + 3}` });\n utils.sheet_add_aoa(worksheet, [['承辦人: 單位主管:']], { origin: `A${rows.length + 4}` });\n\n if (!oneWayDeliveryStaffFee) {\n utils.sheet_add_aoa(worksheet, [['送餐費用依送餐距離(餐廳到個案家)計算']], { origin: `A${rows.length + 8}` });\n utils.sheet_add_aoa(worksheet, [['5公里內送餐費用50元']], { origin: `A${rows.length + 9}` });\n utils.sheet_add_aoa(worksheet, [['若超過5公里,額外費用為多的里程數(公里)乘上5元後再四捨五入']], { origin: `A${rows.length + 10}` });\n }\n\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `${sanitizedElderName} 核銷報表`);\n const wbout = write(workbook, { bookType: 'xls', bookSST: true, type: 'binary' });\n\n zip.file(`午晚-${sanitizedElderName}.xls`, wbout, { binary: true });\n });\n\n const workbook = utils.book_new();\n\n utils.book_append_sheet(workbook, getWorksheetElders(elders, orders, clientName, yearMonthTitle), `個案`);\n utils.book_append_sheet(workbook, getWorksheetStatistics(elders, orders, clientName, yearMonthTitle, county), `統計表`);\n utils.book_append_sheet(workbook, getWorksheetStatistics([], [], clientName, yearMonthTitle, county), `核增統計表`);\n utils.book_append_sheet(workbook, getWorksheetAugementList([], []), `核增清冊`);\n utils.book_append_sheet(\n workbook,\n getWorksheetDeliveryFee(elders, orders, deliveryStaffs, pandagoOrders, yearMonthTitle, clientName, false, oneWayDeliveryStaffFee),\n `車馬(送餐大使)`,\n );\n utils.book_append_sheet(\n workbook,\n getWorksheetDeliveryFee(elders, orders, deliveryStaffs, pandagoOrders, yearMonthTitle, clientName, true),\n `車馬(Pandago)`,\n );\n\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n zip.file(`${clientName}__核銷報表__${selectedMonth}.xlsx`, wbout, { binary: true });\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedMonth}.zip`, zipContent);\n}\n\nfunction getWorksheetElders(elders = [], allOrders = [], clientName, yearMonthTitle) {\n const elderRows = [];\n let totalOrders = 0;\n let totalLunchOrders = 0;\n let totalDinnerOrders = 0;\n elders\n .sort((a, b) => a.name > b.name ? 1 : -1)\n .forEach(({\n id,\n name,\n gender,\n address: {\n county, district,\n },\n client: {\n facilitySettings: { dba },\n name: clientName,\n },\n }) => {\n const elderOrders = allOrders\n .filter(({ elderId }) => elderId === id);\n if (elderOrders.length === 0) {\n return;\n }\n elderRows.push({\n 姓名: name,\n 性別: formatGender(gender),\n 轉介機構: dba || clientName,\n 服務量: elderOrders.length,\n 午: elderOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length,\n 晚: elderOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length,\n 地區: county + district,\n 轉介單: '',\n });\n totalOrders += elderOrders.length;\n totalLunchOrders += elderOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length;\n totalDinnerOrders += elderOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length;\n });\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 7 } });\n utils.sheet_add_aoa(worksheet, [[`${clientName}${yearMonthTitle}脆弱家庭送餐餐費清冊`]], { origin: 'A1' });\n worksheet['A1'].s = {\n ...worksheet['A1'].s,\n alignment: { horizontal: 'center' },\n };\n\n utils.sheet_add_json(\n worksheet, elderRows, { origin: 'A2' });\n let rowIndex = elderRows.length + 3;\n worksheet['!merges'].push({ s: { r: rowIndex - 1, c: 0 }, e: { r: rowIndex - 1, c: 2 } });\n utils.sheet_add_aoa(worksheet, [['合計', '', '', totalOrders, totalLunchOrders, totalDinnerOrders]], { origin: `A${rowIndex}` });\n worksheet[`A${rowIndex}`].s = {\n alignment: { horizontal: 'center' },\n };\n rowIndex += 1;\n utils.sheet_add_aoa(worksheet, [['承辦人: 單位主管:']], { origin: `A${rowIndex}` });\n\n worksheet['!cols'] = [\n { wch: 13 },\n { wch: 5 },\n { wch: 18 }, { wch: 8 },\n { wch: 8 }, { wch: 8 },\n { wch: 15 },\n ];\n\n return worksheet;\n}\n\nfunction getWorksheetStatistics(elders = [], orders = [], clientName, yearMonthTitle, county) {\n const clientNames = elders.map(({ client }) => client.facilitySettings.dba || client.name);\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n\n let totalLunchCount = 0;\n let totalDinnerCount = 0;\n const clientLunch = clientNames.reduce((obj, clientName) => {\n obj[clientName] = 0;\n return obj;\n }, { '機構': '午餐' });\n const clientDinner = clientNames.reduce((obj, clientName) => {\n obj[clientName] = 0;\n return obj;\n }, { '機構': '晚餐' });\n\n orders.forEach(({ elderId, mealSlot }) => {\n const elder = elders.find(({ id }) => id === elderId);\n const { facilitySettings: { dba }, name } = elder.client;\n if (mealSlot === 'lunch') {\n clientLunch[dba || name]++;\n totalLunchCount++;\n } else {\n clientDinner[dba || name]++;\n totalDinnerCount++;\n }\n });\n\n clientNames.forEach((clientName) => {\n if (clientLunch[clientName] === 0 && clientDinner[clientName] === 0) {\n delete clientLunch[clientName];\n delete clientDinner[clientName];\n }\n });\n\n clientLunch['合計'] = totalLunchCount;\n clientDinner['合計'] = totalDinnerCount;\n\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 7 } });\n\n utils.sheet_add_aoa(worksheet, [[`${clientName}${yearMonthTitle}${county}公益盈餘補助計畫送餐統計表`]], { origin: 'A1' });\n utils.sheet_add_json(\n worksheet, [clientLunch, clientDinner], { origin: 'A2', skipHeader: false });\n\n worksheet['!merges'].push({ s: { r: 5, c: 0 }, e: { r: 6, c: 0 } });\n worksheet['!merges'].push({ s: { r: 5, c: 1 }, e: { r: 5, c: 3 } });\n utils.sheet_add_aoa(worksheet, [['脆弱家庭']], { origin: 'B6' });\n\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'B7' });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'C7' });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'D7' });\n\n worksheet['!merges'].push({ s: { r: 5, c: 4 }, e: { r: 5, c: 5 } });\n utils.sheet_add_aoa(worksheet, [['服務人次']], { origin: 'E6' });\n\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'E7' });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'F7' });\n\n utils.sheet_add_aoa(worksheet, [['補助金額']], { origin: 'G6' });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'G7' });\n\n const shortYearMonthTitle = yearMonthTitle.replace('年', '').replace('月', '');\n utils.sheet_add_aoa(worksheet, [[`${shortYearMonthTitle}(午餐)`]], { origin: 'A8' });\n utils.sheet_add_aoa(worksheet, [[`${shortYearMonthTitle}(晚餐)`]], { origin: 'A9' });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'A10' });\n utils.sheet_add_aoa(worksheet, [['承辦人: 單位主管:']], { origin: `A12` });\n\n const serviceCodeList = ['脆家'];\n\n const getSampleData = () => {\n return {\n '脆家男': 0,\n '脆家女': 0,\n '服務人數合計': 0,\n '服務人次男': 0,\n '服務人次女': 0,\n '金額合計': 0,\n };\n };\n\n const rate = {\n '縣市': {\n '脆家': 0,\n },\n '中央': {\n '脆家': 100,\n },\n };\n\n const data = {\n lunch: getSampleData(),\n dinner: getSampleData(),\n total: getSampleData(),\n };\n\n elders.forEach(({ id, serviceCode, gender, name }) => {\n if (serviceCode && !serviceCodeList.includes(serviceCode)) {\n return;\n }\n let genderString = formatGender(gender);\n if (!['男', '女'].includes(genderString)) {\n console.error(`${name} 沒有設定性別`);\n genderString = '男';\n }\n const elderOrders = orders.filter(({ elderId }) => elderId === id);\n\n const countMappings = {\n lunch: false,\n dinner: false,\n };\n elderOrders.forEach(({ mealSlot }) => {\n const type = serviceCode;\n if (type) {\n if (!countMappings[mealSlot]) {\n data[mealSlot][`${type}${genderString}`]++;\n data[mealSlot][`服務人數合計`]++;\n countMappings[mealSlot] = true;\n }\n data[mealSlot][`服務人次${genderString}`]++;\n data[mealSlot]['金額合計'] += 1 * rate['縣市'][type] + 1 * rate['中央'][type];\n }\n });\n });\n\n Object.keys(data.total).map((key) => {\n data.total[key] = data.lunch[key] + data.dinner[key];\n });\n\n utils.sheet_add_json(\n worksheet, [data.lunch, data.dinner, data.total], { origin: 'B8', skipHeader: true });\n\n return worksheet;\n}\n\nfunction getWorksheetAugementList() {\n // https://docs.sheetjs.com/docs/solutions/processing#worksheet\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [\n { s: { r: 0, c: 0 }, e: { r: 0, c: 10 } },\n ];\n utils.sheet_add_aoa(worksheet, [[`照顧組合服務費用項目核增清冊`]], { origin: 'A1' });\n utils.sheet_add_aoa(worksheet, [['序號', '身分證號', '個案姓名', '福利身分別', '服務日期', '給(支)付價格', '次數', '申報費用', '目前居住縣市', '目前居住行政區', '服務人員']], { origin: 'A2' });\n utils.sheet_add_aoa(worksheet, [['承辦人: 單位主管:']], { origin: 'A10' });\n return worksheet;\n}\n\nfunction getWorksheetDeliveryFee(elders, orders, deliveryStaffs, pandagoOrders, yearMonthTitle, clientName, pandagoSheet, oneWayDeliveryStaffFee) {\n const mappings = {};\n let totalCount = 0;\n let totalDeliveryStaffFee = 0;\n let totalDistanceInMeters = 0;\n orders.forEach(({ id: orderId, elderId, mealSlot, deliveryStaffId, date: fullDate, deliveryStaffFee, direction }) => {\n const { name: elderName, address: { county, district } } = elders.find(({ id }) => id === elderId);\n const { name: deliveryStaffName } = deliveryStaffs.find(({ id }) => id === deliveryStaffId);\n const pandagoOrder = pandagoOrders.find((x) => x.orderId === orderId);\n const padnagoDeliveryStaffName = pandagoOrder ? `${pandagoOrder.driver.name} ${pandagoOrder.driver.phoneNumber}` : undefined;\n\n if (!!pandagoOrder !== pandagoSheet) {\n return;\n }\n\n const key = `${padnagoDeliveryStaffName || deliveryStaffName}__${deliveryStaffId}__${mealSlot}`;\n mappings[key] = mappings[key] || {\n '鄉鎮市': [],\n '編號': '', // fill later\n '志工姓名': padnagoDeliveryStaffName || deliveryStaffName,\n '午/晚餐': mealSlot === 'lunch'? '午餐':'晚餐',\n '天數': 0,\n '公里數': 0,\n '合計': 0,\n '個案姓名': [],\n '送餐日期': {},\n };\n\n if (!mappings[key]['鄉鎮市'].includes(county + district)) {\n mappings[key]['鄉鎮市'].push(county + district);\n }\n\n if (!mappings[key]['個案姓名'].includes(elderName)) {\n mappings[key]['個案姓名'].push(elderName);\n }\n\n const date = fullDate.split('-').pop();\n\n if (!mappings[key]['送餐日期'][date]) {\n mappings[key]['天數']++;\n totalCount++;\n if (oneWayDeliveryStaffFee) {\n mappings[key]['合計'] += Number(oneWayDeliveryStaffFee);\n totalDeliveryStaffFee += Number(oneWayDeliveryStaffFee);\n }\n }\n mappings[key]['公里數'] += direction?.distanceInMeters || 0;\n totalDistanceInMeters += direction?.distanceInMeters || 0;\n if (!oneWayDeliveryStaffFee) {\n mappings[key]['合計'] += deliveryStaffFee;\n totalDeliveryStaffFee += deliveryStaffFee;\n }\n\n mappings[key]['送餐日期'][date] = 1;\n });\n\n const data = Object.keys(mappings)\n .sort((a, b) => a < b ? 1 : -1)\n .map((key, index) => {\n const item = mappings[key];\n\n return Object.assign(item, {\n 鄉鎮市: item['鄉鎮市'].join('、\\n'),\n 編號: index + 1,\n 公里數: Math.round(item['公里數'] / 100) / 10,\n 個案姓名: item['個案姓名'].reduce((groups, item) => {\n const lastGroup = groups[groups.length - 1];\n if (lastGroup && lastGroup.length < 3) {\n lastGroup.push(item);\n } else {\n groups.push([item]);\n }\n return groups;\n }, []).map((group) => `${group.join('、')}`).join('\\n'),\n 送餐日期: Object.keys(item['送餐日期'])\n .sort((a, b) => a > b ? 1 : -1)\n .reduce((array, dateKey) => {\n const previousItem = array[array.length - 1];\n\n if (previousItem && previousItem.dateKey) {\n const [from, to] = previousItem.dateKey.split('-');\n const lastDate = to || from;\n if (parseInt(lastDate) + 1 === parseInt(dateKey)) {\n previousItem.dateKey = `${from}-${dateKey}`;\n previousItem.value += item['送餐日期'][dateKey];\n return array;\n }\n }\n\n array.push({\n dateKey,\n value: item['送餐日期'][dateKey],\n });\n\n return array;\n }, [])\n .map(({ dateKey, value }) => `${dateKey}(${value})`)\n .join(', '),\n });\n });\n\n // https://docs.sheetjs.com/docs/solutions/processing#worksheet\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [{ s: { r: 0, c: 0 }, e: { r: 0, c: 8 } }];\n utils.sheet_add_aoa(worksheet, [[`${clientName}${yearMonthTitle}脆弱家庭送餐外送服務清冊`]], { origin: 'A1' });\n worksheet['A1'].s = {\n ...worksheet['A1'].s,\n alignment: { horizontal: 'center' },\n };\n utils.sheet_add_aoa(worksheet, [['鄉鎮市', '編號', '志工姓名', '午/晚餐', '天數', '公里數', '合計', '個案姓名', '送餐日期']], { origin: 'A2' });\n utils.sheet_add_json(worksheet, data, { origin: 'A3', skipHeader: true });\n\n const offset = 2 + data.length;\n worksheet['!merges'].push({ s: { r: offset, c: 0 }, e: { r: offset, c: 3 } });\n utils.sheet_add_aoa(worksheet, [[`合計`]], { origin: `A${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalCount]], { origin: `E${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[Math.round(totalDistanceInMeters / 100) / 10]], { origin: `F${offset+1}` });\n utils.sheet_add_aoa(worksheet, [[totalDeliveryStaffFee]], { origin: `G${offset+1}` });\n utils.sheet_add_aoa(worksheet, [['承辦人: 單位主管:']], { origin: `A${offset+2}` });\n\n worksheet['!merges'].push({ s: { r: offset + 7, c: 0 }, e: { r: offset + 7, c: 8 } });\n utils.sheet_add_aoa(worksheet, [[`詳情請看${clientName}${yearMonthTitle}脆弱家庭送餐里程明細\\n\\\n勿用該外送服務清冊做計算,該清冊為統計。`]], { origin: `A${offset+8}` });\n worksheet[`A${offset+8}`].s = {\n ...worksheet[`A${offset+8}`].s,\n alignment: { wrapText: true, horizontal: 'center' },\n };\n\n worksheet['!rows'] = [];\n worksheet['!rows'][offset + 7] = { hpx: 34 };\n\n worksheet['!cols'] = [\n { wch: 13 },\n { wch: 5 },\n { wch: 20 },\n { wch: 13 },\n { wch: 13 },\n { wch: 13 },\n { wch: 10 },\n { wch: 45 },\n { wch: 40 },\n ];\n console.log(worksheet);\n return worksheet;\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport TextField from '@material-ui/core/TextField';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { useCache } from 'CacheProvider';\nimport cache from 'utilities/cache';\n\nimport {\n counties,\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { asyncListAll, request } from 'utilities/graph';\n\nimport writeVulnerable from './writeVulnerable';\n\nimport {\n getEldersByServiceCodeByStatus,\n getEldersByClientByServiceCode,\n getOrdersByElderByDate,\n getPandagoOrdersByOrderByCreatedAt,\n} from './queries';\n\nimport { processShareOrder, processDisadvantagedTypes } from './CountyPrsReport/workbooks/helpers';\n\nconst monthOptions = Array(24).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function VulnerableReport({ clientOptions: inClientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [includeInactiveElders, setIncludeInactiveElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n const [selectedClientId, setSelectedClientId] = useState();\n const [selectedCounty, setSelectedCounty] = useState(counties[0]);\n const [clientOptions, setClientOptions] = useState([]);\n const [oneWayDeliveryStaffFee, setOneWayDeliveryStaffFee] = useState();\n const { isAdmin, facilityIds, appGroup } = useCache();\n const facilityMode = appGroup === 'FacilityAdmins';\n const excludeNonFoodDeliveryOrders = true;\n\n const updateCounty = (client) => {\n if (client && client.county) {\n const targetCounty = counties.find((county) => county === client.county);\n if (targetCounty) {\n setSelectedCounty(targetCounty);\n }\n }\n };\n\n useEffect(() => {\n const clientOptions = JSON.parse(JSON.stringify(inClientOptions));\n if ((!facilityMode && inClientOptions.length > 1 && inClientOptions[0].id !== 'N/A') ||\n (facilityMode && facilityIds.length > 1)) {\n clientOptions.unshift({\n id: 'N/A',\n name: '全部機構',\n });\n }\n\n setClientOptions(clientOptions);\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n updateCounty(clientOptions[0]);\n }\n }, [inClientOptions]);\n\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n const period = `${fromDate}__${toDate}`;\n const facilityId = cache.get('app:facilityId');\n\n const {\n name,\n facilitySettings: { dba } = {},\n } = clientOptions.find(({ id }) => id === (selectedClientId === 'N/A' ? facilityId : selectedClientId)) || {};\n\n const clientName = dba || name || '全部機構';\n\n global.logger.debug({\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n let allElders = [];\n if (selectedClientId && selectedClientId !== 'N/A') {\n allElders = await asyncListAll(getEldersByClientByServiceCode, {\n clientId: selectedClientId,\n serviceCode: { eq: '脆家' },\n limit: 1000,\n });\n } else {\n if (facilityMode && facilityIds.length !== 0) {\n allElders = (await Promise.all(facilityIds.map(async (facilityId) =>\n await asyncListAll(getEldersByClientByServiceCode, {\n clientId: facilityId,\n serviceCode: { eq: '脆家' },\n limit: 1000,\n })))\n ).flat();\n } else if (isAdmin) {\n allElders = await asyncListAll(getEldersByServiceCodeByStatus, {\n serviceCode: '脆家',\n status: includeInactiveElders ? undefined : { eq: '使用中' },\n limit: 1000,\n });\n }\n }\n\n let elders = allElders;\n if (selectedCounty) {\n elders = elders.filter(({ county }) => county === selectedCounty);\n }\n\n const orders = [].concat(...await Promise.all(elders.map(({ id }) =>\n asyncListAll(getOrdersByElderByDate, {\n elderId: id,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }))));\n\n const deliveryStaffIds = [];\n const restaurantIds = [];\n orders.forEach(({ deliveryStaffId, restaurantId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n if (restaurantId && !restaurantIds.includes(restaurantId)) {\n restaurantIds.push(restaurantId);\n }\n });\n\n let pandagoDeliveryStaffId;\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n username\n identificationCardId\n }\n }\n `, { id });\n\n if (data.username === 'pandago') {\n pandagoDeliveryStaffId = id;\n }\n\n return data;\n }));\n const restaurants = await Promise.all(restaurantIds.map(async (id) => {\n const { data: { getRestaurant: data } } = await request( /* GraphQL */ `\n query GetRestaurant($id: ID!) {\n getRestaurant(id: $id) {\n id\n name\n }\n }\n `, { id });\n\n return data;\n }));\n\n const pandagoOrders = await Promise.all(orders\n .filter(({ deliveryStaffId }) => deliveryStaffId === pandagoDeliveryStaffId)\n .map(async ({ id: orderId }) => {\n const [pandagoOrder] = await asyncListAll(getPandagoOrdersByOrderByCreatedAt, {\n orderId,\n limit: 1,\n });\n\n return pandagoOrder;\n }));\n\n processShareOrder(elders, orders);\n processDisadvantagedTypes(selectedMonth, elders);\n writeVulnerable(\n { elders,\n orders, deliveryStaffs, pandagoOrders, selectedMonth, clientName, includeUndeliveredOrders, excludeNonFoodDeliveryOrders,\n county: selectedCounty,\n restaurants,\n oneWayDeliveryStaffFee,\n },\n );\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n
\n

脆弱家庭核銷報表

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n if (value) {\n const client = clientOptions.find(({ id }) => id === value);\n updateCounty(client);\n }\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 縣市\n setSelectedCounty(event.target.value)}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n setOneWayDeliveryStaffFee(e.target.value)}\n helperText=\"使用固定費用計算送餐費用,午餐和晚餐分別計價一次\"\n />\n
\n
\n {\n setIncludeInactiveElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n
\n\n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n\nVulnerableReport.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import { utils, write } from 'sheetjs-style';\n\nexport default function writeYearly(clientStatements, county, includeUndeliveredOrders=false, zip) {\n const row = {\n '地區': county,\n '服務人數': 0,\n '自費戶': 0,\n '弱勢戶': 0,\n '服務餐次': 0,\n '自費戶服務餐次': 0,\n '弱勢戶服務餐次': 0,\n '餐費': 0,\n '大使人數': 0,\n '大使車馬費': 0,\n '外送平台使用件數': 0,\n };\n\n const uniqueElderIdsSet = new Set();\n const uniqueDeliveryStaffIdsSet = new Set();\n const uniqueElderIdWithServiceCode = new Set();\n const uniqueElderIdWithOutServiceCode = new Set();\n clientStatements.sort((a, b) => a.month.localeCompare(b.month) * -1).forEach((statement) => {\n row['服務餐次'] += includeUndeliveredOrders ? statement.completedOrderCount + (statement.incompleteOrderCount || 0): statement.completedOrderCount;\n row['餐費'] += includeUndeliveredOrders ? statement.total + (statement.incompleteTotal || 0): statement.total;\n row['大使車馬費'] += statement.deliveryStaffFee;\n row['外送平台使用件數'] += statement.deliveryPlatformCount;\n statement.elderStatistics.forEach(({ id, serviceCode, orderCount, incompleteOrderCount }) => {\n uniqueElderIdsSet.add(id);\n if (!uniqueElderIdWithServiceCode.has(id) && !uniqueElderIdWithOutServiceCode.has(id)) {\n if (serviceCode === 'OT01' || serviceCode === '脆家') {\n uniqueElderIdWithServiceCode.add(id);\n } else {\n uniqueElderIdWithOutServiceCode.add(id);\n }\n }\n if (serviceCode === 'OT01' || serviceCode === '脆家') {\n row['弱勢戶服務餐次'] += includeUndeliveredOrders ? orderCount + (incompleteOrderCount || 0) : orderCount;\n } else {\n row['自費戶服務餐次'] += includeUndeliveredOrders ? orderCount + (incompleteOrderCount || 0) : orderCount;\n }\n });\n statement.deliveryStaffIds.forEach((id) => uniqueDeliveryStaffIdsSet.add(id));\n });\n row['服務人數'] = uniqueElderIdsSet.size;\n row['自費戶'] = uniqueElderIdWithOutServiceCode.size;\n row['弱勢戶'] = uniqueElderIdWithServiceCode.size;\n row['大使人數'] = uniqueDeliveryStaffIdsSet.size;\n\n const worksheet = utils.json_to_sheet([row]);\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, `${county} 年度報表`);\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n\n zip.file(`${county}__年度報表.xlsx`, wbout, { binary: true });\n}\n","import { utils, write } from 'sheetjs-style';\nimport { unifyCellStyle } from '../CountyPrsReport/workbooks/helpers';\n\nexport default function writeDisability(clientStatements, year, county, includeUndeliveredOrders=false, zip) {\n const yearROC = parseInt(year) - 1911;\n const dates = Array(12).fill('').map((_, i) => {\n const month = i + 1 < 10 ? '0' + (i + 1) : i + 1;\n return {\n monthROC: `${yearROC}${month}`,\n month: `${year}-${month}`,\n };\n });\n const rows = [];\n dates.forEach((date) => {\n const statement = clientStatements.find(({ month }) => date.month === month);\n if (statement) {\n const statementLow = statement.elderStatistics.filter(({ disadvantagedTypes }) => disadvantagedTypes === '低收');\n const statementMidLow = statement.elderStatistics.filter(({ disadvantagedTypes }) =>\n disadvantagedTypes === '中低收' || disadvantagedTypes === '中低2.5倍' || disadvantagedTypes === '中低1.5倍');\n // 嘉義:中低2.5倍、中低1.5倍\n // 苗栗:中低收\n const statementMale = statement.elderStatistics.filter(({ gender }) => gender === 'male');\n const statementFemale = statement.elderStatistics.filter(({ gender }) => gender === 'female');\n rows.push({\n '月份': date.monthROC,\n '低收': statementLow.length,\n '中低收': statementMidLow.length,\n '餐次 低收': statementLow.reduce((prev, { orderCount, incompleteOrderCount=0 }) =>\n includeUndeliveredOrders ? prev + orderCount + incompleteOrderCount : prev + orderCount, 0),\n '餐次 中低收': statementMidLow.reduce((prev, { orderCount, incompleteOrderCount=0 }) =>\n includeUndeliveredOrders ? prev + orderCount + incompleteOrderCount : prev + orderCount, 0),\n '極重度(男)': statementMale.filter(({ disabilityLevel }) => disabilityLevel === '極重度').length,\n '極重度(女)': statementFemale.filter(({ disabilityLevel }) => disabilityLevel === '極重度').length,\n '重度(男)': statementMale.filter(({ disabilityLevel }) => disabilityLevel === '重度').length,\n '重度(女)': statementFemale.filter(({ disabilityLevel }) => disabilityLevel === '重度').length,\n '中度(男)': statementMale.filter(({ disabilityLevel }) => disabilityLevel === '中度').length,\n '中度(女)': statementFemale.filter(({ disabilityLevel }) => disabilityLevel === '中度').length,\n '輕度(男)': statementMale.filter(({ disabilityLevel }) => disabilityLevel === '輕度').length,\n '輕度(女)': statementFemale.filter(({ disabilityLevel }) => disabilityLevel === '輕度').length,\n });\n } else {\n rows.push({\n '月份': date.monthROC,\n '低收': 0,\n '中低收': 0,\n '餐次 低收': 0,\n '餐次 中低收': 0,\n '極重度(男)': 0,\n '極重度(女)': 0,\n '重度(男)': 0,\n '重度(女)': 0,\n '中度(男)': 0,\n '中度(女)': 0,\n '輕度(男)': 0,\n '輕度(女)': 0,\n });\n }\n });\n\n const worksheet = utils.json_to_sheet([]);\n worksheet['!merges'] = [];\n worksheet['!merges'].push({ s: { r: 0, c: 0 }, e: { r: 0, c: 27 } });\n utils.sheet_add_aoa(worksheet, [[`${yearROC}身障者營養餐飲服務成果統計表`]], { origin: 'A1' });\n worksheet['!merges'].push({ s: { r: 1, c: 0 }, e: { r: 4, c: 0 } });\n utils.sheet_add_aoa(worksheet, [['月份']], { origin: 'A2' });\n worksheet['!merges'].push({ s: { r: 1, c: 1 }, e: { r: 1, c: 4 } });\n utils.sheet_add_aoa(worksheet, [['服務人數']], { origin: 'B2' });\n worksheet['!merges'].push({ s: { r: 2, c: 1 }, e: { r: 4, c: 1 } });\n utils.sheet_add_aoa(worksheet, [['身障津貼\\n(2.5)']], { origin: 'B3' });\n worksheet['!merges'].push({ s: { r: 2, c: 2 }, e: { r: 4, c: 2 } });\n utils.sheet_add_aoa(worksheet, [['低收']], { origin: 'C3' });\n worksheet['!merges'].push({ s: { r: 2, c: 3 }, e: { r: 4, c: 3 } });\n utils.sheet_add_aoa(worksheet, [['中低收']], { origin: 'D3' });\n worksheet['!merges'].push({ s: { r: 2, c: 4 }, e: { r: 4, c: 4 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'E3' });\n worksheet['!merges'].push({ s: { r: 1, c: 5 }, e: { r: 1, c: 8 } });\n utils.sheet_add_aoa(worksheet, [['服務人(餐)次']], { origin: 'F2' });\n worksheet['!merges'].push({ s: { r: 2, c: 5 }, e: { r: 4, c: 5 } });\n utils.sheet_add_aoa(worksheet, [['身障津貼\\n(2.5)']], { origin: 'F3' });\n worksheet['!merges'].push({ s: { r: 2, c: 6 }, e: { r: 4, c: 6 } });\n utils.sheet_add_aoa(worksheet, [['低收']], { origin: 'G3' });\n worksheet['!merges'].push({ s: { r: 2, c: 7 }, e: { r: 4, c: 7 } });\n utils.sheet_add_aoa(worksheet, [['中低收']], { origin: 'H3' });\n worksheet['!merges'].push({ s: { r: 2, c: 8 }, e: { r: 4, c: 8 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'I3' });\n worksheet['!merges'].push({ s: { r: 1, c: 9 }, e: { r: 2, c: 13 } });\n utils.sheet_add_aoa(worksheet, [['餐費']], { origin: 'J2' });\n worksheet['!merges'].push({ s: { r: 3, c: 9 }, e: { r: 4, c: 9 } });\n utils.sheet_add_aoa(worksheet, [['縣府專案\\n2.5*10%']], { origin: 'J4' });\n worksheet['!merges'].push({ s: { r: 3, c: 10 }, e: { r: 3, c: 11 } });\n utils.sheet_add_aoa(worksheet, [['低、中低、2.5*90%']], { origin: 'K4' });\n utils.sheet_add_aoa(worksheet, [['縣府自籌\\n3%']], { origin: 'K5' });\n utils.sheet_add_aoa(worksheet, [['中央97%']], { origin: 'L5' });\n worksheet['!merges'].push({ s: { r: 3, c: 12 }, e: { r: 3, c: 13 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'M4' });\n utils.sheet_add_aoa(worksheet, [['縣府']], { origin: 'M5' });\n utils.sheet_add_aoa(worksheet, [['中央']], { origin: 'N5' });\n worksheet['!merges'].push({ s: { r: 1, c: 14 }, e: { r: 2, c: 15 } });\n utils.sheet_add_aoa(worksheet, [['交通費']], { origin: 'O2' });\n worksheet['!merges'].push({ s: { r: 3, c: 14 }, e: { r: 3, c: 15 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'O4' });\n utils.sheet_add_aoa(worksheet, [['單位自籌\\n20%']], { origin: 'O5' });\n utils.sheet_add_aoa(worksheet, [['中央80%']], { origin: 'P5' });\n worksheet['!merges'].push({ s: { r: 1, c: 16 }, e: { r: 2, c: 17 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'Q2' });\n worksheet['!merges'].push({ s: { r: 3, c: 16 }, e: { r: 3, c: 17 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'Q4' });\n utils.sheet_add_aoa(worksheet, [['縣府']], { origin: 'Q5' });\n utils.sheet_add_aoa(worksheet, [['中央']], { origin: 'R5' });\n worksheet['!merges'].push({ s: { r: 1, c: 18 }, e: { r: 1, c: 27 } });\n utils.sheet_add_aoa(worksheet, [['身障等級']], { origin: 'S2' });\n worksheet['!merges'].push({ s: { r: 2, c: 18 }, e: { r: 2, c: 19 } });\n utils.sheet_add_aoa(worksheet, [['極重度']], { origin: 'S3' });\n worksheet['!merges'].push({ s: { r: 3, c: 18 }, e: { r: 4, c: 18 } });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'S4' });\n worksheet['!merges'].push({ s: { r: 3, c: 19 }, e: { r: 4, c: 19 } });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'T4' });\n worksheet['!merges'].push({ s: { r: 2, c: 20 }, e: { r: 2, c: 21 } });\n utils.sheet_add_aoa(worksheet, [['重度']], { origin: 'U3' });\n worksheet['!merges'].push({ s: { r: 3, c: 20 }, e: { r: 4, c: 20 } });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'U4' });\n worksheet['!merges'].push({ s: { r: 3, c: 21 }, e: { r: 4, c: 21 } });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'V4' });\n worksheet['!merges'].push({ s: { r: 2, c: 22 }, e: { r: 2, c: 23 } });\n utils.sheet_add_aoa(worksheet, [['中度']], { origin: 'W3' });\n worksheet['!merges'].push({ s: { r: 3, c: 22 }, e: { r: 4, c: 22 } });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'W4' });\n worksheet['!merges'].push({ s: { r: 3, c: 23 }, e: { r: 4, c: 23 } });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'X4' });\n worksheet['!merges'].push({ s: { r: 2, c: 24 }, e: { r: 2, c: 25 } });\n utils.sheet_add_aoa(worksheet, [['輕度']], { origin: 'Y3' });\n worksheet['!merges'].push({ s: { r: 3, c: 24 }, e: { r: 4, c: 24 } });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'Y4' });\n worksheet['!merges'].push({ s: { r: 3, c: 25 }, e: { r: 4, c: 25 } });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'Z4' });\n worksheet['!merges'].push({ s: { r: 2, c: 26 }, e: { r: 2, c: 27 } });\n utils.sheet_add_aoa(worksheet, [['合計']], { origin: 'AA3' });\n worksheet['!merges'].push({ s: { r: 3, c: 26 }, e: { r: 4, c: 26 } });\n utils.sheet_add_aoa(worksheet, [['男']], { origin: 'AA4' });\n worksheet['!merges'].push({ s: { r: 3, c: 27 }, e: { r: 4, c: 27 } });\n utils.sheet_add_aoa(worksheet, [['女']], { origin: 'AB4' });\n unifyCellStyle(worksheet, 5);\n\n const formatRow = (rowIndex) => {\n Array.from({ length: 10 }, (_, index) => index).forEach((columnIndex) => {\n worksheet['!merges'].push({ s: { r: rowIndex - 1, c: columnIndex }, e: { r: rowIndex, c: columnIndex } });\n });\n [10, 12, 14, 16].forEach((columnIndex) => {\n worksheet['!merges'].push({ s: { r: rowIndex - 1, c: columnIndex }, e: { r: rowIndex - 1, c: columnIndex + 1 } });\n });\n Array.from({ length: 10 }, (_, index) => index).forEach((columnIndex) => {\n worksheet['!merges'].push({ s: { r: rowIndex - 1, c: columnIndex + 18 }, e: { r: rowIndex, c: columnIndex + 18 } });\n });\n };\n\n let rowIndex = 6;\n const getColumnKey = (column) => {\n const charCode = 'A'.charCodeAt(0);\n if (column >= 26) {\n const shiftedCharCode = charCode + column - 26;\n return `A${String.fromCharCode(shiftedCharCode)}`;\n }\n const shiftedCharCode = charCode + column;\n return String.fromCharCode(shiftedCharCode);\n };\n rows.forEach((row, index) => {\n formatRow(rowIndex);\n worksheet[`A${rowIndex}`] = { t: 's', v: row['月份'] };\n worksheet[`B${rowIndex}`] = { t: 'n', v: 0 };\n worksheet[`C${rowIndex}`] = { t: 'n', v: row['低收'] };\n worksheet[`D${rowIndex}`] = { t: 'n', v: row['中低收'] };\n worksheet[`E${rowIndex}`] = { t: 'n', v: row['低收'] + row['中低收'] };\n worksheet[`F${rowIndex}`] = { t: 'n', v: 0 };\n worksheet[`G${rowIndex}`] = { t: 'n', v: row['餐次 低收'] };\n worksheet[`H${rowIndex}`] = { t: 'n', v: row['餐次 中低收'] };\n worksheet[`I${rowIndex}`] = { t: 'n', v: row['餐次 低收'] + row['餐次 中低收'] };\n worksheet[`J${rowIndex}`] = { t: 'n', v: 0 };\n worksheet[`S${rowIndex}`] = { t: 'n', v: row['極重度(男)'] };\n worksheet[`T${rowIndex}`] = { t: 'n', v: row['極重度(女)'] };\n worksheet[`U${rowIndex}`] = { t: 'n', v: row['重度(男)'] };\n worksheet[`V${rowIndex}`] = { t: 'n', v: row['重度(女)'] };\n worksheet[`W${rowIndex}`] = { t: 'n', v: row['中度(男)'] };\n worksheet[`X${rowIndex}`] = { t: 'n', v: row['中度(女)'] };\n worksheet[`Y${rowIndex}`] = { t: 'n', v: row['輕度(男)'] };\n worksheet[`Z${rowIndex}`] = { t: 'n', v: row['輕度(女)'] };\n worksheet[`AA${rowIndex}`] = { t: 'n', v: row['極重度(男)'] + row['重度(男)'] + row['中度(男)'] + row['輕度(男)'] };\n worksheet[`AB${rowIndex}`] = { t: 'n', v: row['極重度(女)'] + row['重度(女)'] + row['中度(女)'] + row['輕度(女)'] };\n rowIndex += 2;\n if ((index + 1) % 3 === 0) {\n formatRow(rowIndex);\n worksheet[`A${rowIndex}`] = { t: 's', v: '合計' };\n const columnsToSum = [1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27];\n columnsToSum.forEach((columnIndex) => {\n let sum = 0;\n const rowsOffset = [3, 5, 7];\n rowsOffset.forEach((offset) => {\n const cellAddress = { r: rowIndex - offset, c: columnIndex };\n const cellRef = utils.encode_cell(cellAddress);\n const cell = worksheet[cellRef];\n sum += cell.v;\n });\n worksheet[`${getColumnKey(columnIndex)}${rowIndex}`] = { t: 'n', v: sum };\n });\n rowIndex += 2;\n }\n });\n formatRow(rowIndex);\n // worksheet[`A${rowIndex}`] = { t: 's', v: '總計' }; // TODO: not work, why?\n utils.sheet_add_aoa(worksheet, [['總計']], { origin: `A${rowIndex}` });\n const columnsToSum = [1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27];\n columnsToSum.forEach((columnIndex) => {\n let sum = 0;\n const rowsToSum = [11, 19, 27, 35];\n rowsToSum.forEach((row) => {\n const cellAddress = { r: row, c: columnIndex };\n const cellRef = utils.encode_cell(cellAddress);\n const cell = worksheet[cellRef];\n sum += cell.v;\n });\n worksheet[`${getColumnKey(columnIndex)}${rowIndex}`] = { t: 'n', v: sum };\n });\n\n const workbook = utils.book_new();\n utils.book_append_sheet(workbook, worksheet, '身障者年度報表');\n const wbout = write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n\n zip.file(`${county}__身障者年度報表.xlsx`, wbout, { binary: true });\n}\n","import ExcelJS from 'exceljs';\nimport { buildColumnsArray } from '../CountyPrsReport/workbooks/helpers';\n\nconst range = 'A:BZ';\nconst columnName = buildColumnsArray(range);\n\nexport default async function writeMonthlyStatistics(clientName, clientStatements, year, county, includeUndeliveredOrders=false, zip) {\n const yearROC = parseInt(year) - 1911;\n const workbook = new ExcelJS.Workbook();\n const worksheet = workbook.addWorksheet(`${yearROC}年`);\n\n const fontName = 'Calibri';\n\n const disadvantagedTypeList = [];\n clientStatements.forEach(({ elderStatistics }) => {\n elderStatistics.forEach(({ disadvantagedTypes }) => {\n if (!disadvantagedTypeList.includes(disadvantagedTypes)) {\n disadvantagedTypeList.push(disadvantagedTypes);\n }\n });\n });\n if (disadvantagedTypeList.length === 0) {\n return;\n }\n worksheet.getCell('A1').value = '單位';\n worksheet.getCell('A1').alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell('A1').font = { name: fontName };\n worksheet.mergeCells(`B1:${columnName[disadvantagedTypeList.length * 5 - 1]}1`);\n worksheet.getCell('B1').value = clientName;\n worksheet.getCell('B1').alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell('B1').font = { name: fontName };\n worksheet.getRow(1).height = 17.25;\n\n disadvantagedTypeList.forEach((type, index) => {\n const colIndex = index * 5;\n const cols = [0, 1, 2, 3, 4].map((offset) => columnName[colIndex + offset]);\n worksheet.mergeCells(`${cols[0]}2:${cols[0]}3`);\n worksheet.getCell(`${cols[0]}2`).value = type;\n worksheet.getCell(`${cols[0]}2`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[0]}2`).font = { name: fontName };\n worksheet.mergeCells(`${cols[1]}2:${cols[2]}2`);\n worksheet.getCell(`${cols[1]}2`).value = '人數';\n worksheet.getCell(`${cols[1]}2`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[1]}2`).font = { name: fontName };\n worksheet.getCell(`${cols[1]}3`).value = '男';\n worksheet.getCell(`${cols[1]}3`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[1]}3`).font = { name: fontName };\n worksheet.getCell(`${cols[2]}3`).value = '女';\n worksheet.getCell(`${cols[2]}3`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[2]}3`).font = { name: fontName };\n worksheet.mergeCells(`${cols[3]}2:${cols[4]}2`);\n worksheet.getCell(`${cols[3]}2`).value = '人次';\n worksheet.getCell(`${cols[3]}2`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[3]}2`).font = { name: fontName };\n worksheet.getCell(`${cols[3]}3`).value = '男';\n worksheet.getCell(`${cols[3]}3`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[3]}3`).font = { name: fontName };\n worksheet.getCell(`${cols[4]}3`).value = '女';\n worksheet.getCell(`${cols[4]}3`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[4]}3`).font = { name: fontName };\n });\n worksheet.getRow(2).height = 17.25;\n worksheet.getRow(3).height = 17.25;\n\n const dates = Array(12).fill('').map((_, i) => {\n const month = i + 1 < 10 ? '0' + (i + 1) : i + 1;\n return {\n label: `${i + 1}月`,\n month: `${year}-${month}`,\n };\n });\n const rows = [];\n dates.forEach((date) => {\n const statement = clientStatements.find(({ month }) => date.month === month);\n if (statement) {\n const row = {};\n row['月份'] = date.label;\n disadvantagedTypeList.forEach((type) => {\n const statementMale = statement.elderStatistics.filter(\n ({ disadvantagedTypes, gender }) => disadvantagedTypes === type && gender === 'male');\n const statementFemale = statement.elderStatistics.filter(\n ({ disadvantagedTypes, gender }) => disadvantagedTypes === type && gender === 'female');\n row[`人數 ${type} 男`] = statementMale.length;\n row[`人數 ${type} 女`] = statementFemale.length;\n row[`人次 ${type} 男`] = statementMale.reduce((prev, { orderCount, incompleteOrderCount=0 }) =>\n includeUndeliveredOrders ? prev + orderCount + incompleteOrderCount : prev + orderCount, 0);\n row[`人次 ${type} 女`] = statementFemale.reduce((prev, { orderCount, incompleteOrderCount=0 }) =>\n includeUndeliveredOrders ? prev + orderCount + incompleteOrderCount : prev + orderCount, 0);\n });\n rows.push(row);\n }\n });\n\n let rowIndex = 4;\n rows.forEach((row) => {\n disadvantagedTypeList.forEach((type, index) => {\n const colIndex = index * 5;\n const cols = [0, 1, 2, 3, 4].map((offset) => columnName[colIndex + offset]);\n worksheet.getCell(`${cols[0]}${rowIndex}`).value = row['月份'];\n worksheet.getCell(`${cols[0]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[0]}${rowIndex}`).font = { name: fontName };\n\n worksheet.getCell(`${cols[1]}${rowIndex}`).value = row[`人數 ${type} 男`];\n worksheet.getCell(`${cols[1]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[1]}${rowIndex}`).font = { name: fontName };\n\n worksheet.getCell(`${cols[2]}${rowIndex}`).value = row[`人數 ${type} 女`];\n worksheet.getCell(`${cols[2]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[2]}${rowIndex}`).font = { name: fontName };\n\n worksheet.getCell(`${cols[3]}${rowIndex}`).value = row[`人次 ${type} 男`];\n worksheet.getCell(`${cols[3]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[3]}${rowIndex}`).font = { name: fontName };\n\n worksheet.getCell(`${cols[4]}${rowIndex}`).value = row[`人次 ${type} 女`];\n worksheet.getCell(`${cols[4]}${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`${cols[4]}${rowIndex}`).font = { name: fontName };\n });\n worksheet.getRow(rowIndex).height = 17.25;\n rowIndex += 1;\n });\n\n const bufferDataByDistrict = await workbook.xlsx.writeBuffer();\n\n zip.file(`${county}__統計數據.xlsx`, bufferDataByDistrict, { binary: true });\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport JSZip from 'jszip';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport cache from 'utilities/cache';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { download } from 'utilities/file';\nimport { request } from 'utilities/graph';\nimport writeYearly from './writeYearly';\nimport writeDisability from './writeDisability';\nimport writeMonthlyStatistics from './writeMonthlyStatistics';\nimport { counties } from '@silvergatedelivery/constants';\n\nimport { getClientMonthlyStatementsByClientIdByMonth } from 'graphql/queries';\n\nconst yearOptions = Array(3).fill('').map((x, index) => {\n return moment().add(-index, 'years').format('YYYY');\n});\n\nexport default function YearlyReport({ clientOptions: inClientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedYear, setSelectedYear] = useState(yearOptions[0]);\n const [selectedClientId, setSelectedClientId] = useState();\n const [selectedCounty, setSelectedCounty] = useState(counties[0]);\n const [clientOptions, setClientOptions] = useState([]);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n\n\n const updateCounty = (client) => {\n if (client && client.county) {\n const targetCounty = counties.find((county) => county === client.county);\n if (targetCounty) {\n setSelectedCounty(targetCounty);\n }\n }\n };\n\n useEffect(() => {\n const isFacilityAdmin = cache.get('app:facilityId');\n\n const clientOptions = JSON.parse(JSON.stringify(inClientOptions));\n if (!isFacilityAdmin && inClientOptions.length > 0 && inClientOptions[0].id !== 'N/A') {\n // clientOptions.unshift({\n // id: 'N/A',\n // name: '全部機構',\n // });\n }\n\n setClientOptions(clientOptions);\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n updateCounty(clientOptions[0]);\n }\n }, [inClientOptions]);\n\n\n const collectData = async () => {\n const months = Array(12).fill('').map((_, i) => {\n const month = i + 1 < 10 ? '0' + (i + 1) : i + 1;\n return `${selectedYear}-${month}`;\n });\n const {\n name,\n facilitySettings: { dba },\n } = clientOptions.find(({ id }) => id === selectedClientId) || {};\n\n const clientName = dba || name || '';\n\n global.logger.debug({\n clientName,\n selectedYear,\n monthes: months,\n });\n\n const clientStatements = [].concat(...await Promise.all(months.map(async (month) => {\n const { data: { getClientMonthlyStatementsByClientIdByMonth: { items } } } = await request(getClientMonthlyStatementsByClientIdByMonth, {\n clientId: selectedClientId,\n month: {\n eq: month,\n },\n });\n return items;\n })));\n\n const statementsFilterdByCounty = clientStatements.filter(({ county }) => county === selectedCounty);\n const zip = new JSZip();\n\n writeYearly(statementsFilterdByCounty, selectedCounty, includeUndeliveredOrders, zip);\n writeDisability(statementsFilterdByCounty, selectedYear, selectedCounty, includeUndeliveredOrders, zip);\n await writeMonthlyStatistics(clientName, statementsFilterdByCounty, selectedYear, selectedCounty, includeUndeliveredOrders, zip);\n\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedCounty}__${selectedYear}.zip`, zipContent);\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n
\n

年度報表

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n if (value) {\n const client = clientOptions.find(({ id }) => id === value);\n updateCounty(client);\n }\n }}\n />\n \n \n 年份\n setSelectedYear(event.target.value)}\n disabled={isLoading}\n >\n {yearOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 縣市\n setSelectedCounty(event.target.value)}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n
\n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n\nYearlyReport.propTypes = {\n clientOptions: PropTypes.array,\n};\n","export async function downloadImage(url) {\n try {\n const response = await fetch(url);\n const contentType = response.headers.get('Content-Type');\n if (!response.ok || !contentType.startsWith('image/')) {\n return;\n }\n const arrayBuffer = await response.arrayBuffer();\n return arrayBuffer;\n } catch (e) {\n console.error(e);\n return;\n }\n}\n\nexport const scaleImageDimensions = (img, maxDimension) => {\n const width = img.width;\n const height = img.height;\n const scale = Math.min(maxDimension / width, maxDimension / height, 1);\n return {\n width: width * scale,\n height: height * scale,\n };\n};\n\nexport async function loadImage(uri, maxDimension = 150) {\n try {\n const response = await fetch(uri);\n if (!response.ok) {\n throw new Error('Failed to fetch image');\n }\n const blob = await response.blob();\n const arrayBuffer = await blob.arrayBuffer();\n const img = new Image();\n img.src = URL.createObjectURL(blob);\n\n await new Promise((resolve, reject) => {\n img.onload = resolve;\n img.onerror = reject;\n });\n\n const { width, height } = scaleImageDimensions(img, maxDimension);\n\n return { imageBuffer: arrayBuffer, width, height };\n } catch (error) {\n console.error('Error loading image:', error);\n return { imageBuffer: null, width: 0, height: 0 };\n }\n}\n","import moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport { formatAddress } from 'utilities/format';\nimport { numberToChineseUpper } from '../CountyPrsReport/workbooks/helpers';\nimport ExcelJS from 'exceljs';\nimport { toastr } from 'react-redux-toastr';\nimport { Storage } from 'aws-amplify';\nimport { downloadImage, loadImage } from 'utilities/image';\n\nconst copaymentSetting = {\n 桃園市: {\n originalPrice: 100,\n 低收: {\n value: 0,\n label: '低收(全額補助100%)',\n },\n 中低收: {\n value: 10,\n label: '中低收(自行負擔10%)',\n },\n 一般: {\n value: 100,\n label: '一般戶',\n },\n },\n 雲林縣: {\n originalPrice: 100,\n 低收: {\n value: 0,\n label: '低收(全額補助100%)',\n },\n 中低收: {\n value: 10,\n label: '中低收(自行負擔10%)',\n },\n 一般: {\n value: 30,\n label: '一般戶(自行負擔30%)',\n },\n },\n 苗栗縣: {\n originalPrice: 100,\n // 低收: {\n // value: 0,\n // label: '低收',\n // },\n 中低收: {\n value: 10,\n label: '中低收',\n },\n 一般: {\n value: 100,\n label: '一般',\n },\n },\n};\n\nconst stampSetting = {\n 'e281a800-8ae3-11ec-823f-bbd2f0442830': { // 銀色大門-苗栗\n company: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/company.png',\n width: 150,\n height: 150,\n },\n chairman: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/chairman.png',\n width: 50,\n height: 50,\n },\n accountant: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/accountant.png',\n width: 50,\n height: 50,\n },\n handler: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/handler.png',\n width: 50,\n height: 50,\n },\n },\n};\n\nconst getSanitizedElderName = (name) => {\n const index = name.indexOf('(');\n const result = index !== -1 ? name.substring(0, index).trim() : name;\n return result\n .replace(/\\\\/g, '')\n .replace(/\\//g, '')\n .replace(/\\?/g, '')\n .replace(/\\*/g, '')\n .replace(/\\[/g, '')\n .replace(/\\]/g, '');\n};\n\nexport default async function issueReceipts({\n county: inCounty,\n elders: allElders,\n orders: allOrders,\n selectedMonth = 'YYYY-MM',\n client,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n selectedPaymentMethod = 'all',\n groupByDistrict = false,\n}) {\n const { name, facilitySettings: {\n dba, companyStampS3Keys, chairmanStampS3Keys, accountantStampS3Keys, handlerStampS3Keys, receiptInfo,\n } } = client;\n const { receiptType = 'triplicate', oneCopyOneSheet = false, reverseCopyType = false } = receiptInfo || {};\n const copyCount = receiptType === 'triplicate' ? 3 : 2;\n let copyType = {\n duplicate: ['存根聯', '個案收執聯'],\n triplicate: ['存根聯', '會計聯', '個案收執聯'],\n };\n if (reverseCopyType) {\n copyType = {\n duplicate: copyType.duplicate.reverse(),\n triplicate: copyType.triplicate.reverse(),\n };\n }\n const clientName = dba || name;\n let elders = allElders.filter(({ address }) => address.county === inCounty);\n if (selectedPaymentMethod !== 'all') {\n if (selectedPaymentMethod === 'none') {\n elders = elders.filter(({ paymentMethod }) => paymentMethod === null);\n } else {\n elders = elders.filter(({ paymentMethod }) => paymentMethod === selectedPaymentMethod);\n }\n }\n if (elders.length == 0) {\n toastr.error('沒有符合設定條件的送餐對象');\n }\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) =>\n ['送餐', '送餐和物資', '愛心餐', '自費餐'].includes(category));\n }\n if (orders.length === 0) {\n toastr.error('沒有符合設定條件的訂單');\n }\n const zip = new JSZip();\n const [year, month, day] = moment().tz(TIME_ZONE).format('YYYY-MM-DD').split('-');\n const yearMonthDayTitle = `中華民國${parseInt(year)-1911}年${month}月${day}日`;\n\n const stamp = stampSetting[client.id] || {};\n if (stamp) {\n await Promise.all(Object.keys(stamp).map(async (key) => {\n if (stamp[key] && stamp[key].file) {\n stamp[key].imageBuffer = await downloadImage(stamp[key].file);\n }\n }));\n }\n if (companyStampS3Keys) {\n const uri = await Storage.get(companyStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 150);\n if (imageBuffer) {\n stamp.company = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n if (chairmanStampS3Keys) {\n const uri = await Storage.get(chairmanStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 50);\n if (imageBuffer) {\n stamp.chairman = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n if (accountantStampS3Keys) {\n const uri = await Storage.get(accountantStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 50);\n if (imageBuffer) {\n stamp.accountant = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n if (handlerStampS3Keys) {\n const uri = await Storage.get(handlerStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 50);\n if (imageBuffer) {\n stamp.handler = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n let eldersGroup = elders.reduce((acc, elder) => {\n const key = elder.address.district;\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(elder);\n return acc;\n }, {});\n if (!groupByDistrict) {\n eldersGroup = { '': elders };\n }\n const bufferData = [];\n let receiptNo = 0;\n await Object.keys(eldersGroup).sort().reduce(async (chain, district) => {\n await chain;\n\n const elders = eldersGroup[district];\n const workbooks = [];\n const stampImages = [];\n Array(copyCount).fill().forEach(() => {\n workbooks.push(new ExcelJS.Workbook());\n stampImages.push({});\n });\n const worksheetName = [];\n\n const getExtensionFromURL = (url) => {\n const match = url.match(/\\.([a-zA-Z0-9]+)(?:\\?|$)/);\n return match ? match[1] : 'png';\n };\n\n if (stamp) {\n Object.keys(stamp).forEach((key) => {\n if (stamp[key].imageBuffer) {\n const extension = getExtensionFromURL(stamp[key].file);\n workbooks.forEach((workbook, index) => {\n const imageId = workbook.addImage({\n buffer: stamp[key].imageBuffer,\n extension,\n });\n stampImages[index][key] = {};\n stampImages[index][key].width = stamp[key].width;\n stampImages[index][key].height = stamp[key].height;\n stampImages[index][key].imageId = imageId;\n });\n }\n });\n }\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n const { id, name } = elder;\n const elderOrders = orders.filter(({ elderId }) => elderId === id);\n if (elderOrders.length === 0) {\n return;\n }\n let sanitizedElderName = getSanitizedElderName(name);\n let duplicatedNameCount = 0;\n if (worksheetName.includes(sanitizedElderName)) {\n duplicatedNameCount += 1;\n sanitizedElderName = sanitizedElderName + `(${duplicatedNameCount})`;\n } else {\n duplicatedNameCount = 0;\n }\n if (!oneCopyOneSheet) {\n const worksheet = workbooks[0].addWorksheet(sanitizedElderName, {\n pageSetup: {\n paperSize: 9,\n fitToPage: true,\n fitToWidth: 1,\n horizontalCentered: true,\n verticalCentered: true,\n orientation: 'portrait',\n },\n });\n const result = getWorksheetElder(worksheet, client, elder, elderOrders, yearMonthDayTitle, inCounty, selectedMonth, receiptNo, stampImages[0]);\n worksheet.pageSetup.margins = {\n left: 0.236, right: 0.236,\n top: 0.748, bottom: 0.748,\n header: 0.3, footer: 0.3,\n };\n if (!result) {\n workbooks[0].removeWorksheet(worksheet.id);\n } else {\n receiptNo += 1;\n worksheetName.push(sanitizedElderName);\n }\n } else {\n Array(copyCount).fill().forEach((_, copyIndex) => {\n const worksheet = workbooks[copyIndex].addWorksheet(`${sanitizedElderName}`, {\n pageSetup: {\n paperSize: 11,\n fitToPage: true,\n fitToWidth: 1,\n horizontalCentered: true,\n verticalCentered: true,\n orientation: 'landscape',\n },\n });\n const result = getWorksheetElder(\n worksheet, client, elder, elderOrders, yearMonthDayTitle, inCounty, selectedMonth, receiptNo, stampImages[copyIndex], copyIndex,\n );\n worksheet.pageSetup.margins = {\n left: 0.236 / 2, right: 0.236 / 2,\n top: 0.748 / 2, bottom: 0.748 / 2,\n header: 0.3 / 2, footer: 0.3 / 2,\n };\n if (!result) {\n workbooks[copyIndex].removeWorksheet(worksheet.id);\n return;\n } else {\n if (copyIndex === copyCount - 1) {\n receiptNo += 1;\n worksheetName.push(sanitizedElderName);\n }\n }\n });\n }\n });\n if (!oneCopyOneSheet) {\n try {\n if (workbooks[0] && workbooks[0].worksheets && workbooks[0].worksheets.length > 0) {\n const bufferDataByDistrict = await workbooks[0].xlsx.writeBuffer();\n if (process.env.JEST_WORKER_ID) {\n bufferData.push(bufferDataByDistrict);\n return;\n }\n zip.file(`${inCounty}${district}餐飲服務費收據__${selectedMonth}.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n } else {\n try {\n await Promise.all(Array(copyCount).fill().map(async (_, copyIndex) => {\n if (workbooks[copyIndex] && workbooks[copyIndex].worksheets && workbooks[copyIndex].worksheets.length > 0) {\n const bufferDataByDistrict = await workbooks[copyIndex].xlsx.writeBuffer();\n if (process.env.JEST_WORKER_ID) {\n bufferData.push(bufferDataByDistrict);\n return;\n }\n zip.file(`${inCounty}${district}餐飲服務費收據__${selectedMonth}_${copyType[receiptType][copyIndex]}.xlsx`, bufferDataByDistrict, { binary: true });\n }\n }));\n } catch (e) {\n console.error(e);\n }\n }\n }, Promise.resolve());\n\n if (process.env.JEST_WORKER_ID) {\n return bufferData;\n }\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedMonth}餐飲服務費收據.zip`, zipContent);\n }\n}\n\nfunction getWorksheetElder(worksheet, client, elder, elderOrders = [], yearMonthDayTitle, county, selectedMonth, receiptNo, stampImages, copyIndex = -1) {\n const {\n name, facilitySettings: { dba, receiptInfo }, address: clientAddress, phoneNumber,\n } = client;\n const { receiptType = 'triplicate', taxIdNumber, faxNumber,\n bankName, accountNumber, accountName,\n bankName2, accountNumber2, accountName2,\n bankName3, accountNumber3, accountName3,\n chairmanName='', accountantName='', handlerName='',\n note, managerTitle, reverseCopyType } = receiptInfo || {};\n const clientName = dba || name;\n const elderRows = [];\n const {\n name: elderName,\n identificationCardId,\n disadvantagedTypes,\n disadvantagedTypesSlot,\n cmsLevel,\n caseNumber,\n paymentBankIndex,\n } = elder;\n\n let displayedBankName = bankName;\n let displayedAccountNumber = accountNumber;\n let displayedAccountName = accountName;\n if (paymentBankIndex === 2) {\n displayedBankName = bankName2;\n displayedAccountNumber = accountNumber2;\n displayedAccountName = accountName2;\n } else if (paymentBankIndex === 3) {\n displayedBankName = bankName3;\n displayedAccountNumber = accountNumber3;\n displayedAccountName = accountName3;\n }\n\n let clientCopaymentSetting = copaymentSetting[county];\n if (client?.facilitySettings?.receiptSettings) {\n const { originalPrice = 0, copaymentSettings = [] } = client?.facilitySettings?.receiptSettings;\n if (originalPrice && copaymentSettings.length !== 0) {\n clientCopaymentSetting = {\n originalPrice,\n };\n copaymentSettings.forEach(({ disadvantagedType, disadvantagedLabel, copayment }) => {\n clientCopaymentSetting[disadvantagedType] = {\n label: disadvantagedLabel,\n value: copayment,\n };\n });\n }\n }\n\n if (!clientCopaymentSetting) {\n toastr.error('請先新增收據費用設定');\n return;\n }\n\n let total = 0;\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n const filteredOrders = elderOrders.filter(({ date, category }) =>\n date >= start && date < end && ['送餐', '送餐和物資'].includes(category));\n if (filteredOrders.length === 0) {\n return;\n }\n if (type === '長照中低收') { // workaround for 展橙\n type = '中低收';\n }\n if (!clientCopaymentSetting || clientCopaymentSetting[type] === undefined) {\n toastr.warning(`${elder.name}的\"${type}\"身份沒有對應的收據費用設定`);\n return;\n }\n const copayment = clientCopaymentSetting[type].value || 0;\n elderRows.push({\n 服務編號: 'OT01[營養餐飲]',\n 福利身份別: clientCopaymentSetting[type].label,\n 原價: clientCopaymentSetting.originalPrice,\n 部分負擔: copayment,\n 使用次數: filteredOrders.length,\n 小計: copayment * filteredOrders.length,\n });\n total += copayment * filteredOrders.length;\n });\n } else {\n const filteredOrders = elderOrders.filter(({ date, category }) => ['送餐', '送餐和物資'].includes(category));\n if (filteredOrders.length === 0) {\n return;\n }\n if (!clientCopaymentSetting || clientCopaymentSetting[disadvantagedTypes] === undefined) {\n return;\n }\n const copayment = clientCopaymentSetting[disadvantagedTypes].value || 0;\n elderRows.push({\n 服務編號: 'OT01[營養餐飲]',\n 福利身份別: clientCopaymentSetting[disadvantagedTypes].label,\n 原價: clientCopaymentSetting.originalPrice,\n 部分負擔: copayment,\n 使用次數: filteredOrders.length,\n 小計: copayment * filteredOrders.length,\n });\n total += copayment * filteredOrders.length;\n }\n elderOrders.forEach(({ category, mealItems, total: orderTotal }) => {\n let orderTotalWithoutSurcharge = orderTotal;\n if (mealItems) {\n mealItems.forEach(({ surcharges }) => {\n if (surcharges) {\n surcharges.forEach(({ name, price }) => {\n const rowIndex = elderRows.findIndex((elderRow) => elderRow['服務編號'] === name && elderRow['自費單價'] === price);\n if (rowIndex === -1) {\n elderRows.push({\n 服務編號: name,\n 福利身份別: '全自費',\n 自費單價: price,\n 自費次數: 1,\n 小計: price,\n });\n } else {\n elderRows[rowIndex]['自費次數'] += 1;\n elderRows[rowIndex]['小計'] += price;\n }\n total += price;\n orderTotalWithoutSurcharge -= price;\n });\n }\n });\n }\n if (category === '愛心餐') {\n const rowIndex = elderRows.findIndex((elderRow) => elderRow['服務編號'] === '愛心餐');\n if (rowIndex === -1) {\n elderRows.push({\n 服務編號: '愛心餐',\n 福利身份別: '',\n 自費單價: 0,\n 自費次數: 1,\n 小計: 0,\n });\n } else {\n elderRows[rowIndex]['自費次數'] += 1;\n }\n } else if (category === '自費餐') {\n const rowIndex = elderRows.findIndex((elderRow) => elderRow['服務編號'] === '自費餐');\n if (rowIndex === -1) {\n elderRows.push({\n 服務編號: '自費餐',\n 福利身份別: '',\n 自費單價: orderTotalWithoutSurcharge,\n 自費次數: 1,\n 小計: orderTotalWithoutSurcharge,\n });\n } else {\n elderRows[rowIndex]['自費次數'] += 1;\n elderRows[rowIndex]['小計'] += orderTotalWithoutSurcharge;\n }\n total += orderTotalWithoutSurcharge;\n }\n });\n const serviceDates = elderOrders.map(({ date, mealSlot }) => {\n const formattedDate = moment(date).format('MM/DD');\n return {\n date: formattedDate,\n slot: mealSlot === 'lunch'? '午' : '晚',\n };\n }).sort((a, b) => {\n if (a.date > b.date) return 1;\n if (a.date < b.date) return -1;\n if (a.slot === '午') return -1;\n });\n let serviceDatesString = '';\n let previousDate = '';\n let serviceDays = 0;\n serviceDates.forEach(({ date, slot }, index) => {\n if (previousDate !== date) {\n if (index !== 0) {\n serviceDatesString += '、';\n }\n // if (serviceDays !== 0 && serviceDays % 7 === 0) {\n // serviceDatesString += '\\n';\n // }\n serviceDatesString += date + ' ' + slot;\n serviceDays += 1;\n } else {\n serviceDatesString += slot;\n }\n previousDate = date;\n });\n\n const elderRowsCount = elderRows.length;\n\n if (elderRowsCount === 0) {\n return;\n }\n\n let copyType = {\n duplicate: [\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n存\\n根\\n聯',\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n ],\n triplicate: [\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n存\\n根\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n會\\n計\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n三\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n ],\n };\n if (reverseCopyType) {\n copyType = {\n duplicate: [\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n存\\n根\\n聯',\n ],\n triplicate: [\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n會\\n計\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n三\\n聯\\n:\\n存\\n根\\n聯',\n ],\n };\n }\n if (copyIndex !== -1) {\n copyType[receiptType] = [copyType[receiptType][copyIndex]];\n }\n worksheet.columns = [\n { header: '', key: 'A', width: 6.15 },\n { header: '', key: 'B', width: 5.78 },\n { header: '', key: 'C', width: 4.70 },\n { header: '', key: 'D', width: 6.15 },\n { header: '', key: 'E', width: 6.15 },\n { header: '', key: 'F', width: 9.68 },\n { header: '', key: 'G', width: 6.03 },\n { header: '', key: 'H', width: 6.03 },\n { header: '', key: 'I', width: 6.03 },\n { header: '', key: 'J', width: 6.03 },\n { header: '', key: 'K', width: 6.03 },\n { header: '', key: 'L', width: 6.03 },\n { header: '', key: 'M', width: 6.03 },\n { header: '', key: 'N', width: 6.03 },\n { header: '', key: 'O', width: 6.03 },\n { header: '', key: 'P', width: 6.03 },\n { header: '', key: 'Q', width: 6.03 },\n { header: '', key: 'R', width: 6.03 },\n { header: '', key: 'S', width: 2.75 },\n ];\n\n let rowIndex = 1;\n let copyCount = 0;\n const defaultRowHeight = 15.75;\n const fontName = 'Microsoft YaHei';\n while (copyCount < copyType[receiptType].length) {\n worksheet.mergeCells(`A${rowIndex}:S${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = clientName;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { bold: true, size: 16, name: fontName };\n worksheet.getRow(rowIndex++).height = 23.25;\n worksheet.getRow(rowIndex++).height = 17.25;\n\n worksheet.mergeCells(`A${rowIndex}:E${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `流水號編號:${selectedMonth.replace('-', '')}${receiptNo.toString().padStart(3, '0')}`;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.mergeCells(`F${rowIndex}:M${rowIndex}`);\n worksheet.getCell(`F${rowIndex}`).value = '收據明細';\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 10, name: fontName };\n worksheet.mergeCells(`N${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`N${rowIndex}`).value = `列表日:${yearMonthDayTitle}`;\n worksheet.getCell(`N${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`N${rowIndex}`).alignment = { horizontal: 'right', vertical: 'middle' };\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n worksheet.mergeCells(`A${rowIndex}:E${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `身分證字號:${identificationCardId || ''}`;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n\n worksheet.mergeCells(`F${rowIndex}:M${rowIndex + 1}`);\n worksheet.getCell(`F${rowIndex}`).value = `${selectedMonth.replace('-', '年')}月 長期照顧營養餐飲服務費`;\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { bold: true, size: 11, name: fontName };\n\n worksheet.mergeCells(`N${rowIndex}:R${rowIndex}`);\n const caseNumberString = caseNumber ? `案號:${caseNumber}` : '';\n worksheet.getCell(`N${rowIndex}`).value = caseNumberString;\n worksheet.getCell(`N${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`N${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getRow(rowIndex++).height = 18;\n\n worksheet.mergeCells(`A${rowIndex}:E${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `此致 ${getSanitizedElderName(elderName)} 台照`;\n worksheet.getCell(`A${rowIndex}`).font = { bold: true, size: 10, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.mergeCells(`N${rowIndex}:R${rowIndex}`);\n const cmsLevelString = cmsLevel ? `失能等級:${cmsLevel}` : '';\n worksheet.getCell(`N${rowIndex}`).value = cmsLevelString;\n worksheet.getCell(`N${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`N${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getRow(rowIndex++).height = 18;\n\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n worksheet.getRow(rowIndex).font = { size: 9, name: fontName };\n worksheet.getRow(rowIndex).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).value = '服務編號';\n worksheet.mergeCells(`D${rowIndex}:F${rowIndex}`);\n worksheet.getCell(`D${rowIndex}`).value = '福利身份別';\n worksheet.mergeCells(`G${rowIndex}:H${rowIndex}`);\n worksheet.getCell(`G${rowIndex}`).value = '原價';\n worksheet.mergeCells(`I${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`I${rowIndex}`).value = '部分負擔';\n worksheet.mergeCells(`K${rowIndex}:L${rowIndex}`);\n worksheet.getCell(`K${rowIndex}`).value = '使用次數';\n worksheet.mergeCells(`M${rowIndex}:N${rowIndex}`);\n worksheet.getCell(`M${rowIndex}`).value = '自費單價';\n worksheet.mergeCells(`O${rowIndex}:P${rowIndex}`);\n worksheet.getCell(`O${rowIndex}`).value = '自費次數';\n worksheet.mergeCells(`Q${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`Q${rowIndex}`).value = '小計';\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thick' }, right: { style: 'thin' }, left: { style: 'thick' } };\n ['D', 'G', 'I', 'K', 'M', 'O'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { top: { style: 'thick' }, right: { style: 'thin' } };\n });\n worksheet.getCell(`Q${rowIndex}`).border = { top: { style: 'thick' }, right: { style: 'thick' } };\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n elderRows.forEach((elderRow) => {\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n worksheet.getRow(rowIndex).font = { size: 9, name: fontName };\n worksheet.getRow(rowIndex).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).value = elderRow['服務編號'];\n worksheet.mergeCells(`D${rowIndex}:F${rowIndex}`);\n worksheet.getCell(`D${rowIndex}`).value = elderRow['福利身份別'];\n worksheet.mergeCells(`G${rowIndex}:H${rowIndex}`);\n worksheet.getCell(`G${rowIndex}`).value = elderRow['原價'];\n worksheet.mergeCells(`I${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`I${rowIndex}`).value = elderRow['部分負擔'];\n worksheet.mergeCells(`K${rowIndex}:L${rowIndex}`);\n worksheet.getCell(`K${rowIndex}`).value = elderRow['使用次數'];\n worksheet.mergeCells(`M${rowIndex}:N${rowIndex}`);\n worksheet.getCell(`M${rowIndex}`).value = elderRow['自費單價'];\n worksheet.mergeCells(`O${rowIndex}:P${rowIndex}`);\n worksheet.getCell(`O${rowIndex}`).value = elderRow['自費次數'];\n worksheet.mergeCells(`Q${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`Q${rowIndex}`).value = elderRow['小計'];\n\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thick' } };\n ['D', 'G', 'I', 'K', 'M', 'O'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' } };\n });\n worksheet.getCell(`Q${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thick' } };\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n });\n\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `服務天數:${serviceDays}`;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thick' } };\n worksheet.mergeCells(`D${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`D${rowIndex}`).value = serviceDatesString;\n worksheet.getCell(`D${rowIndex}`).font = { size: 9, name: 'Calibri' };\n worksheet.getCell(`D${rowIndex}`).alignment = { horizontal: 'left', vertical: 'top', wrapText: true };\n worksheet.getCell(`D${rowIndex}`).border = {\n top: { style: 'thin' }, right: { style: 'thick' }, left: { style: 'thin' }, bottom: { style: 'thin' },\n };\n worksheet.getRow(rowIndex++).height = defaultRowHeight * 5;\n\n const clientInfo = [`地址:${formatAddress(clientAddress, { includeZipCode: false })}`];\n if (taxIdNumber) {\n clientInfo.push(`統一編號: ${taxIdNumber}`);\n }\n if (phoneNumber) {\n clientInfo.push(`電話:${phoneNumber}`);\n }\n if (faxNumber) {\n clientInfo.push(`傳真:${faxNumber}`);\n }\n if (displayedBankName) {\n clientInfo.push(`銀行名稱:${displayedBankName}`);\n }\n if (displayedAccountNumber) {\n clientInfo.push(`匯款帳號:${displayedAccountNumber}`);\n }\n if (displayedAccountName) {\n clientInfo.push(`帳戶名:${displayedAccountName}`);\n }\n if (note) {\n clientInfo.push(`備註:${note}`);\n }\n const rowHeights = [];\n worksheet.mergeCells(`A${rowIndex}:F${rowIndex + 7}`);\n const clientInfoString = clientInfo.join('\\n');\n worksheet.getCell(`A${rowIndex}`).value = clientInfoString;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'top', wrapText: true };\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thick' } };\n worksheet.mergeCells(`G${rowIndex}:N${rowIndex + 3}`);\n worksheet.getCell(`G${rowIndex}`).value = `費用總計:$ ${total}`;\n worksheet.getCell(`G${rowIndex}`).font = { bold: true, size: 9.5, name: fontName };\n worksheet.getCell(`G${rowIndex}`).alignment = { vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.mergeCells(`O${rowIndex}:R${rowIndex + 7}`);\n worksheet.getCell(`O${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thick' }, left: { style: 'thin' } };\n for (let i = 0; i < 4; i++) {\n worksheet.getRow(rowIndex++).height = rowHeights[i] || defaultRowHeight;\n }\n\n worksheet.mergeCells(`G${rowIndex}:N${rowIndex + 3}`);\n worksheet.getCell(`G${rowIndex}`).value = `茲收到新台幣 ${numberToChineseUpper(total)} 元整`;\n worksheet.getCell(`G${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`G${rowIndex}`).alignment = { vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n for (let i = 0; i < 4; i++) {\n worksheet.getRow(rowIndex++).height = rowHeights[i + 4] || defaultRowHeight;\n }\n\n worksheet.mergeCells(`S${rowIndex - 10 - elderRowsCount}:S${rowIndex - 1}`);\n worksheet.getCell(`S${rowIndex - 10 - elderRowsCount}`).value = copyType[receiptType][copyCount];\n worksheet.getCell(`S${rowIndex - 10 - elderRowsCount}`).font = { size: 6, name: fontName };\n worksheet.getCell(`S${rowIndex - 10 - elderRowsCount}`).alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };\n\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n if (stampImages.chairman && stampImages.chairman.imageId !== undefined) {\n worksheet.getCell(`A${rowIndex}`).value = managerTitle ? `${managerTitle}:` : '理事長:';\n } else {\n worksheet.getCell(`A${rowIndex}`).value = managerTitle ? `${managerTitle}: ${chairmanName || ''}` : `理事長: ${chairmanName || ''}`;\n }\n worksheet.mergeCells(`G${rowIndex}:I${rowIndex}`);\n if (stampImages.accountant && stampImages.accountant.imageId !== undefined) {\n worksheet.getCell(`G${rowIndex}`).value = '會計:';\n } else {\n worksheet.getCell(`G${rowIndex}`).value = `會計: ${accountantName || ''}`;\n }\n worksheet.mergeCells(`M${rowIndex}:O${rowIndex}`);\n if (stampImages.handler && stampImages.handler.imageId !== undefined) {\n worksheet.getCell(`M${rowIndex}`).value = '經手人:';\n } else {\n worksheet.getCell(`M${rowIndex}`).value = `經手人: ${handlerName || ''}`;\n }\n worksheet.getRow(rowIndex).font = { size: 9, name: fontName };\n worksheet.getRow(rowIndex).alignment = { horizontal: 'left', vertical: 'middle' };\n ['A', 'C', 'D', 'E', 'F', 'G', 'I', 'J', 'K', 'L', 'M', 'O', 'P', 'Q', 'R'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { top: { style: 'thick' } };\n });\n if (stampImages.company && stampImages.company.imageId !== undefined) {\n worksheet.addImage(stampImages.company.imageId, {\n tl: { col: 14 + 0.3, row: rowIndex - 9 + 0.3 },\n ext: { width: stampImages.company.width, height: stampImages.company.height },\n });\n }\n if (stampImages.chairman && stampImages.chairman.imageId !== undefined) {\n worksheet.addImage(stampImages.chairman.imageId, {\n tl: { col: 1 + 0.3, row: rowIndex - 1 + 0.3 },\n ext: { width: stampImages.chairman.width, height: stampImages.chairman.height },\n });\n }\n if (stampImages.accountant && stampImages.accountant.imageId !== undefined) {\n worksheet.addImage(stampImages.accountant.imageId, {\n tl: { col: 7 + 0.3, row: rowIndex - 1 + 0.3 },\n ext: { width: stampImages.accountant.width, height: stampImages.accountant.height },\n });\n }\n if (stampImages.handler && stampImages.handler.imageId !== undefined) {\n worksheet.addImage(stampImages.handler.imageId, {\n tl: { col: 13 + 0.3, row: rowIndex - 1 + 0.3 },\n ext: { width: stampImages.handler.width, height: stampImages.handler.height },\n });\n }\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n copyCount++;\n\n if (copyCount < copyType[receiptType].length) {\n ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { bottom: { style: 'dashDot' } };\n });\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n }\n }\n\n worksheet.pageSetup.printArea = `A1:S${rowIndex}`;\n\n return worksheet;\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { elderPaymentMethod } from '@silvergatedelivery/constants';\nimport LabelWithToolTip from '../LabelWithToolTip';\n\nimport {\n counties,\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { asyncListAll, request } from 'utilities/graph';\n\nimport issueReceipts from './issueReceipts';\n\nimport {\n getEldersByClientByStatus,\n getOrdersByClientByDate,\n getPandagoOrdersByOrderByCreatedAt,\n} from '../queries';\nimport { getClient } from 'graphql/queries';\n\nimport { processShareOrder, processDisadvantagedTypes } from '../CountyPrsReport/workbooks/helpers';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function ElderReceipt({ clientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [selectedCounty, setSelectedCounty] = useState(counties[0]);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeInactiveElders, setIncludeInactiveElders] = useState(false);\n const [includeNonDisElders, setIncludeNonDisElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState('all');\n const [groupByDistrict, setGroupByDistrict] = useState(true);\n const excludeNonFoodDeliveryOrders = true;\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n // const monthString = from.format('YYYY/MM');\n const period = `${fromDate}__${toDate}`;\n const { id: clientId } = clientOptions.find(({ id }) => id === selectedClientId);\n\n global.logger.debug({\n selectedClientId,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n elders,\n orders,\n { data: { getClient: client } },\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: includeInactiveElders ? undefined : { eq: '使用中' },\n filter: includeNonDisElders ? undefined : {\n isDisadvantaged: {\n eq: 1,\n },\n },\n limit: 1000,\n }),\n asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n request(getClient, { id: clientId }),\n ]);\n\n const deliveryStaffIds = [];\n orders.forEach(({ deliveryStaffId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n });\n\n let pandagoDeliveryStaffId;\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n username\n identificationCardId\n }\n }\n `, { id });\n\n if (data.username === 'pandago') {\n pandagoDeliveryStaffId = id;\n }\n\n return data;\n }));\n\n const pandagoOrders = await Promise.all(orders\n .filter(({ deliveryStaffId }) => deliveryStaffId === pandagoDeliveryStaffId)\n .map(async ({ id: orderId }) => {\n const [pandagoOrder] = await asyncListAll(getPandagoOrdersByOrderByCreatedAt, {\n orderId,\n limit: 1,\n });\n\n return pandagoOrder;\n }));\n\n processShareOrder(elders, orders);\n processDisadvantagedTypes(selectedMonth, elders);\n\n issueReceipts({\n county: selectedCounty,\n elders, orders, deliveryStaffs, pandagoOrders, selectedMonth, client, includeUndeliveredOrders, excludeNonFoodDeliveryOrders,\n selectedPaymentMethod, groupByDistrict,\n });\n };\n\n const triggerDownload = async () => {\n try {\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n\n const updateCounty = (client) => {\n if (client && client.county) {\n const targetCounty = counties.find((county) => county === client.county);\n if (targetCounty) {\n setSelectedCounty(targetCounty);\n }\n }\n };\n\n useEffect(() => {\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n updateCounty(clientOptions[0]);\n }\n }, [clientOptions]);\n\n return (\n
\n

餐飲服務費收據(弱勢長輩)

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n if (value) {\n const client = clientOptions.find(({ id }) => id === value);\n updateCounty(client);\n }\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 縣市\n setSelectedCounty(event.target.value)}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 收費方式\n setSelectedPaymentMethod(event.target.value)}\n disabled={isLoading}\n >\n \n 全部\n \n {/* value是'null', 會無法顯示'無', 用'none'處理 */}\n {elderPaymentMethod.map(({ value, label }) => (\n \n {label}\n \n ))}\n \n \n
\n
\n {\n setIncludeNonDisElders(e.target.checked);\n }}\n />\n }\n label={}\n />\n {\n setIncludeInactiveElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n {\n setGroupByDistrict(e.target.checked);\n }}\n />\n }\n label={}\n />\n
\n\n \n 下載\n {isLoading && }\n \n
\n );\n}\n\nElderReceipt.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport { formatAddress } from 'utilities/format';\nimport { numberToChineseUpper } from '../CountyPrsReport/workbooks/helpers';\nimport ExcelJS from 'exceljs';\nimport { toastr } from 'react-redux-toastr';\nimport { Storage } from 'aws-amplify';\nimport { downloadImage, loadImage } from 'utilities/image';\n\nconst stampSetting = {\n 'e281a800-8ae3-11ec-823f-bbd2f0442830': { // 銀色大門-苗栗\n company: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/company.png',\n width: 150,\n height: 150,\n },\n chairman: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/chairman.png',\n width: 50,\n height: 50,\n },\n accountant: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/accountant.png',\n width: 50,\n height: 50,\n },\n handler: {\n file: '/images/receipt/e281a800-8ae3-11ec-823f-bbd2f0442830/handler.png',\n width: 50,\n height: 50,\n },\n },\n};\n\nconst getSanitizedElderName = (name) => {\n const index = name.indexOf('(');\n const result = index !== -1 ? name.substring(0, index).trim() : name;\n return result\n .replace(/\\\\/g, '')\n .replace(/\\//g, '')\n .replace(/\\?/g, '')\n .replace(/\\*/g, '')\n .replace(/\\[/g, '')\n .replace(/\\]/g, '');\n};\n\nexport default async function issueReceipts({\n county: inCounty,\n elders: allElders,\n orders: allOrders,\n selectedMonth = 'YYYY-MM',\n client,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n selectedPaymentMethod = 'all',\n groupByDistrict = false,\n}) {\n const { name, facilitySettings: {\n dba, companyStampS3Keys, chairmanStampS3Keys, accountantStampS3Keys, handlerStampS3Keys, receiptInfo,\n } } = client;\n const { receiptType = 'triplicate', oneCopyOneSheet = false, reverseCopyType = false } = receiptInfo || {};\n const copyCount = receiptType === 'triplicate' ? 3 : 2;\n let copyType = {\n duplicate: ['存根聯', '個案收執聯'],\n triplicate: ['存根聯', '會計聯', '個案收執聯'],\n };\n if (reverseCopyType) {\n copyType = {\n duplicate: copyType.duplicate.reverse(),\n triplicate: copyType.triplicate.reverse(),\n };\n }\n const clientName = dba || name;\n let elders = allElders.filter(({ address }) => address.county === inCounty);\n if (selectedPaymentMethod !== 'all') {\n if (selectedPaymentMethod === 'none') {\n elders = elders.filter(({ paymentMethod }) => paymentMethod === null);\n } else {\n elders = elders.filter(({ paymentMethod }) => paymentMethod === selectedPaymentMethod);\n }\n }\n if (elders.length == 0) {\n toastr.error('沒有符合設定條件的送餐對象');\n }\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) => category === '送餐' || category === '送餐和物資');\n }\n if (orders.length === 0) {\n toastr.error('沒有符合設定條件的訂單');\n }\n const zip = new JSZip();\n const [year, month, day] = moment().tz(TIME_ZONE).format('YYYY-MM-DD').split('-');\n const yearMonthDayTitle = `中華民國${parseInt(year)-1911}年${month}月${day}日`;\n\n const stamp = stampSetting[client.id] || {};\n if (stamp) {\n await Promise.all(Object.keys(stamp).map(async (key) => {\n if (stamp[key] && stamp[key].file) {\n stamp[key].imageBuffer = await downloadImage(stamp[key].file);\n }\n }));\n }\n if (companyStampS3Keys) {\n const uri = await Storage.get(companyStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 150);\n if (imageBuffer) {\n stamp.company = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n if (chairmanStampS3Keys) {\n const uri = await Storage.get(chairmanStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 50);\n if (imageBuffer) {\n stamp.chairman = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n if (accountantStampS3Keys) {\n const uri = await Storage.get(accountantStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 50);\n if (imageBuffer) {\n stamp.accountant = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n if (handlerStampS3Keys) {\n const uri = await Storage.get(handlerStampS3Keys[0]);\n const { imageBuffer, width, height } = await loadImage(uri, 50);\n if (imageBuffer) {\n stamp.handler = {\n file: uri,\n imageBuffer,\n width,\n height,\n };\n }\n }\n let eldersGroup = elders.reduce((acc, elder) => {\n const key = elder.address.district;\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(elder);\n return acc;\n }, {});\n if (!groupByDistrict) {\n eldersGroup = { '': elders };\n }\n const bufferData = [];\n let receiptNo = 0;\n await Object.keys(eldersGroup).sort().reduce(async (chain, district) => {\n await chain;\n\n const elders = eldersGroup[district];\n const workbooks = [];\n const stampImages = [];\n Array(copyCount).fill().forEach(() => {\n workbooks.push(new ExcelJS.Workbook());\n stampImages.push({});\n });\n const worksheetName = [];\n\n const getExtensionFromURL = (url) => {\n const match = url.match(/\\.([a-zA-Z0-9]+)(?:\\?|$)/);\n return match ? match[1] : 'png';\n };\n\n if (stamp) {\n Object.keys(stamp).forEach((key) => {\n if (stamp[key].imageBuffer) {\n const extension = getExtensionFromURL(stamp[key].file);\n workbooks.forEach((workbook, index) => {\n const imageId = workbook.addImage({\n buffer: stamp[key].imageBuffer,\n extension,\n });\n stampImages[index][key] = {};\n stampImages[index][key].width = stamp[key].width;\n stampImages[index][key].height = stamp[key].height;\n stampImages[index][key].imageId = imageId;\n });\n }\n });\n }\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n const { id, name } = elder;\n const elderOrders = orders.filter(({ elderId }) => elderId === id);\n if (elderOrders.length === 0) {\n return;\n }\n let sanitizedElderName = getSanitizedElderName(name);\n let duplicatedNameCount = 0;\n if (worksheetName.includes(sanitizedElderName)) {\n duplicatedNameCount += 1;\n sanitizedElderName = sanitizedElderName + `(${duplicatedNameCount})`;\n } else {\n duplicatedNameCount = 0;\n }\n if (!oneCopyOneSheet) {\n const worksheet = workbooks[0].addWorksheet(sanitizedElderName, {\n pageSetup: {\n paperSize: 9,\n fitToPage: true,\n fitToWidth: 1,\n horizontalCentered: true,\n verticalCentered: true,\n orientation: 'portrait',\n },\n });\n const result = getWorksheetElder(worksheet, client, elder, elderOrders, yearMonthDayTitle, inCounty, selectedMonth, receiptNo, stampImages[0]);\n worksheet.pageSetup.margins = {\n left: 0.236, right: 0.236,\n top: 0.748, bottom: 0.748,\n header: 0.3, footer: 0.3,\n };\n if (!result) {\n workbooks[0].removeWorksheet(worksheet.id);\n } else {\n receiptNo += 1;\n worksheetName.push(sanitizedElderName);\n }\n } else {\n Array(copyCount).fill().forEach((_, copyIndex) => {\n const worksheet = workbooks[copyIndex].addWorksheet(`${sanitizedElderName}`, {\n pageSetup: {\n paperSize: 11,\n fitToPage: true,\n fitToWidth: 1,\n horizontalCentered: true,\n verticalCentered: true,\n orientation: 'landscape',\n },\n });\n const result = getWorksheetElder(\n worksheet, client, elder, elderOrders, yearMonthDayTitle, inCounty, selectedMonth, receiptNo, stampImages[copyIndex], copyIndex,\n );\n worksheet.pageSetup.margins = {\n left: 0.236 / 2, right: 0.236 / 2,\n top: 0.748 / 2, bottom: 0.748 / 2,\n header: 0.3 / 2, footer: 0.3 / 2,\n };\n if (!result) {\n workbooks[copyIndex].removeWorksheet(worksheet.id);\n return;\n } else {\n if (copyIndex === copyCount - 1) {\n receiptNo += 1;\n worksheetName.push(sanitizedElderName);\n }\n }\n });\n }\n });\n if (!oneCopyOneSheet) {\n try {\n if (workbooks[0] && workbooks[0].worksheets && workbooks[0].worksheets.length > 0) {\n const bufferDataByDistrict = await workbooks[0].xlsx.writeBuffer();\n if (process.env.JEST_WORKER_ID) {\n bufferData.push(bufferDataByDistrict);\n return;\n }\n zip.file(`${inCounty}${district}餐飲服務費收據(自費戶)__${selectedMonth}.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n } else {\n try {\n await Promise.all(Array(copyCount).fill().map(async (_, copyIndex) => {\n if (workbooks[copyIndex] && workbooks[copyIndex].worksheets && workbooks[copyIndex].worksheets.length > 0) {\n const bufferDataByDistrict = await workbooks[copyIndex].xlsx.writeBuffer();\n if (process.env.JEST_WORKER_ID) {\n bufferData.push(bufferDataByDistrict);\n return;\n }\n zip.file(`${inCounty}${district}餐飲服務費收據(自費戶)__${selectedMonth}_${copyType[receiptType][copyIndex]}.xlsx`, bufferDataByDistrict, { binary: true });\n }\n }));\n } catch (e) {\n console.error(e);\n }\n }\n }, Promise.resolve());\n\n if (process.env.JEST_WORKER_ID) {\n return bufferData;\n }\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedMonth}餐飲服務費收據(自費戶).zip`, zipContent);\n }\n}\n\nfunction getWorksheetElder(worksheet, client, elder, elderOrders = [], yearMonthDayTitle, county, selectedMonth, receiptNo, stampImages, copyIndex = -1) {\n const {\n name, facilitySettings: { dba, receiptInfo }, address: clientAddress, phoneNumber,\n } = client;\n const { receiptType = 'triplicate', taxIdNumber, faxNumber,\n bankName, accountNumber, accountName,\n bankName2, accountNumber2, accountName2,\n bankName3, accountNumber3, accountName3,\n chairmanName='', accountantName='', handlerName='',\n note, managerTitle, reverseCopyType } = receiptInfo || {};\n const clientName = dba || name;\n const elderRows = [];\n const {\n name: elderName,\n identificationCardId,\n cmsLevel,\n caseNumber,\n paymentBankIndex,\n } = elder;\n\n let displayedBankName = bankName;\n let displayedAccountNumber = accountNumber;\n let displayedAccountName = accountName;\n if (paymentBankIndex === 2) {\n displayedBankName = bankName2;\n displayedAccountNumber = accountNumber2;\n displayedAccountName = accountName2;\n } else if (paymentBankIndex === 3) {\n displayedBankName = bankName3;\n displayedAccountNumber = accountNumber3;\n displayedAccountName = accountName3;\n }\n\n let total = 0;\n if (elderOrders.length === 0) {\n return;\n }\n\n elderOrders.forEach(({ total: orderTotal, mealItems }) => {\n let orderTotalWithoutSurcharge = orderTotal;\n mealItems.forEach(({ surcharges }) => {\n if (surcharges) {\n surcharges.forEach(({ name, price }) => {\n const rowIndex = elderRows.findIndex((elderRow) => elderRow['服務編號'] === name && elderRow['自費單價'] === price);\n if (rowIndex === -1) {\n elderRows.push({\n 服務編號: name,\n 福利身份別: '全自費',\n 自費單價: price,\n 自費次數: 1,\n 小計: price,\n });\n } else {\n elderRows[rowIndex]['自費次數'] += 1;\n elderRows[rowIndex]['小計'] += price;\n }\n orderTotalWithoutSurcharge -= price;\n });\n }\n });\n\n const rowIndex = elderRows.findIndex((elderRow) => elderRow['自費單價'] === orderTotalWithoutSurcharge);\n if (rowIndex === -1) {\n elderRows.push({\n 服務編號: '餐點費用',\n 福利身份別: '全自費',\n 自費單價: orderTotalWithoutSurcharge,\n 自費次數: 1,\n 小計: orderTotalWithoutSurcharge,\n });\n } else {\n elderRows[rowIndex]['自費次數'] += 1;\n elderRows[rowIndex]['小計'] += orderTotalWithoutSurcharge;\n }\n\n total += orderTotal;\n });\n\n const serviceDates = elderOrders.map(({ date, mealSlot }) => {\n const formattedDate = moment(date).format('MM/DD');\n return {\n date: formattedDate,\n slot: mealSlot === 'lunch'? '午' : '晚',\n };\n }).sort((a, b) => {\n if (a.date > b.date) return 1;\n if (a.date < b.date) return -1;\n if (a.slot === '午') return -1;\n });\n let serviceDatesString = '';\n let previousDate = '';\n let serviceDays = 0;\n serviceDates.forEach(({ date, slot }, index) => {\n if (previousDate !== date) {\n if (index !== 0) {\n serviceDatesString += '、';\n }\n serviceDatesString += date + ' ' + slot;\n serviceDays += 1;\n } else {\n serviceDatesString += slot;\n }\n previousDate = date;\n });\n\n const elderRowsCount = elderRows.length;\n\n if (elderRowsCount === 0) {\n return;\n }\n\n let copyType = {\n duplicate: [\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n存\\n根\\n聯',\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n ],\n triplicate: [\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n存\\n根\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n會\\n計\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n三\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n ],\n };\n if (reverseCopyType) {\n copyType = {\n duplicate: [\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n '一\\n式\\n二\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n存\\n根\\n聯',\n ],\n triplicate: [\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n一\\n聯\\n:\\n個\\n案\\n收\\n執\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n二\\n聯\\n:\\n會\\n計\\n聯',\n '一\\n式\\n三\\n聯\\n \\n \\n第\\n三\\n聯\\n:\\n存\\n根\\n聯',\n ],\n };\n }\n if (copyIndex !== -1) {\n copyType[receiptType] = [copyType[receiptType][copyIndex]];\n }\n worksheet.columns = [\n { header: '', key: 'A', width: 6.15 },\n { header: '', key: 'B', width: 5.78 },\n { header: '', key: 'C', width: 4.70 },\n { header: '', key: 'D', width: 6.15 },\n { header: '', key: 'E', width: 6.15 },\n { header: '', key: 'F', width: 9.68 },\n { header: '', key: 'G', width: 6.03 },\n { header: '', key: 'H', width: 6.03 },\n { header: '', key: 'I', width: 6.03 },\n { header: '', key: 'J', width: 6.03 },\n { header: '', key: 'K', width: 6.03 },\n { header: '', key: 'L', width: 6.03 },\n { header: '', key: 'M', width: 6.03 },\n { header: '', key: 'N', width: 6.03 },\n { header: '', key: 'O', width: 6.03 },\n { header: '', key: 'P', width: 6.03 },\n { header: '', key: 'Q', width: 6.03 },\n { header: '', key: 'R', width: 6.03 },\n { header: '', key: 'S', width: 2.75 },\n ];\n\n let rowIndex = 1;\n let copyCount = 0;\n const defaultRowHeight = 15.75;\n const fontName = 'Microsoft YaHei';\n while (copyCount < copyType[receiptType].length) {\n worksheet.mergeCells(`A${rowIndex}:S${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = clientName;\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).font = { bold: true, size: 16, name: fontName };\n worksheet.getRow(rowIndex++).height = 23.25;\n worksheet.getRow(rowIndex++).height = 17.25;\n\n worksheet.mergeCells(`A${rowIndex}:E${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `流水號編號:S${selectedMonth.replace('-', '')}${receiptNo.toString().padStart(3, '0')}`;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.mergeCells(`F${rowIndex}:M${rowIndex}`);\n worksheet.getCell(`F${rowIndex}`).value = '收據明細';\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { size: 10, name: fontName };\n worksheet.mergeCells(`N${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`N${rowIndex}`).value = `列表日:${yearMonthDayTitle}`;\n worksheet.getCell(`N${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`N${rowIndex}`).alignment = { horizontal: 'right', vertical: 'middle' };\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n worksheet.mergeCells(`A${rowIndex}:E${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `身分證字號:${identificationCardId || ''}`;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n\n worksheet.mergeCells(`F${rowIndex}:M${rowIndex + 1}`);\n worksheet.getCell(`F${rowIndex}`).value = `${selectedMonth.replace('-', '年')}月 長期照顧營養餐飲服務費`;\n worksheet.getCell(`F${rowIndex}`).alignment = { horizontal: 'center', vertical: 'middle' };\n worksheet.getCell(`F${rowIndex}`).font = { bold: true, size: 11, name: fontName };\n\n worksheet.mergeCells(`N${rowIndex}:R${rowIndex}`);\n const caseNumberString = caseNumber ? `案號:${caseNumber}` : '';\n worksheet.getCell(`N${rowIndex}`).value = caseNumberString;\n worksheet.getCell(`N${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`N${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getRow(rowIndex++).height = 18;\n\n worksheet.mergeCells(`A${rowIndex}:E${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `此致 ${getSanitizedElderName(elderName)} 台照`;\n worksheet.getCell(`A${rowIndex}`).font = { bold: true, size: 10, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.mergeCells(`N${rowIndex}:R${rowIndex}`);\n const cmsLevelString = cmsLevel ? `失能等級:${cmsLevel}` : '';\n worksheet.getCell(`N${rowIndex}`).value = cmsLevelString;\n worksheet.getCell(`N${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`N${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getRow(rowIndex++).height = 18;\n\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n worksheet.getRow(rowIndex).font = { size: 9, name: fontName };\n worksheet.getRow(rowIndex).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).value = '服務編號';\n worksheet.mergeCells(`D${rowIndex}:F${rowIndex}`);\n worksheet.getCell(`D${rowIndex}`).value = '福利身份別';\n worksheet.mergeCells(`G${rowIndex}:H${rowIndex}`);\n worksheet.getCell(`G${rowIndex}`).value = '原價';\n worksheet.mergeCells(`I${rowIndex}:J${rowIndex}`);\n worksheet.getCell(`I${rowIndex}`).value = '部分負擔';\n worksheet.mergeCells(`K${rowIndex}:L${rowIndex}`);\n worksheet.getCell(`K${rowIndex}`).value = '使用次數';\n worksheet.mergeCells(`M${rowIndex}:N${rowIndex}`);\n worksheet.getCell(`M${rowIndex}`).value = '自費單價';\n worksheet.mergeCells(`O${rowIndex}:P${rowIndex}`);\n worksheet.getCell(`O${rowIndex}`).value = '自費次數';\n worksheet.mergeCells(`Q${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`Q${rowIndex}`).value = '小計';\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thick' }, right: { style: 'thin' }, left: { style: 'thick' } };\n ['D', 'G', 'I', 'K', 'M', 'O'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { top: { style: 'thick' }, right: { style: 'thin' } };\n });\n worksheet.getCell(`Q${rowIndex}`).border = { top: { style: 'thick' }, right: { style: 'thick' } };\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n elderRows.forEach((elderRow) => {\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n worksheet.getRow(rowIndex).font = { size: 9, name: fontName };\n worksheet.getRow(rowIndex).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).value = elderRow['服務編號'];\n worksheet.mergeCells(`D${rowIndex}:F${rowIndex}`);\n worksheet.getCell(`D${rowIndex}`).value = elderRow['福利身份別'];\n worksheet.mergeCells(`G${rowIndex}:H${rowIndex}`);\n worksheet.mergeCells(`I${rowIndex}:J${rowIndex}`);\n worksheet.mergeCells(`K${rowIndex}:L${rowIndex}`);\n worksheet.mergeCells(`M${rowIndex}:N${rowIndex}`);\n worksheet.getCell(`M${rowIndex}`).value = elderRow['自費單價'];\n worksheet.mergeCells(`O${rowIndex}:P${rowIndex}`);\n worksheet.getCell(`O${rowIndex}`).value = elderRow['自費次數'];\n worksheet.mergeCells(`Q${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`Q${rowIndex}`).value = elderRow['小計'];\n\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thick' } };\n ['D', 'G', 'I', 'K', 'M', 'O'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' } };\n });\n worksheet.getCell(`Q${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thick' } };\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n });\n\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n worksheet.getCell(`A${rowIndex}`).value = `服務天數:${serviceDays}`;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'middle' };\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thick' } };\n worksheet.mergeCells(`D${rowIndex}:R${rowIndex}`);\n worksheet.getCell(`D${rowIndex}`).value = serviceDatesString;\n worksheet.getCell(`D${rowIndex}`).font = { size: 9, name: 'Calibri' };\n worksheet.getCell(`D${rowIndex}`).alignment = { horizontal: 'left', vertical: 'top', wrapText: true };\n worksheet.getCell(`D${rowIndex}`).border = {\n top: { style: 'thin' }, right: { style: 'thick' }, left: { style: 'thin' }, bottom: { style: 'thin' },\n };\n worksheet.getRow(rowIndex++).height = defaultRowHeight * 5;\n\n const clientInfo = [`地址:${formatAddress(clientAddress, { includeZipCode: false })}`];\n if (taxIdNumber) {\n clientInfo.push(`統一編號: ${taxIdNumber}`);\n }\n if (phoneNumber) {\n clientInfo.push(`電話:${phoneNumber}`);\n }\n if (faxNumber) {\n clientInfo.push(`傳真:${faxNumber}`);\n }\n if (displayedBankName) {\n clientInfo.push(`銀行名稱:${displayedBankName}`);\n }\n if (displayedAccountNumber) {\n clientInfo.push(`匯款帳號:${displayedAccountNumber}`);\n }\n if (displayedAccountName) {\n clientInfo.push(`帳戶名:${displayedAccountName}`);\n }\n if (note) {\n clientInfo.push(`備註:${note}`);\n }\n const rowHeights = [];\n worksheet.mergeCells(`A${rowIndex}:F${rowIndex + 7}`);\n const clientInfoString = clientInfo.join('\\n');\n worksheet.getCell(`A${rowIndex}`).value = clientInfoString;\n worksheet.getCell(`A${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`A${rowIndex}`).alignment = { horizontal: 'left', vertical: 'top', wrapText: true };\n worksheet.getCell(`A${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thick' } };\n worksheet.mergeCells(`G${rowIndex}:N${rowIndex + 3}`);\n worksheet.getCell(`G${rowIndex}`).value = `費用總計:$ ${total}`;\n worksheet.getCell(`G${rowIndex}`).font = { bold: true, size: 9.5, name: fontName };\n worksheet.getCell(`G${rowIndex}`).alignment = { vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n worksheet.mergeCells(`O${rowIndex}:R${rowIndex + 7}`);\n worksheet.getCell(`O${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thick' }, left: { style: 'thin' } };\n for (let i = 0; i < 4; i++) {\n worksheet.getRow(rowIndex++).height = rowHeights[i] || defaultRowHeight;\n }\n\n worksheet.mergeCells(`G${rowIndex}:N${rowIndex + 3}`);\n worksheet.getCell(`G${rowIndex}`).value = `茲收到新台幣 ${numberToChineseUpper(total)} 元整`;\n worksheet.getCell(`G${rowIndex}`).font = { size: 9, name: fontName };\n worksheet.getCell(`G${rowIndex}`).alignment = { vertical: 'middle' };\n worksheet.getCell(`G${rowIndex}`).border = { top: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n for (let i = 0; i < 4; i++) {\n worksheet.getRow(rowIndex++).height = rowHeights[i + 4] || defaultRowHeight;\n }\n\n worksheet.mergeCells(`S${rowIndex - 10 - elderRowsCount}:S${rowIndex - 1}`);\n worksheet.getCell(`S${rowIndex - 10 - elderRowsCount}`).value = copyType[receiptType][copyCount];\n worksheet.getCell(`S${rowIndex - 10 - elderRowsCount}`).font = { size: 6, name: fontName };\n worksheet.getCell(`S${rowIndex - 10 - elderRowsCount}`).alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };\n\n worksheet.mergeCells(`A${rowIndex}:C${rowIndex}`);\n if (stampImages.chairman && stampImages.chairman.imageId !== undefined) {\n worksheet.getCell(`A${rowIndex}`).value = managerTitle ? `${managerTitle}:` : '理事長:';\n } else {\n worksheet.getCell(`A${rowIndex}`).value = managerTitle ? `${managerTitle}: ${chairmanName || ''}` : `理事長: ${chairmanName || ''}`;\n }\n worksheet.mergeCells(`G${rowIndex}:I${rowIndex}`);\n if (stampImages.accountant && stampImages.accountant.imageId !== undefined) {\n worksheet.getCell(`G${rowIndex}`).value = '會計:';\n } else {\n worksheet.getCell(`G${rowIndex}`).value = `會計: ${accountantName || ''}`;\n }\n worksheet.mergeCells(`M${rowIndex}:O${rowIndex}`);\n if (stampImages.handler && stampImages.handler.imageId !== undefined) {\n worksheet.getCell(`M${rowIndex}`).value = '經手人:';\n } else {\n worksheet.getCell(`M${rowIndex}`).value = `經手人: ${handlerName || ''}`;\n }\n worksheet.getRow(rowIndex).font = { size: 9, name: fontName };\n worksheet.getRow(rowIndex).alignment = { horizontal: 'left', vertical: 'middle' };\n ['A', 'C', 'D', 'E', 'F', 'G', 'I', 'J', 'K', 'L', 'M', 'O', 'P', 'Q', 'R'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { top: { style: 'thick' } };\n });\n if (stampImages.company && stampImages.company.imageId !== undefined) {\n worksheet.addImage(stampImages.company.imageId, {\n tl: { col: 14 + 0.3, row: rowIndex - 9 + 0.3 },\n ext: { width: stampImages.company.width, height: stampImages.company.height },\n });\n }\n if (stampImages.chairman && stampImages.chairman.imageId !== undefined) {\n worksheet.addImage(stampImages.chairman.imageId, {\n tl: { col: 1 + 0.3, row: rowIndex - 1 + 0.3 },\n ext: { width: stampImages.chairman.width, height: stampImages.chairman.height },\n });\n }\n if (stampImages.accountant && stampImages.accountant.imageId !== undefined) {\n worksheet.addImage(stampImages.accountant.imageId, {\n tl: { col: 7 + 0.3, row: rowIndex - 1 + 0.3 },\n ext: { width: stampImages.accountant.width, height: stampImages.accountant.height },\n });\n }\n if (stampImages.handler && stampImages.handler.imageId !== undefined) {\n worksheet.addImage(stampImages.handler.imageId, {\n tl: { col: 13 + 0.3, row: rowIndex - 1 + 0.3 },\n ext: { width: stampImages.handler.width, height: stampImages.handler.height },\n });\n }\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n\n copyCount++;\n\n if (copyCount < copyType[receiptType].length) {\n ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S'].forEach((col) => {\n worksheet.getCell(`${col}${rowIndex}`).border = { bottom: { style: 'dashDot' } };\n });\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n worksheet.getRow(rowIndex++).height = defaultRowHeight;\n }\n }\n\n worksheet.pageSetup.printArea = `A1:S${rowIndex}`;\n\n return worksheet;\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { elderPaymentMethod } from '@silvergatedelivery/constants';\nimport LabelWithToolTip from '../LabelWithToolTip';\n\nimport {\n counties,\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { asyncListAll, request } from 'utilities/graph';\n\nimport issueReceipts from './issueReceipts';\n\nimport {\n getEldersByClientByStatus,\n getOrdersByClientByDate,\n getPandagoOrdersByOrderByCreatedAt,\n} from '../queries';\nimport { getClient } from 'graphql/queries';\n\nimport { processShareOrder } from '../CountyPrsReport/workbooks/helpers';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function SelfPayingReceipt({ clientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [selectedCounty, setSelectedCounty] = useState(counties[0]);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeInactiveElders, setIncludeInactiveElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState('all');\n const [groupByDistrict, setGroupByDistrict] = useState(true);\n const excludeNonFoodDeliveryOrders = true;\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n // const monthString = from.format('YYYY/MM');\n const period = `${fromDate}__${toDate}`;\n const { id: clientId } = clientOptions.find(({ id }) => id === selectedClientId);\n\n global.logger.debug({\n selectedClientId,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n elders,\n orders,\n { data: { getClient: client } },\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: includeInactiveElders ? undefined : { eq: '使用中' },\n filter: {\n isDisadvantaged: {\n eq: 0,\n },\n },\n limit: 1000,\n }),\n asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n request(getClient, { id: clientId }),\n ]);\n\n const selfPayingOrders = orders.filter(({ elderId }) => elders.findIndex(({ id }) => id === elderId) !== -1);\n\n const deliveryStaffIds = [];\n selfPayingOrders.forEach(({ deliveryStaffId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n });\n\n let pandagoDeliveryStaffId;\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n username\n identificationCardId\n }\n }\n `, { id });\n\n if (data.username === 'pandago') {\n pandagoDeliveryStaffId = id;\n }\n\n return data;\n }));\n\n const pandagoOrders = await Promise.all(selfPayingOrders\n .filter(({ deliveryStaffId }) => deliveryStaffId === pandagoDeliveryStaffId)\n .map(async ({ id: orderId }) => {\n const [pandagoOrder] = await asyncListAll(getPandagoOrdersByOrderByCreatedAt, {\n orderId,\n limit: 1,\n });\n\n return pandagoOrder;\n }));\n\n processShareOrder(elders, selfPayingOrders);\n\n issueReceipts({\n county: selectedCounty,\n elders,\n orders: selfPayingOrders,\n deliveryStaffs, pandagoOrders, selectedMonth, client, includeUndeliveredOrders, excludeNonFoodDeliveryOrders,\n selectedPaymentMethod, groupByDistrict,\n });\n };\n\n const triggerDownload = async () => {\n try {\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n\n const updateCounty = (client) => {\n if (client && client.county) {\n const targetCounty = counties.find((county) => county === client.county);\n if (targetCounty) {\n setSelectedCounty(targetCounty);\n }\n }\n };\n\n useEffect(() => {\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n updateCounty(clientOptions[0]);\n }\n }, [clientOptions]);\n\n return (\n
\n

餐飲服務費收據(自費戶)

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n if (value) {\n const client = clientOptions.find(({ id }) => id === value);\n updateCounty(client);\n }\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 縣市\n setSelectedCounty(event.target.value)}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 收費方式\n setSelectedPaymentMethod(event.target.value)}\n disabled={isLoading}\n >\n \n 全部\n \n {/* value是'null', 會無法顯示'無', 用'none'處理 */}\n {elderPaymentMethod.map(({ value, label }) => (\n \n {label}\n \n ))}\n \n \n
\n
\n {\n setIncludeInactiveElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n {\n setGroupByDistrict(e.target.checked);\n }}\n />\n }\n label={}\n />\n
\n\n \n 下載\n {isLoading && }\n \n
\n );\n}\n\nSelfPayingReceipt.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport { sortBy } from 'utilities/sorting';\nimport { buildColumnsArray, getROCYear, getMonthDates } from '../../CountyPrsReport/workbooks/helpers';\n\n// TODO: 目前只能兩組\nconst districtPrice = [{\n districts: ['大城鄉', '竹塘鄉', '員林市', '永靖鄉'],\n price: 30,\n}, {\n districts: ['二林鎮', '北斗鎮', '田尾鄉', '芳苑鄉', '埔心鄉', '埔鹽鄉', '埤頭鄉', '溪湖鎮'],\n price: 25,\n}];\n\nexport default async function byDistrict({\n elders,\n orders: allOrders,\n deliveryStaffs,\n selectedMonth: selectedYearMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n applyDefaultDeliveryStaff = false,\n}) {\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) =>\n ['送餐', '送餐和物資', '愛心餐', '自費餐'].includes(category));\n }\n\n const [selectedYear, selectedMonth] = selectedYearMonth.split('-');\n const ROCYear = parseInt(selectedYear) - 1911;\n\n const zip = new JSZip();\n\n const workbookDeliveryStaff = new ExcelJS.Workbook();\n const worksheet = workbookDeliveryStaff.addWorksheet(`${ROCYear}${selectedMonth}送餐大使薪資表`);\n getWorksheetDeliveryStaff(worksheet, deliveryStaffs, orders, elders, selectedYearMonth, selectedMonth, applyDefaultDeliveryStaff);\n const worksheetSetting = workbookDeliveryStaff.addWorksheet('費用設定');\n getWorksheetSetting(worksheetSetting);\n try {\n if (workbookDeliveryStaff && workbookDeliveryStaff.worksheets && workbookDeliveryStaff.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookDeliveryStaff.xlsx.writeBuffer();\n zip.file(`${ROCYear}${selectedMonth}送餐大使薪資表.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedYearMonth}送餐大使薪資表.zip`, zipContent);\n }\n}\n\nfunction getWorksheetDeliveryStaff(worksheet, deliveryStaffs = [], orders = [], elders, selectedYearMonth, selectedMonth, applyDefaultDeliveryStaff) {\n const monthDates = getMonthDates(selectedYearMonth, 'dddd');\n const deliveryStaffRows = [];\n deliveryStaffs\n .sort((a, b) => a.name > b.name ? 1 : - 1)\n .map(({ id, name }) => {\n const deliveryStaffOrders = orders.filter(({ deliveryStaffId }) => deliveryStaffId === id);\n if (deliveryStaffOrders.length === 0) {\n return;\n }\n const statistics = [];\n deliveryStaffOrders.sort(sortBy('deliveryBy')).forEach(({ mealSlot, date, elderId }) => {\n const elder = elders.find(({ id }) => id === elderId);\n if (!elder) return;\n const elderDistrict = elder.fixedDeliveryStaffFee === 0 ? `${elder.address.district}(0元)`: elder.address.district;\n const matched = statistics.find((item) => item.date === date && item.mealSlot === mealSlot && item.district === elderDistrict);\n if (matched) {\n matched.mealCount += 1;\n } else {\n statistics.push({\n date,\n mealSlot,\n district: elderDistrict,\n mealCount: 1,\n });\n }\n });\n deliveryStaffRows.push({ name, statistics });\n });\n\n const fontName = 'Calibri';\n const range = 'A:CZ';\n const columnArray = buildColumnsArray(range);\n\n const ROCYear = getROCYear(selectedYearMonth);\n\n let rowIndex = 1;\n\n const defaultBorder = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n let cell;\n worksheet.mergeCells(`A${rowIndex}:S${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = `${ROCYear}年${selectedMonth}月送餐大使薪資表`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 48, name: fontName };\n rowIndex += 1;\n\n // column A\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '';\n cell.border = defaultBorder;\n cell = worksheet.getCell(`A${rowIndex + 1}`);\n cell.value = '';\n cell.border = defaultBorder;\n cell = worksheet.getCell(`A${rowIndex + 2}`);\n cell.value = '日期';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach(({ label }, index) => {\n cell = worksheet.getCell(`A${rowIndex + 3 + index}`);\n cell.value = `${index + 1}(${label.replace('星期', '')})`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n ['小計', '送餐員合計', '當月總計',\n { formula: `= 費用設定!A2 & \"元數量\"` },\n { formula: `= 費用設定!A3 & \"元數量\"` },\n '0元數量', '合計薪資'].forEach((value, index) => {\n cell = worksheet.getCell(`A${rowIndex + 3 + monthDates.length + index}`);\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n\n worksheet.getColumn('A').width = 20;\n\n let columnIndex = 1;\n deliveryStaffRows.forEach(({ name, statistics }) => {\n const mealCountByPriceCells = JSON.parse(JSON.stringify(districtPrice));\n const freeCells = [];\n let currentRowIndex = rowIndex;\n const lunchDistricts = new Set(\n statistics.filter(({ mealSlot }) => mealSlot === 'lunch').map(({ district }) => district),\n );\n const lunchDistrictsCount = lunchDistricts.size;\n const dinnerDistricts = new Set(\n statistics.filter(({ mealSlot }) => mealSlot === 'dinner').map(({ district }) => district),\n );\n const dinnerDistrictsCount = dinnerDistricts.size;\n if (lunchDistrictsCount + dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = name;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n if (lunchDistrictsCount) {\n if (lunchDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '午餐';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n }\n if (dinnerDistrictsCount) {\n if (dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n // eslint-disable-next-line max-len\n `${columnArray[columnIndex + lunchDistrictsCount]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount]}${currentRowIndex}`);\n cell.value = '晚餐';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n }\n currentRowIndex += 1;\n\n if (lunchDistrictsCount) {\n Array.from(lunchDistricts).sort().forEach((district, districtIndex) => {\n cell = worksheet.getCell(`${columnArray[columnIndex + districtIndex]}${currentRowIndex}`);\n cell.value = district;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach(({ date }, dateIndex) => {\n const matched = statistics.find((item) => item.date === date && item.mealSlot === 'lunch' && item.district === district);\n let value = '';\n if (matched) {\n value = matched.mealCount;\n }\n cell = worksheet.getCell(`${columnArray[columnIndex + districtIndex]}${currentRowIndex + dateIndex + 1}`);\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n const currentCell = `${columnArray[columnIndex + districtIndex]}${currentRowIndex + monthDates.length + 1}`;\n cell = worksheet.getCell(currentCell);\n // eslint-disable-next-line max-len\n cell.value = { formula: `=SUM(${columnArray[columnIndex + districtIndex]}5:${columnArray[columnIndex + districtIndex]}${currentRowIndex + monthDates.length})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n worksheet.getColumn(columnArray[columnIndex + districtIndex]).width = 15;\n\n let isFreeCell = true;\n mealCountByPriceCells.forEach((item, index) => {\n if (item.districts.includes(district)) {\n if (!mealCountByPriceCells[index].cells) {\n mealCountByPriceCells[index].cells = [];\n }\n mealCountByPriceCells[index].cells.push(currentCell);\n isFreeCell = false;\n }\n });\n if (isFreeCell) {\n freeCells.push(currentCell);\n }\n });\n }\n if (dinnerDistrictsCount) {\n Array.from(dinnerDistricts).sort().forEach((district, districtIndex) => {\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex}`);\n cell.value = district;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach(({ date }, dateIndex) => {\n const matched = statistics.find((item) => item.date === date && item.mealSlot === 'dinner' && item.district === district);\n let value = '';\n if (matched) {\n value = matched.mealCount;\n }\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex + dateIndex + 1}`);\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n const currentCell = `${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex + monthDates.length + 1}`;\n cell = worksheet.getCell(currentCell);\n // eslint-disable-next-line max-len\n cell.value = { formula: `=SUM(${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}5:${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex + monthDates.length})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n worksheet.getColumn(columnArray[columnIndex + lunchDistrictsCount + districtIndex]).width = 15;\n\n let isFreeCell = true;\n mealCountByPriceCells.forEach((item, index) => {\n if (item.districts.includes(district)) {\n if (!mealCountByPriceCells[index].cells) {\n mealCountByPriceCells[index].cells = [];\n }\n // eslint-disable-next-line max-len\n mealCountByPriceCells[index].cells.push(currentCell);\n isFreeCell = false;\n }\n });\n if (isFreeCell) {\n freeCells.push(currentCell);\n }\n });\n }\n currentRowIndex += monthDates.length + 2;\n if (lunchDistrictsCount + dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n // eslint-disable-next-line max-len\n cell.value = { formula: `=SUM(${columnArray[columnIndex]}${currentRowIndex - 1}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex - 1})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n if (lunchDistrictsCount + dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '';\n cell.border = defaultBorder;\n\n currentRowIndex += 1;\n\n if (lunchDistrictsCount + dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = { formula: `=SUMPRODUCT((ISNUMBER(MATCH(\\\n${columnArray[columnIndex]}4:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}4,\\\n費用設定!B2:Z2, 0))) *\\\n(${columnArray[columnIndex]}${currentRowIndex - 3}:\\\n${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex - 3}))` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n if (lunchDistrictsCount + dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = { formula: `=SUMPRODUCT((ISNUMBER(MATCH(\\\n${columnArray[columnIndex]}4:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}4,\\\n費用設定!B3:Z3, 0))) *\\\n(${columnArray[columnIndex]}${currentRowIndex - 4}:\\\n${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex - 4}))` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n if (lunchDistrictsCount + dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = { formula: `=SUMPRODUCT((\\\nISNA(MATCH(\\\n${columnArray[columnIndex]}4:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}4,\\\n費用設定!B2:Z2, 0)) *\\\nISNA(MATCH(\\\n${columnArray[columnIndex]}4:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}4,\\\n費用設定!B3:Z3, 0))) *\\\n(${columnArray[columnIndex]}${currentRowIndex - 5}:\\\n${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex - 5}))` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n if (lunchDistrictsCount + dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = { formula: `=\\\n${columnArray[columnIndex]}${currentRowIndex - 3} * 費用設定!A2 +\\\n${columnArray[columnIndex]}${currentRowIndex - 2} * 費用設定!A3` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n\n columnIndex += lunchDistrictsCount + dinnerDistrictsCount;\n });\n\n // day total column\n {\n let currentRowIndex = rowIndex;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '當天總數';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '';\n cell.border = defaultBorder;\n currentRowIndex += 1;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '';\n cell.border = defaultBorder;\n currentRowIndex += 1;\n monthDates.forEach((_, dateIndex) => {\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex + dateIndex}`);\n let value = '';\n if (columnIndex > 1) {\n value = { formula: `=SUM(B${currentRowIndex + dateIndex}:${columnArray[columnIndex - 1]}${currentRowIndex + dateIndex})` };\n }\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n currentRowIndex += monthDates.length;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '';\n cell.border = defaultBorder;\n currentRowIndex += 1;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '';\n cell.border = defaultBorder;\n currentRowIndex += 1;\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = { formula: `=SUM(${columnArray[columnIndex]}5:${columnArray[columnIndex]}${monthDates.length + 4})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n let count = 0;\n while (count < 4) {\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n let value = '';\n if (columnIndex > 1) {\n value = { formula: `=SUM(B${currentRowIndex}:${columnArray[columnIndex - 1]}${currentRowIndex})` };\n }\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n count++;\n }\n worksheet.getColumn(columnArray[columnIndex]).width = 13;\n }\n\n rowIndex += monthDates.length + 10;\n worksheet.mergeCells(`A${rowIndex}:S${rowIndex + 4}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '業務承辦: 業務主管: 主任: 董事長:';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 36, name: fontName };\n\n return worksheet;\n}\n\nfunction getWorksheetSetting(worksheet) {\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n let rowIndex = 1;\n\n let cell;\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '費用';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell = worksheet.getCell(`B${rowIndex}`);\n cell.value = '鄉鎮市區';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n rowIndex += 1;\n\n worksheet.getColumn('A').width = 13;\n districtPrice.forEach(({ price, districts }) => {\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = price;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n districts.forEach((district, index) => {\n cell = worksheet.getCell(`${columnArray[index + 1]}${rowIndex}`);\n cell.value = district;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n worksheet.getColumn(columnArray[index + 1]).width = 13;\n });\n rowIndex += 1;\n });\n\n return worksheet;\n}\n","import JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport { sortBy } from 'utilities/sorting';\nimport {\n buildColumnsArray,\n getROCYear,\n getMonthDates,\n} from '../../CountyPrsReport/workbooks/helpers';\n\n\nconst specialDistrictPrice = ['豐濱', '銅門', '和平'];\n\nexport default async function byTripsAndDistrict({\n elders,\n orders: allOrders,\n deliveryStaffs,\n selectedMonth: selectedYearMonth = 'YYYY-MM',\n clientName,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n applyDefaultDeliveryStaff = false,\n}) {\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) =>\n ['送餐', '送餐和物資', '愛心餐', '自費餐'].includes(category));\n }\n\n const [selectedYear, selectedMonth] = selectedYearMonth.split('-');\n const ROCYear = parseInt(selectedYear) - 1911;\n\n const zip = new JSZip();\n\n const workbookDeliveryStaff = new ExcelJS.Workbook();\n const worksheet = workbookDeliveryStaff.addWorksheet(`${ROCYear}${selectedMonth}送餐大使薪資表`);\n getWorksheetDeliveryStaff(worksheet, deliveryStaffs, orders, elders, selectedYearMonth, selectedMonth, applyDefaultDeliveryStaff);\n try {\n if (workbookDeliveryStaff && workbookDeliveryStaff.worksheets && workbookDeliveryStaff.worksheets.length > 0) {\n const bufferDataByDistrict = await workbookDeliveryStaff.xlsx.writeBuffer();\n zip.file(`${ROCYear}${selectedMonth}送餐大使薪資表.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${clientName}__${selectedYearMonth}送餐大使薪資表.zip`, zipContent);\n }\n}\n\nfunction getWorksheetDeliveryStaff(worksheet, deliveryStaffs = [], orders = [], elders, selectedYearMonth, selectedMonth, applyDefaultDeliveryStaff) {\n const monthDates = getMonthDates(selectedYearMonth, 'dddd');\n const deliveryStaffRows = [];\n deliveryStaffs\n .sort((a, b) => a.name > b.name ? 1 : - 1)\n .map(({ id, name }) => {\n // find staff's order\n const deliveryStaffOrders = orders.filter(({ deliveryStaffId }) => deliveryStaffId === id);\n // if order =0\n if (deliveryStaffOrders.length === 0) {\n return;\n }\n // if order != 0\n const statistics = [];\n\n deliveryStaffOrders.sort(sortBy('deliveryBy')).forEach(({ mealSlot, date, elderId }) => {\n // find order's elder\n const elder = elders.find(({ id }) => id === elderId);\n if (!elder) return;\n\n\n let elderDistrict = elder.address.district;\n specialDistrictPrice.forEach((specialDistrict, _) => {\n if (Object.values(elder.address).some( (Address) =>{\n return String(Address).includes(specialDistrict);\n })) {\n elderDistrict = elderDistrict + '(偏遠)';\n }\n });\n\n\n // count district's orders\n const matched = statistics.find((item) => item.date === date && item.mealSlot === mealSlot && item.district === elderDistrict);\n if (matched) {\n matched.mealCount += 1;\n } else {\n statistics.push({\n date,\n mealSlot,\n district: elderDistrict,\n mealCount: 1,\n });\n }\n });\n deliveryStaffRows.push({ name, statistics });\n });\n\n\n const fontName = 'Calibri';\n const range = 'A:CZ';\n const columnArray = buildColumnsArray(range);\n\n const ROCYear = getROCYear(selectedYearMonth);\n\n let rowIndex = 1;\n\n const defaultBorder = { top: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }, left: { style: 'thin' } };\n\n let cell;\n worksheet.mergeCells(`A${rowIndex}:S${rowIndex}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = `${ROCYear}年${selectedMonth}月送餐大使薪資表`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 48, name: fontName };\n rowIndex += 1;\n\n // column A\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '';\n cell.border = defaultBorder;\n cell = worksheet.getCell(`A${rowIndex + 1}`);\n cell.value = '';\n cell.border = defaultBorder;\n cell = worksheet.getCell(`A${rowIndex + 2}`);\n cell.value = '日期';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach(({ label }, index) => {\n cell = worksheet.getCell(`A${rowIndex + 3 + index}`);\n cell.value = `${index + 1}(${label.replace('星期', '')})`;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n ['小計', '送餐員合計', '總送餐日', '當月最高日薪', '合計薪資'].forEach((value, index) => {\n cell = worksheet.getCell(`A${rowIndex + 3 + monthDates.length + index}`);\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n\n worksheet.getColumn('A').width = 20;\n\n let columnIndex = 1;\n deliveryStaffRows.forEach(({ name, statistics }) => {\n let currentRowIndex = rowIndex;\n const lunchDistricts = new Set(\n statistics.filter(({ mealSlot }) => mealSlot === 'lunch').map(({ district }) => district),\n );\n const lunchDistrictsCount = lunchDistricts.size;\n const dinnerDistricts = new Set(\n statistics.filter(({ mealSlot }) => mealSlot === 'dinner').map(({ district }) => district),\n );\n const dinnerDistrictsCount = dinnerDistricts.size;\n if (lunchDistrictsCount + dinnerDistrictsCount > 0) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = name;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n // title\n if (lunchDistrictsCount) {\n if (lunchDistrictsCount > 1) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n cell.value = '午餐';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n }\n if (dinnerDistrictsCount) {\n if (dinnerDistrictsCount > 1) {\n worksheet.mergeCells(\n // eslint-disable-next-line max-len\n `${columnArray[columnIndex + lunchDistrictsCount]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount]}${currentRowIndex}`);\n cell.value = '晚餐';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n }\n if (lunchDistrictsCount + dinnerDistrictsCount > 0) {\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex}`);\n cell.value = '當日薪資';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n worksheet.getColumn(columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]).width = 15;\n }\n currentRowIndex += 1;\n\n // 填值\n if (lunchDistrictsCount) {\n Array.from(lunchDistricts).sort().forEach((district, districtIndex) => {\n cell = worksheet.getCell(`${columnArray[columnIndex + districtIndex]}${currentRowIndex}`);\n // fill distict\n cell.value = district;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n\n // fill each day's meals\n monthDates.forEach(({ date }, dateIndex) => {\n const matched = statistics.find((item) => item.date === date && item.mealSlot === 'lunch' && item.district === district);\n let value = '';\n if (matched) {\n value = matched.mealCount;\n }\n cell = worksheet.getCell(`${columnArray[columnIndex + districtIndex]}${currentRowIndex + dateIndex + 1}`);\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n\n //\n const currentCell = `${columnArray[columnIndex + districtIndex]}${currentRowIndex + monthDates.length + 1}`;\n cell = worksheet.getCell(currentCell);\n // 計算小計\n // eslint-disable-next-line max-len\n cell.value = { formula: `SUM(${columnArray[columnIndex + districtIndex]}5:${columnArray[columnIndex + districtIndex]}${currentRowIndex + monthDates.length})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n worksheet.getColumn(columnArray[columnIndex + districtIndex]).width = 25;\n });\n }\n if (dinnerDistrictsCount) {\n Array.from(dinnerDistricts).sort().forEach((district, districtIndex) => {\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex}`);\n\n cell.value = district;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n monthDates.forEach(({ date }, dateIndex) => {\n const matched = statistics.find((item) => item.date === date && item.mealSlot === 'dinner' && item.district === district);\n let value = '';\n if (matched) {\n value = matched.mealCount;\n }\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex + dateIndex + 1}`);\n cell.value = value;\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n const currentCell = `${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex + monthDates.length + 1}`;\n cell = worksheet.getCell(currentCell);\n // eslint-disable-next-line max-len\n cell.value = { formula: `SUM(${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}5:${columnArray[columnIndex + lunchDistrictsCount + districtIndex]}${currentRowIndex + monthDates.length})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n worksheet.getColumn(columnArray[columnIndex + lunchDistrictsCount + districtIndex]).width = 25;\n });\n }\n // 計算當日薪資\n if (lunchDistrictsCount + dinnerDistrictsCount > 0) {\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex}`);\n cell.border = defaultBorder;\n // 計算非偏遠地區的數量 * 錢 + 偏遠地區 * 500\n monthDates.forEach(({ date }, dateIndex) => {\n const notRemoteOrder = statistics.filter((item) =>{\n return item.date == date && !item.district.includes('偏遠');\n } );\n const notRemoteOrderCount = Object.values(notRemoteOrder).reduce((acc, { mealCount }) => acc + mealCount, 0);\n const RemoteOrder = statistics.filter((item) =>{\n return item.date == date && item.district.includes('偏遠');\n } );\n const RemoteOrderCount = Object.values(RemoteOrder).reduce((acc, { mealCount }) => acc + mealCount, 0);\n\n let dailySalary = 0;\n if (notRemoteOrderCount > 0) {\n dailySalary = 200 + 50 * Math.floor((notRemoteOrderCount-1) / 5 );\n }\n\n if (RemoteOrderCount > 0) {\n dailySalary = dailySalary + 500;\n }\n\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex + dateIndex + 1}`);\n if (dailySalary > 0) {\n cell.value = dailySalary;\n }\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n });\n\n cell = worksheet.getCell(`${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex + monthDates.length + 1}`);\n cell.border = defaultBorder;\n }\n\n //\n // 計算送餐員合計\n currentRowIndex += monthDates.length + 2;\n if (lunchDistrictsCount + dinnerDistrictsCount > 0) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n // eslint-disable-next-line max-len\n cell.value = { formula: `SUM(${columnArray[columnIndex]}${currentRowIndex - 1}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount - 1]}${currentRowIndex - 1})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n // 總送餐日\n if (lunchDistrictsCount + dinnerDistrictsCount > 0) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n // eslint-disable-next-line max-len\n cell.value = { formula: `COUNTA(${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}5:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${monthDates.length + 4})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n currentRowIndex += 1;\n\n // 每月最高日薪\n if (lunchDistrictsCount + dinnerDistrictsCount > 0) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n // eslint-disable-next-line max-len\n cell.value = { formula: `MAX(${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}5:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${monthDates.length + 4})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n\n currentRowIndex += 1;\n\n // 合計薪資\n\n if (lunchDistrictsCount + dinnerDistrictsCount > 0) {\n worksheet.mergeCells(\n `${columnArray[columnIndex]}${currentRowIndex}:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${currentRowIndex}`,\n );\n }\n cell = worksheet.getCell(`${columnArray[columnIndex]}${currentRowIndex}`);\n // eslint-disable-next-line max-len\n cell.value = { formula: `${columnArray[columnIndex]}${currentRowIndex -1} *COUNTA(${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}5:${columnArray[columnIndex + lunchDistrictsCount + dinnerDistrictsCount]}${monthDates.length + 4})` };\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 16, name: fontName };\n cell.border = defaultBorder;\n\n columnIndex += lunchDistrictsCount + dinnerDistrictsCount + 1;\n });\n\n rowIndex += monthDates.length + 10;\n worksheet.mergeCells(`A${rowIndex}:S${rowIndex + 4}`);\n cell = worksheet.getCell(`A${rowIndex}`);\n cell.value = '業務承辦: 業務主管: 主任: 董事長:';\n cell.alignment = { horizontal: 'center', vertical: 'middle' };\n cell.font = { size: 36, name: fontName };\n\n\n return worksheet;\n}\n\n\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport LabelWithToolTip from '../LabelWithToolTip';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { asyncListAll, request } from 'utilities/graph';\n\nimport byDistrict from './workbooks/byDistrict';\nimport byTripsAndDistrict from './workbooks/byTripsAndDistrict';\n\nimport {\n getEldersByClientByStatus,\n getOrdersByClientByDate,\n} from '../queries';\n\nimport { processShareOrder, processDisadvantagedTypes } from '../CountyPrsReport/workbooks/helpers';\n\nconst calculations = [{\n label: '依送餐地區',\n func: byDistrict,\n},\n{\n label: '依趟數及送餐地區',\n func: byTripsAndDistrict,\n}];\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nexport default function DeliveryStaffSalary({ clientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [selectedCalculation, setSelectedCalculation] = useState(calculations[0].label);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeInactiveElders, setIncludeInactiveElders] = useState(false);\n const [includeNonDisElders, setIncludeNonDisElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n // const monthString = from.format('YYYY/MM');\n const period = `${fromDate}__${toDate}`;\n const {\n id: clientId,\n name,\n facilitySettings: { dba },\n } = clientOptions.find(({ id }) => id === selectedClientId);\n\n const clientName = dba || name;\n\n global.logger.debug({\n selectedClientId,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n elders,\n orders,\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: includeInactiveElders ? undefined : { eq: '使用中' },\n filter: includeNonDisElders ? undefined : {\n isDisadvantaged: {\n eq: 1,\n },\n },\n limit: 1000,\n }),\n asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n ]);\n\n const deliveryStaffIds = [];\n orders.forEach(({ deliveryStaffId, elderId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n const elder = elders.find(({ id }) => id === elderId);\n if (elder?.defaultDeliveryStaffId && !deliveryStaffIds.includes(elder.defaultDeliveryStaffId)) {\n deliveryStaffIds.push(elder.defaultDeliveryStaffId);\n }\n });\n\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n username\n identificationCardId\n birthday\n address {\n county\n district\n street\n }\n }\n }\n `, { id });\n\n return data;\n }));\n\n processShareOrder(elders, orders);\n processDisadvantagedTypes(selectedMonth, elders);\n\n const matched = calculations.find(({ label }) => label === selectedCalculation);\n if (matched) {\n await matched.func({ elders, orders, deliveryStaffs, selectedMonth, clientName,\n includeUndeliveredOrders, excludeNonFoodDeliveryOrders });\n }\n return;\n };\n\n const triggerDownload = async () => {\n try {\n setMessage('');\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n }\n }, [clientOptions]);\n\n return (\n
\n

送餐大使薪資表

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 薪資計算方法\n setSelectedCalculation(event.target.value)}\n disabled={isLoading}\n >\n {calculations.map(({ label }) => (\n \n {label}\n \n ))}\n \n \n
\n
\n {\n setIncludeNonDisElders(e.target.checked);\n }}\n />\n }\n label={}\n />\n {\n setIncludeInactiveElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n />\n
\n\n \n 下載\n {isLoading && }\n \n

\n {message}\n

\n
\n );\n}\n\nDeliveryStaffSalary.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { elderPaymentMethod } from '@silvergatedelivery/constants';\nimport {\n counties,\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { asyncListAll, request } from 'utilities/graph';\nimport {\n getEldersByClientByStatus,\n getOrdersByClientByDate,\n getPandagoOrdersByOrderByCreatedAt,\n} from './queries';\nimport { getClient } from 'graphql/queries';\nimport { processShareOrder, processDisadvantagedTypes, buildColumnsArray } from './CountyPrsReport/workbooks/helpers';\nimport JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport { toastr } from 'react-redux-toastr';\nimport LabelWithToolTip from './LabelWithToolTip';\n\nconst monthOptions = Array(10).fill('').map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n});\n\nasync function writeReport({\n county: inCounty,\n elders: allElders,\n orders: allOrders,\n deliveryStaffs,\n selectedMonth: selectedYearMonth = 'YYYY-MM',\n client,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n selectedPaymentMethod = 'all',\n}) {\n let elders = allElders.filter(({ address }) => address.county === inCounty);\n if (selectedPaymentMethod !== 'all') {\n if (selectedPaymentMethod === 'none') {\n elders = elders.filter(({ paymentMethod }) => paymentMethod === null);\n } else {\n elders = elders.filter(({ paymentMethod }) => paymentMethod === selectedPaymentMethod);\n }\n }\n if (elders.length == 0) {\n toastr.error('沒有符合設定條件的送餐對象');\n }\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat(['ready', 'readyForPickup', 'delivering']);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(({ category }) =>\n ['送餐', '送餐和物資', '愛心餐', '自費餐'].includes(category));\n }\n if (orders.length === 0) {\n toastr.error('沒有符合設定條件的訂單');\n }\n const zip = new JSZip();\n\n const workbook = new ExcelJS.Workbook();\n const [selectedYear, selectedMonth] = selectedYearMonth.split('-');\n const ROCYear = parseInt(selectedYear) - 1911;\n const worksheet = workbook.addWorksheet(`${ROCYear}${selectedMonth}會計對賬與簡訊表`);\n getWorksheetElder(worksheet, client, elders, orders, deliveryStaffs, selectedMonth);\n\n try {\n if (workbook && workbook.worksheets && workbook.worksheets.length > 0) {\n const bufferDataByDistrict = await workbook.xlsx.writeBuffer();\n zip.file(`${ROCYear}${selectedMonth}會計對賬與簡訊表.xlsx`, bufferDataByDistrict, { binary: true });\n }\n } catch (e) {\n console.error(e);\n }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${ROCYear}${selectedMonth}會計對賬與簡訊表.zip`, zipContent);\n }\n}\n\nfunction getWorksheetElder(worksheet, client, elders, orders = [], deliveryStaffs, selectedMonth) {\n let clientCopaymentSetting;\n if (client?.facilitySettings?.receiptSettings) {\n const { originalPrice = 0, copaymentSettings = [] } = client?.facilitySettings?.receiptSettings;\n if (originalPrice && copaymentSettings.length !== 0) {\n clientCopaymentSetting = {\n originalPrice,\n };\n copaymentSettings.forEach(({ disadvantagedType, disadvantagedLabel, copayment }) => {\n clientCopaymentSetting[disadvantagedType] = {\n label: disadvantagedLabel,\n value: copayment,\n };\n });\n }\n }\n\n if (!clientCopaymentSetting) {\n toastr.error('請先新增收據費用設定');\n return;\n }\n\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n\n const columnWidth = [9, 12, 15, 9, 9, 12, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 70];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n let rowIndex = 1;\n\n let cell;\n ['姓名', '身份證字號', '繳費方式', '身份別', '長照等級', '聯絡電話', '午餐送餐員', '晚餐送餐員', '居服員', '午餐次數',\n '晚餐次數', '用餐總次數', '補助次數', '自購次數', '部分負擔', '自購費用', '耗材費', '加飯菜費', '總費用', '匯款簡訊']\n .forEach((header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 11, name: fontName };\n });\n rowIndex += 1;\n\n elders.sort((a, b) => a.name > b.name ? 1 : -1).forEach((elder) => {\n const {\n id,\n name,\n identificationCardId,\n disadvantagedTypesSlot,\n cmsLevel,\n phoneNumber,\n paymentMethod,\n } = elder;\n const elderOrders = orders.filter(({ elderId }) => elderId === id);\n\n if (disadvantagedTypesSlot && disadvantagedTypesSlot.length !== 0) {\n disadvantagedTypesSlot.forEach(({ start, end, type }) => {\n const filterOrders = elderOrders.filter(({ date }) => date >= start && date < end);\n const nonSelfPayOrders = filterOrders.filter(({ date, category }) => {\n if (!['一般', '一般戶'].includes(type)) { // 弱勢長輩的\"送餐\"和\"送餐和物資\"訂單\n if (['送餐', '送餐和物資'].includes(category)) {\n return true;\n }\n }\n return false;\n });\n const selfPayOrders = filterOrders.filter(({ date, category }) => {\n if (!['一般', '一般戶'].includes(type)) { // 弱勢長輩的\"自費餐\"訂單\n if (['自費餐'].includes(category)) {\n return true;\n }\n return false;\n }\n return true;\n });\n if (selfPayOrders.length === 0 && nonSelfPayOrders.length === 0) {\n return;\n }\n if ((!clientCopaymentSetting || clientCopaymentSetting[type] === undefined) && type !== '一般' && type !== '一般戶') {\n toastr.warning(`${elder.name}的\"${type}\"身份沒有對應的收據費用設定`);\n console.error(`${elder.name}的\"${type}\"身份沒有對應的收據費用設定`);\n return;\n }\n console.log(nonSelfPayOrders);\n console.log(selfPayOrders);\n const copayment = clientCopaymentSetting[type]?.value || 0;\n const nonSelfPayLunchCount = nonSelfPayOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length;\n const nonSelfPayDinnerCount = nonSelfPayOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length;\n const selfPayLunchCount = selfPayOrders.filter(({ mealSlot }) => mealSlot === 'lunch').length;\n const selfPayDinnerCount = selfPayOrders.filter(({ mealSlot }) => mealSlot === 'dinner').length;\n const lunchOrderWithDeliveryStaff = filterOrders.find(({ mealSlot, deliveryStaffId }) => mealSlot === 'lunch' && deliveryStaffId);\n let lunchDeliveryStaff;\n if (lunchOrderWithDeliveryStaff) {\n lunchDeliveryStaff = deliveryStaffs.find(({ id }) => id === lunchOrderWithDeliveryStaff.deliveryStaffId);\n }\n const dinnerOrderWithDeliveryStaff = filterOrders.find(({ mealSlot, deliveryStaffId }) => mealSlot === 'dinner' && deliveryStaffId);\n let dinnerDeliveryStaff;\n if (dinnerOrderWithDeliveryStaff) {\n dinnerDeliveryStaff = deliveryStaffs.find(({ id }) => id === dinnerOrderWithDeliveryStaff.deliveryStaffId);\n }\n let selfPayTotalPrice = 0;\n let nonSelfPayTotalPrice = 0;\n let paperBoxTotalPrice = 0;\n let addFoodTotalPrice = 0;\n selfPayOrders.forEach(({ mealItems }) => {\n mealItems.forEach(({ price, surcharges }) => {\n selfPayTotalPrice += price;\n if (surcharges?.length) {\n const paperBox = surcharges.find(({ name }) => name === '紙盒');\n if (paperBox) {\n selfPayTotalPrice -= paperBox.price;\n paperBoxTotalPrice += paperBox.price;\n }\n const addFood = surcharges.find(({ name }) => name === '加飯菜');\n if (addFood) {\n selfPayTotalPrice -= addFood.price;\n addFoodTotalPrice += addFood.price;\n }\n }\n });\n });\n nonSelfPayOrders.forEach(({ mealItems }) => {\n mealItems.forEach(({ surcharges }) => {\n if (surcharges?.length) {\n const paperBox = surcharges.find(({ name }) => name === '紙盒');\n if (paperBox) {\n paperBoxTotalPrice += paperBox.price;\n }\n const addFood = surcharges.find(({ name }) => name === '加飯菜');\n if (addFood) {\n addFoodTotalPrice += addFood.price;\n }\n }\n });\n });\n nonSelfPayTotalPrice = (nonSelfPayLunchCount + nonSelfPayDinnerCount) * copayment;\n let smsMessage = '';\n if (paymentMethod === '匯款-簡訊通知') {\n const total = selfPayTotalPrice + nonSelfPayTotalPrice + paperBoxTotalPrice + addFoodTotalPrice;\n let mealDetail = `共${nonSelfPayLunchCount + nonSelfPayDinnerCount + selfPayLunchCount + selfPayDinnerCount}餐`;\n if (paperBoxTotalPrice) {\n mealDetail += `、紙盒費 ${paperBoxTotalPrice} 元`;\n }\n if (addFoodTotalPrice) {\n mealDetail += `、加飯菜費 ${addFoodTotalPrice} 元`;\n }\n smsMessage = `您好,通知長輩 ${name} ${selectedMonth}月份送餐費用共 ${total}元 (${mealDetail})\\n\\\n煩請在15日前匯款完成,謝謝。\\n\\\n匯款帳戶:合作金庫溪湖分行 (006) 1184-717-038026\\n\\\n戶名:財團法人彰化縣私立慈恩社會福利慈善事業基金會附設彰化縣私立慈恩居家式服務類長期照顧服務機構\\n\\\n有任何問題可來電:04-8683143慈恩送餐`;\n }\n const elderRowValue = [\n name, identificationCardId || '', paymentMethod || '',\n ['一般', '一般戶'].includes(type) ? '全自購' : type,\n cmsLevel || '',\n phoneNumber || '',\n lunchDeliveryStaff?.name || '', // 午餐送餐員 // 慈恩說可以略過,不過還是先放某張訂單的大使\n dinnerDeliveryStaff?.name || '', // 晚餐餐送餐員 // 慈恩說可以略過,不過還是先放某張訂單的大使\n '', // 居服員 // 慈恩說不用放\n nonSelfPayLunchCount + selfPayLunchCount,\n nonSelfPayDinnerCount + selfPayDinnerCount,\n nonSelfPayLunchCount + selfPayLunchCount + nonSelfPayDinnerCount + selfPayDinnerCount,\n nonSelfPayLunchCount + nonSelfPayDinnerCount,\n selfPayLunchCount + selfPayDinnerCount,\n nonSelfPayTotalPrice, // 部分負擔\n selfPayTotalPrice, // 自購費用\n paperBoxTotalPrice, // 耗材費\n addFoodTotalPrice, // 加飯費\n selfPayTotalPrice + nonSelfPayTotalPrice + paperBoxTotalPrice + addFoodTotalPrice, // 總費用\n smsMessage,\n ];\n elderRowValue.forEach((value, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = value;\n cell.alignment = { horizontal: 'left', vertical: 'middle', wrapText: true };\n cell.font = { size: 11, name: fontName };\n });\n\n rowIndex += 1;\n });\n }\n });\n\n return worksheet;\n}\n\nexport default function AccountingSMS({ clientOptions = [] }) {\n const [isLoading, setIsLoading] = useState(false);\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [selectedCounty, setSelectedCounty] = useState(counties[0]);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeInactiveElders, setIncludeInactiveElders] = useState(false);\n const [includeNonDisElders, setIncludeNonDisElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] = useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] = useState(false);\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState('all');\n const excludeNonFoodDeliveryOrders = false;\n\n const collectData = async () => {\n const from = moment(selectedMonth).tz(TIME_ZONE).startOf('month');\n const to = moment(selectedMonth).tz(TIME_ZONE).endOf('month');\n const fromDate = from.format('YYYY-MM-DD');\n const toDate = to.format('YYYY-MM-DD');\n const fromISOString = from.toISOString();\n const toISOString = to.toISOString();\n // const monthString = from.format('YYYY/MM');\n const period = `${fromDate}__${toDate}`;\n const { id: clientId } = clientOptions.find(({ id }) => id === selectedClientId);\n\n global.logger.debug({\n selectedClientId,\n period,\n selectedMonth,\n fromDate,\n toDate,\n fromISOString,\n toISOString,\n });\n\n const [\n elders,\n orders,\n { data: { getClient: client } },\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: includeInactiveElders ? undefined : { eq: '使用中' },\n filter: includeNonDisElders ? undefined : {\n isDisadvantaged: {\n eq: 1,\n },\n },\n limit: 1000,\n }),\n asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n request(getClient, { id: clientId }),\n ]);\n\n const deliveryStaffIds = [];\n orders.forEach(({ deliveryStaffId }) => {\n if (deliveryStaffId && !deliveryStaffIds.includes(deliveryStaffId)) {\n deliveryStaffIds.push(deliveryStaffId);\n }\n });\n\n let pandagoDeliveryStaffId;\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: data } } = await request( /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n name\n username\n identificationCardId\n }\n }\n `, { id });\n\n if (data.username === 'pandago') {\n pandagoDeliveryStaffId = id;\n }\n\n return data;\n }));\n\n const pandagoOrders = await Promise.all(orders\n .filter(({ deliveryStaffId }) => deliveryStaffId === pandagoDeliveryStaffId)\n .map(async ({ id: orderId }) => {\n const [pandagoOrder] = await asyncListAll(getPandagoOrdersByOrderByCreatedAt, {\n orderId,\n limit: 1,\n });\n\n return pandagoOrder;\n }));\n\n processShareOrder(elders, orders);\n processDisadvantagedTypes(selectedMonth, elders);\n\n writeReport({\n county: selectedCounty,\n elders, orders, deliveryStaffs, pandagoOrders, selectedMonth, client, includeUndeliveredOrders, excludeNonFoodDeliveryOrders,\n selectedPaymentMethod,\n });\n };\n\n const triggerDownload = async () => {\n try {\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n\n const updateCounty = (client) => {\n if (client && client.county) {\n const targetCounty = counties.find((county) => county === client.county);\n if (targetCounty) {\n setSelectedCounty(targetCounty);\n }\n }\n };\n\n useEffect(() => {\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n updateCounty(clientOptions[0]);\n }\n }, [clientOptions]);\n\n return (\n
\n

會計對賬與簡訊表

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label=\"機構\"\n onChange={(value) => {\n setSelectedClientId(value);\n if (value) {\n const client = clientOptions.find(({ id }) => id === value);\n updateCounty(client);\n }\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 縣市\n setSelectedCounty(event.target.value)}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 收費方式\n setSelectedPaymentMethod(event.target.value)}\n disabled={isLoading}\n >\n \n 全部\n \n {/* value是'null', 會無法顯示'無', 用'none'處理 */}\n {elderPaymentMethod.map(({ value, label }) => (\n \n {label}\n \n ))}\n \n \n
\n
\n {\n setIncludeNonDisElders(e.target.checked);\n }}\n />\n }\n label={}\n />\n {\n setIncludeInactiveElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n
\n\n \n 下載\n {isLoading && }\n \n
\n );\n}\n\nAccountingSMS.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport moment from 'moment-timezone';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport { counties } from '@silvergatedelivery/constants';\nimport { asyncListAll, request } from 'utilities/graph';\nimport { getEldersByClientByStatus, getOrdersByClientByDate } from './queries';\nimport { getClient } from 'graphql/queries';\nimport {\n processShareOrder,\n processDisadvantagedTypes,\n buildColumnsArray,\n getWeeksOfMonth,\n} from './CountyPrsReport/workbooks/helpers';\nimport JSZip from 'jszip';\nimport { download } from 'utilities/file';\nimport ExcelJS from 'exceljs';\nimport { toastr } from 'react-redux-toastr';\nimport LabelWithToolTip from './LabelWithToolTip';\n\nconst monthOptions = Array(10)\n .fill('')\n .map((x, index) => {\n return moment().add(-index, 'months').format('YYYY-MM');\n });\n\nasync function writeReport({\n county: inCounty,\n elders: allElders,\n orders: allOrders,\n selectedMonth: selectedYearMonth = 'YYYY-MM',\n client,\n includeUndeliveredOrders = false,\n excludeNonFoodDeliveryOrders = false,\n}) {\n const elders = allElders.filter(({ address }) => address.county === inCounty);\n if (elders.length == 0) {\n toastr.error('沒有符合設定條件的送餐對象');\n }\n let includedOrderStatus = ['delivered', 'completed'];\n if (includeUndeliveredOrders) {\n includedOrderStatus = includedOrderStatus.concat([\n 'ready',\n 'readyForPickup',\n 'delivering',\n ]);\n }\n let orders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n if (excludeNonFoodDeliveryOrders) {\n orders = orders.filter(\n ({ category }) =>\n ['送餐', '送餐和物資', '愛心餐', '自費餐'].includes(category));\n }\n if (orders.length === 0) {\n toastr.error('沒有符合設定條件的訂單');\n }\n\n const zip = new JSZip();\n\n const workbook = new ExcelJS.Workbook();\n const [selectedYear, selectedMonth] = selectedYearMonth.split('-');\n const ROCYear = parseInt(selectedYear) - 1911;\n const firstDayOfMonth = moment(selectedYearMonth, 'YYYY-MM')\n .startOf('month')\n .format('YYYY-MM-DD');\n const lastDayOfMonth = moment(selectedYearMonth, 'YYYY-MM')\n .endOf('month')\n .format('YYYY-MM-DD');\n\n // 月統計\n const worksheetCountry = workbook.addWorksheet(\n `${ROCYear}${selectedMonth}依鄉鎮`,\n );\n getWorksheetClassifyByCountry(\n worksheetCountry,\n elders,\n orders,\n firstDayOfMonth,\n lastDayOfMonth,\n );\n\n const worksheetIdentity = workbook.addWorksheet(\n `${ROCYear}${selectedMonth}依身分別`,\n );\n getWorksheetClassifyByIdentity(\n worksheetIdentity,\n elders,\n orders,\n firstDayOfMonth,\n lastDayOfMonth,\n );\n\n const worksheetByLevel = workbook.addWorksheet(\n `${ROCYear}${selectedMonth}依等級`,\n );\n getWorksheetClassifyByLevel(\n worksheetByLevel,\n elders,\n orders,\n firstDayOfMonth,\n lastDayOfMonth,\n );\n\n const worksheetByGender = workbook.addWorksheet(\n `${ROCYear}${selectedMonth}依性別`,\n );\n getWorksheetClassifyByGender(\n worksheetByGender,\n elders,\n orders,\n firstDayOfMonth,\n lastDayOfMonth,\n );\n\n const worksheetByPay = workbook.addWorksheet(\n `${ROCYear}${selectedMonth}依補助_自購`,\n );\n getWorksheetClassifyByPay(\n worksheetByPay,\n elders,\n orders,\n firstDayOfMonth,\n lastDayOfMonth,\n );\n\n // 週統計\n const weeksOfMonth = getWeeksOfMonth(selectedYearMonth);\n\n const periodOrders = allOrders\n .filter(({ elderId }) => elders.some(({ id }) => id === elderId))\n .filter(({ status }) => includedOrderStatus.includes(status));\n\n weeksOfMonth.forEach(({ start, end }) => {\n const [startYear, startMonth, startDay] = start.split('-');\n const [, endMonth, endDay] = end.split('-');\n const ROCYear = parseInt(startYear) - 1911;\n const ordersInPeriod = periodOrders.filter(\n ({ date }) => date >= start && date <= end,\n );\n const worksheetCountry = workbook.addWorksheet(\n `${ROCYear}${startMonth}${startDay}-${endMonth}${endDay}依鄉鎮`,\n );\n getWorksheetClassifyByCountry(\n worksheetCountry,\n elders,\n ordersInPeriod,\n start,\n end,\n );\n\n const worksheetIdentity = workbook.addWorksheet(\n `${ROCYear}${startMonth}${startDay}-${endMonth}${endDay}依身分別`,\n );\n getWorksheetClassifyByIdentity(\n worksheetIdentity,\n elders,\n ordersInPeriod,\n start,\n end,\n );\n\n const worksheetByLevel = workbook.addWorksheet(\n `${ROCYear}${startMonth}${startDay}-${endMonth}${endDay}依等級`,\n );\n getWorksheetClassifyByLevel(\n worksheetByLevel,\n elders,\n ordersInPeriod,\n start,\n end,\n );\n\n const worksheetByGender = workbook.addWorksheet(\n `${ROCYear}${startMonth}${startDay}-${endMonth}${endDay}依性別`,\n );\n getWorksheetClassifyByGender(\n worksheetByGender,\n elders,\n ordersInPeriod,\n start,\n end,\n );\n\n const worksheetByPay = workbook.addWorksheet(\n `${ROCYear}${startMonth}${startDay}-${endMonth}${endDay}依補助_自購`,\n );\n getWorksheetClassifyByPay(\n worksheetByPay,\n elders,\n ordersInPeriod,\n start,\n end,\n );\n });\n\n try {\n if (workbook && workbook.worksheets && workbook.worksheets.length > 0) {\n const bufferDataByDistrict = await workbook.xlsx.writeBuffer();\n zip.file(\n `${ROCYear}${selectedMonth}服務使用者分類統計表.xlsx`,\n bufferDataByDistrict,\n { binary: true },\n );\n }\n } catch (e) {\n console.error(e);\n }\n\n const files = Object.keys(zip.files);\n if (files.length !== 0) {\n const zipContent = zip.generate({ type: 'blob' });\n download(`${ROCYear}${selectedMonth}服務使用者分類統計表.zip`, zipContent);\n }\n}\n\nfunction getWorksheetClassifyByCountry(\n worksheet,\n elders,\n orders = [],\n startDay,\n endDay,\n) {\n // 每區elders 數量\n const periodOrders = orders.filter(\n ({ date }) => date >= startDay && date <= endDay,\n );\n const elderIds = [...new Set(periodOrders.map((item) => item.elderId))];\n const districtCounts = {};\n\n elderIds.forEach((elderId) => {\n const elderInfo = elders.find((elder) => elder.id === elderId);\n const district = elderInfo.address.district;\n\n if (!districtCounts[district]) {\n districtCounts[district] = 0;\n }\n\n districtCounts[district] += 1;\n });\n\n // 午晚餐數量\n const mealCounts = periodOrders.reduce((acc, order) => {\n const elderInfo = elders.find((elder) => elder.id === order.elderId);\n if (!elderInfo) {\n console.log(`can not find elder ${order.elderId} for order ${order.id}`);\n return;\n }\n\n const district = elderInfo.address.district;\n\n if (!acc[district]) {\n acc[district] = { lunch: 0, dinner: 0 };\n }\n\n const mealCount = order.mealItems.reduce(\n (sum, item) => sum + item.quantity,\n 0,\n );\n acc[district][order.mealSlot] += mealCount;\n\n return acc;\n }, {});\n\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n\n const columnWidth = [10, 10, 10, 10, 10];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n let rowIndex = 1;\n\n // 標題\n let cell;\n ['項目', '個案數', '全部數量', '午餐數量', '晚餐數量'].forEach(\n (header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 11, name: fontName };\n },\n );\n rowIndex += 1;\n\n Object.entries(districtCounts).forEach(([district, count]) => {\n worksheet.getCell(`A${rowIndex}`).value = district;\n worksheet.getCell(`B${rowIndex}`).value = count;\n // 午晚餐數量\n const mealCount = mealCounts[district] || { lunch: 0, dinner: 0 };\n worksheet.getCell(`D${rowIndex}`).value = mealCount.lunch;\n worksheet.getCell(`E${rowIndex}`).value = mealCount.dinner;\n // 總數\n worksheet.getCell(`C${rowIndex}`).value = {\n formula: `D${rowIndex} + E${rowIndex}`,\n };\n\n rowIndex++;\n });\n\n return worksheet;\n}\n\nfunction getWorksheetClassifyByIdentity(\n worksheet,\n elders,\n orders = [],\n startDay,\n endDay,\n) {\n // elders 身分別數量\n const periodOrders = orders.filter(\n ({ date }) => date >= startDay && date <= endDay,\n );\n\n const elderIds = [...new Set(periodOrders.map((item) => item.elderId))];\n const identityCounts = {};\n\n elderIds.forEach((elderId, _) => {\n const elderInfo = elders.find((elder) => elder.id === elderId);\n const { disadvantagedTypesSlot } = elderInfo;\n if (disadvantagedTypesSlot.length != 0) {\n disadvantagedTypesSlot.forEach(({ start: slotStart, end: slotEnd, type: identity }) => {\n if (slotStart <= endDay && startDay <= slotEnd) {\n if (!identityCounts[identity]) {\n identityCounts[identity] = 0;\n }\n identityCounts[identity] += 1;\n }\n });\n } else {\n if (!identityCounts['未設定']) {\n identityCounts['未設定'] = 0;\n }\n identityCounts['未設定'] += 1;\n }\n });\n\n // 午晚餐數量\n const mealCounts = periodOrders.reduce((acc, order) => {\n const elderId = order.elderId;\n const elderInfo = elders.find((elder) => elder.id === elderId);\n if (elderInfo.disadvantagedTypesSlot) {\n elderInfo.disadvantagedTypesSlot.forEach(({ start: slotStart, end: slotEnd, type: identity }) => {\n if (order.date >= slotStart && order.date <= slotEnd) {\n if (!acc[identity]) {\n acc[identity] = { lunch: 0, dinner: 0 };\n }\n\n const mealCount = order.mealItems.reduce(\n (sum, item) => sum + item.quantity,\n 0,\n );\n acc[identity][order.mealSlot] += mealCount;\n }\n });\n }\n\n return acc;\n }, {});\n\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n\n const columnWidth = [10, 10, 10, 10, 10];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n let rowIndex = 1;\n\n // 標題\n let cell;\n ['項目', '個案數', '全部數量', '午餐數量', '晚餐數量'].forEach(\n (header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 11, name: fontName };\n },\n );\n rowIndex += 1;\n Object.entries(identityCounts).forEach(([identity, count]) => {\n worksheet.getCell(`A${rowIndex}`).value = identity;\n worksheet.getCell(`B${rowIndex}`).value = count;\n // 午晚餐數量\n const mealCount = mealCounts[identity] || { lunch: 0, dinner: 0 };\n worksheet.getCell(`D${rowIndex}`).value = mealCount.lunch;\n worksheet.getCell(`E${rowIndex}`).value = mealCount.dinner;\n // 總數\n worksheet.getCell(`C${rowIndex}`).value = {\n formula: `D${rowIndex} + E${rowIndex}`,\n };\n\n rowIndex++;\n });\n\n return worksheet;\n}\n\nfunction getWorksheetClassifyByGender(\n worksheet,\n elders,\n orders = [],\n startDay,\n endDay,\n) {\n // elders 性別數量\n const periodOrders = orders.filter(\n ({ date }) => date >= startDay && date <= endDay,\n );\n const elderIds = [...new Set(periodOrders.map((item) => item.elderId))];\n const genderCounts = {};\n\n elderIds.forEach((elderId, _) => {\n const elderInfo = elders.find((elder) => elder.id === elderId);\n const gender = elderInfo.gender;\n\n if (!genderCounts[gender]) {\n genderCounts[gender] = 0;\n }\n\n genderCounts[gender] += 1;\n });\n\n // 午晚餐數量\n const mealCounts = periodOrders.reduce((acc, order) => {\n if (order.date <= endDay && order.date >= startDay) {\n const elderId = order.elderId;\n const elderInfo = elders.find((elder) => elder.id === elderId);\n if (!acc[elderInfo.gender]) {\n acc[elderInfo.gender] = { lunch: 0, dinner: 0 };\n }\n\n const mealCount = order.mealItems.reduce(\n (sum, item) => sum + item.quantity,\n 0,\n );\n acc[elderInfo.gender][order.mealSlot] += mealCount;\n }\n return acc;\n }, {});\n\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n\n const columnWidth = [10, 10, 10, 10, 10];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n let rowIndex = 1;\n\n // 標題\n let cell;\n ['項目', '個案數', '全部數量', '午餐數量', '晚餐數量'].forEach(\n (header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 11, name: fontName };\n },\n );\n rowIndex += 1;\n\n const genderType = ['male', 'female'];\n\n genderType.forEach((val, _) => {\n const gender = val === 'male' ? '男' : '女';\n\n worksheet.getCell(`A${rowIndex}`).value = gender;\n worksheet.getCell(`B${rowIndex}`).value = genderCounts[val] || 0;\n // 午晚餐數量\n const mealCount = mealCounts[val] || { lunch: 0, dinner: 0 };\n\n worksheet.getCell(`D${rowIndex}`).value = mealCount.lunch;\n worksheet.getCell(`E${rowIndex}`).value = mealCount.dinner;\n // 總數\n worksheet.getCell(`C${rowIndex}`).value = {\n formula: `D${rowIndex} + E${rowIndex}`,\n };\n\n rowIndex++;\n });\n\n return worksheet;\n}\n\nfunction getWorksheetClassifyByLevel(\n worksheet,\n elders,\n orders = [],\n startDay,\n endDay,\n) {\n // elders 級別數量\n const periodOrders = orders.filter(\n ({ date }) => date >= startDay && date <= endDay,\n );\n const elderIds = [...new Set(periodOrders.map((item) => item.elderId))];\n const levelCounts = {};\n\n elderIds.forEach((elderId, _) => {\n const elderInfo = elders.find((elder) => elder.id === elderId);\n const cmsLevel = elderInfo.cmsLevel;\n\n if (cmsLevel) {\n if (!levelCounts[cmsLevel]) {\n levelCounts[cmsLevel] = 0;\n }\n\n levelCounts[cmsLevel] += 1;\n } else {\n if (!levelCounts['未設定']) {\n levelCounts['未設定'] = 0;\n }\n\n levelCounts['未設定'] += 1;\n }\n });\n\n // 午晚餐數量\n const mealCounts = periodOrders.reduce((acc, order) => {\n const elderId = order.elderId;\n const elderInfo = elders.find((elder) => elder.id === elderId);\n const cmsLevel = elderInfo.cmsLevel || '未設定';\n\n if (cmsLevel) {\n if (order.date <= endDay && order.date >= startDay) {\n if (!acc[cmsLevel]) {\n acc[cmsLevel] = { lunch: 0, dinner: 0 };\n }\n\n const mealCount = order.mealItems.reduce(\n (sum, item) => sum + item.quantity,\n 0,\n );\n acc[cmsLevel][order.mealSlot] += mealCount;\n }\n return acc;\n }\n }, {});\n\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n\n const columnWidth = [10, 10, 10, 10, 10];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n let rowIndex = 1;\n\n // 標題\n let cell;\n ['項目', '個案數', '全部數量', '午餐數量', '晚餐數量'].forEach(\n (header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 11, name: fontName };\n },\n );\n rowIndex += 1;\n\n const cmsLevels = [\n '1a級',\n '1b級',\n '1級',\n '2級',\n '3級',\n '4級',\n '5級',\n '6級',\n '7級',\n '8級',\n '未設定',\n ];\n\n cmsLevels.forEach((cms, _) => {\n const cmsCellName = cms === '未設定' ? '未設定' : '第' + cms;\n\n worksheet.getCell(`A${rowIndex}`).value = cmsCellName;\n worksheet.getCell(`B${rowIndex}`).value = levelCounts[cms] || 0;\n // 午晚餐數量\n const mealCount = mealCounts[cms] || { lunch: 0, dinner: 0 };\n worksheet.getCell(`D${rowIndex}`).value = mealCount.lunch;\n worksheet.getCell(`E${rowIndex}`).value = mealCount.dinner;\n // 總數\n worksheet.getCell(`C${rowIndex}`).value = {\n formula: `D${rowIndex} + E${rowIndex}`,\n };\n\n rowIndex++;\n });\n\n return worksheet;\n}\n\nfunction getWorksheetClassifyByPay(\n worksheet,\n elders,\n orders = [],\n startDay,\n endDay,\n) {\n // elders 補助自費數量\n const payType = ['全補助個案', '全自購個案'];\n const periodOrder = orders.filter(\n ({ date }) => date >= startDay && date <= endDay,\n );\n const elderIds = [...new Set(periodOrder.map((item) => item.elderId))];\n const payCounts = {};\n\n elderIds.forEach((elderId, _) => {\n const elderInfo = elders.find((elder) => elder.id === elderId);\n const pay = elderInfo.isDisadvantaged;\n\n if (!payCounts[pay]) {\n payCounts[pay] = 0;\n }\n\n payCounts[pay] += 1;\n });\n\n // 午晚餐數量\n const mealCounts = orders.reduce((acc, order) => {\n const elderId = order.elderId;\n const elderInfo = elders.find((elder) => elder.id === elderId);\n const isDisadvantaged = elderInfo.isDisadvantaged;\n\n if (order.date <= endDay && order.date >= startDay) {\n if (!acc[isDisadvantaged]) {\n acc[isDisadvantaged] = { lunch: 0, dinner: 0 };\n }\n\n const mealCount = order.mealItems.reduce(\n (sum, item) => sum + item.quantity,\n 0,\n );\n acc[isDisadvantaged][order.mealSlot] += mealCount;\n }\n\n return acc;\n }, {});\n\n const fontName = 'Calibri';\n const range = 'A:Z';\n const columnArray = buildColumnsArray(range);\n\n const columnWidth = [10, 10, 10, 10, 10];\n columnWidth.forEach((_, index) => {\n worksheet.getColumn(columnArray[index]).width = columnWidth[index];\n });\n\n let rowIndex = 1;\n\n // 標題\n let cell;\n ['項目', '個案數', '全部數量', '午餐數量', '晚餐數量'].forEach(\n (header, index) => {\n cell = worksheet.getCell(`${columnArray[index]}${rowIndex}`);\n cell.value = header;\n cell.alignment = { horizontal: 'left', vertical: 'middle' };\n cell.font = { size: 11, name: fontName };\n },\n );\n rowIndex += 1;\n\n payType.forEach((payType, _) => {\n const paymentMethod = payType === '全補助個案' ? 1 : 0;\n\n worksheet.getCell(`A${rowIndex}`).value = payType;\n worksheet.getCell(`B${rowIndex}`).value = payCounts[paymentMethod] || 0;\n // 午晚餐數量\n const mealCount = mealCounts[paymentMethod] || { lunch: 0, dinner: 0 };\n\n worksheet.getCell(`D${rowIndex}`).value = mealCount.lunch;\n worksheet.getCell(`E${rowIndex}`).value = mealCount.dinner;\n // 總數\n worksheet.getCell(`C${rowIndex}`).value = {\n formula: `D${rowIndex} + E${rowIndex}`,\n };\n\n rowIndex++;\n });\n\n return worksheet;\n}\n\nexport default function UserTypeReport({ clientOptions }) {\n const [isLoading, setIsLoading] = useState(false);\n const [selectedMonth, setSelectedMonth] = useState(monthOptions[0]);\n const [selectedCounty, setSelectedCounty] = useState(counties[0]);\n const [selectedClientId, setSelectedClientId] = useState();\n const [includeInactiveElders, setIncludeInactiveElders] = useState(false);\n const [includeNonDisElders, setIncludeNonDisElders] = useState(false);\n const [includeUndeliveredOrders, setIncludeUndeliveredOrders] =\n useState(false);\n // const [excludeNonFoodDeliveryOrders, setExcludeNonFoodDeliveryOrders] =\n // useState(false);\n const excludeNonFoodDeliveryOrders = true;\n\n const collectData = async () => {\n const weeksOfMonth = getWeeksOfMonth(selectedMonth);\n const fromDate = weeksOfMonth[0].start;\n const toDate = weeksOfMonth[weeksOfMonth.length - 1].end;\n const period = `${fromDate}__${toDate}`;\n const { id: clientId } = clientOptions.find(\n ({ id }) => id === selectedClientId,\n );\n\n global.logger.debug({\n selectedClientId,\n period,\n selectedMonth,\n fromDate,\n toDate,\n });\n\n const [\n elders,\n orders,\n {\n data: { getClient: client },\n },\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: includeInactiveElders ? undefined : { eq: '使用中' },\n filter: includeNonDisElders ?\n undefined :\n {\n isDisadvantaged: {\n eq: 1,\n },\n },\n limit: 1000,\n }),\n asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [fromDate, toDate],\n },\n limit: 1000,\n }),\n request(getClient, { id: clientId }),\n ]);\n\n processShareOrder(elders, orders);\n processDisadvantagedTypes(selectedMonth, elders, fromDate, toDate);\n\n writeReport({\n county: selectedCounty,\n elders,\n orders,\n selectedMonth,\n client,\n includeUndeliveredOrders,\n excludeNonFoodDeliveryOrders,\n });\n };\n\n const triggerDownload = async () => {\n try {\n setIsLoading(true);\n await collectData();\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n const updateCounty = (client) => {\n if (client && client.county) {\n const targetCounty = counties.find((county) => county === client.county);\n if (targetCounty) {\n setSelectedCounty(targetCounty);\n }\n }\n };\n\n useEffect(() => {\n if (clientOptions[0]) {\n setSelectedClientId(clientOptions[0].id);\n updateCounty(clientOptions[0]);\n }\n }, [clientOptions]);\n\n return (\n
\n

服務使用者分類統計

\n
\n \n name)}\n values={clientOptions.map(({ id }) => id)}\n required={true}\n value={selectedClientId}\n label='機構'\n onChange={(value) => {\n setSelectedClientId(value);\n if (value) {\n const client = clientOptions.find(({ id }) => id === value);\n updateCounty(client);\n }\n }}\n />\n \n \n 月份\n setSelectedMonth(event.target.value)}\n disabled={isLoading}\n >\n {monthOptions.map((item) => (\n \n {item}\n \n ))}\n \n \n \n 縣市\n setSelectedCounty(event.target.value)}\n disabled={isLoading}\n >\n {counties.map((item) => (\n \n {item}\n \n ))}\n \n \n
\n
\n {\n setIncludeNonDisElders(e.target.checked);\n }}\n />\n }\n label={\n \n }\n />\n {\n setIncludeInactiveElders(e.target.checked);\n }}\n />\n }\n label={'包含已停用的個案'}\n />\n {\n setIncludeUndeliveredOrders(e.target.checked);\n }}\n />\n }\n label={'包含未送達的訂單'}\n />\n {/* {\n setExcludeNonFoodDeliveryOrders(e.target.checked);\n }}\n />\n }\n label={'排除非送餐的訂單'}\n /> */}\n
\n\n \n 下載\n {isLoading && (\n \n )}\n \n
\n );\n}\n\nUserTypeReport.propTypes = {\n clientOptions: PropTypes.array,\n};\n","import React, { useState, useEffect } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\n\nimport MohwPrsReport from './MohwPrsReport';\nimport RestaurantReport from './RestaurantReport';\nimport RestaurantReportByOrg from './RestaurantReportByOrg';\nimport PandagoReport from './PandagoReport';\nimport UberReport from './UberReport';\nimport LalamoveReport from './LalamoveReport';\nimport CountyPrsReport from './CountyPrsReport/CountyPrsReport';\nimport VulnerableReport from './VulnerableReport';\nimport YearlyReport from './YearlyReport/YearlyReport';\nimport ElderReceipt from './ElderReceipt/ElderReceipt';\nimport SelfPayingReceipt from './SelfPayingReceipt/SelfPayingReceipt';\nimport DeliveryStaffSalary from './DeliveryStaffSalary/DeliveryStaffSalary';\nimport AccountingSMS from './AccountingSMS';\nimport UserTypeReport from './UserTypeReport';\nimport { sortBy } from 'utilities/sorting';\nimport cache from 'utilities/cache';\nimport { request, asyncListAll } from 'utilities/graph';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n marginTop: theme.spacing(2),\n height: '100%',\n },\n}));\n\nconst reportFunctions = [\n {\n value: 'mohwPrsReport',\n component: MohwPrsReport,\n },\n {\n value: 'countyPrsReport',\n component: CountyPrsReport,\n },\n {\n value: 'vulnerableReport',\n component: VulnerableReport,\n },\n {\n value: 'pandagoReport',\n component: PandagoReport,\n },\n {\n value: 'uberReport',\n component: UberReport,\n },\n {\n value: 'lalamoveReport',\n component: LalamoveReport,\n },\n {\n value: 'restaurantReport',\n component: RestaurantReport,\n },\n {\n value: 'restaurantReportByOrg',\n component: RestaurantReportByOrg,\n },\n {\n value: 'yearlyReport',\n component: YearlyReport,\n },\n {\n value: 'elderReceipt',\n component: ElderReceipt,\n },\n {\n value: 'selfPayingReceipt',\n component: SelfPayingReceipt,\n },\n {\n value: 'deliveryStaffSalary',\n component: DeliveryStaffSalary,\n },\n {\n value: 'accountingSMS',\n component: AccountingSMS,\n },\n // 2025-0206 add\n {\n value: 'userType',\n component: UserTypeReport,\n },\n];\n\nexport default function Reports() {\n const classes = useStyles();\n const [clientOptions, setClientOptions] = useState([]);\n const [enabledReportFunctions, setEnabledReportFunctions] =\n useState(reportFunctions);\n\n useEffect(() => {\n (async () => {\n const clientId = cache.get('app:facilityId');\n // const county = cache.get('app:location');\n if (clientId) {\n const {\n data: { getClient: client },\n } = await request(\n /* GraphQL */ `\n query GetClient($id: ID!) {\n getClient(id: $id) {\n id\n county\n name\n facilitySettings {\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n }\n featureConfiguration {\n reportTypes\n }\n }\n }\n `,\n { id: clientId },\n );\n if (client) {\n setEnabledReportFunctions(\n reportFunctions.filter((f) => {\n return !!client.featureConfiguration.reportTypes.find(\n (reportType) => reportType === f.value,\n );\n }),\n );\n setClientOptions([client]);\n }\n } else {\n const clients = await asyncListAll(\n /* GraphQL */ `\n query GetClientsByTypeByCounty(\n $type: ClientType\n $county: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelClientFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getClientsByTypeByCounty(\n type: $type\n county: $county\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n county\n name\n facilitySettings {\n dba\n govQualifiedPrice\n lunchStartTime\n lunchEndTime\n dinnerStartTime\n dinnerEndTime\n receiptSettings {\n originalPrice\n copaymentSettings {\n disadvantagedType\n disadvantagedLabel\n copayment\n }\n }\n }\n }\n nextToken\n }\n }\n `,\n {\n type: 'facility',\n },\n );\n setClientOptions(clients.sort(sortBy('name')));\n }\n })();\n }, []);\n\n return (\n \n \n {clientOptions.length !== 0 &&\n enabledReportFunctions.map((x, index) => (\n \n \n {/* For fast-refresh use */}\n \n \n \n ))}\n \n \n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { createConfiguration, updateConfiguration } from 'graphql/mutations';\nimport schema from './schema.json';\nimport uiSchema from './uiSchema';\n\nexport default function ConfigurationForm({ ...props }) {\n const createFunc = async (data) => {\n await request(createConfiguration, { input: data });\n };\n\n const updateFunc = async (data) => {\n await request(updateConfiguration, { input: data });\n };\n\n return (\n \n );\n}\n\nConfigurationForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport ConfigurationForm from './ConfigurationForm';\n\nexport default function ConfigurationEditButton({ ...props }) {\n return (\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport Table from 'components/Table/Table';\nimport {\n listConfigurations,\n} from 'graphql/queries';\nimport { asyncListAll } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\nimport ConfigurationEditButton from 'forms/ConfigurationForm/ConfigurationEditButton';\n\nconst title = '設定';\nconst description = '';\n\nexport default function ConfigurationTable() {\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'id',\n label: 'ID',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'category',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'key',\n label: '名稱',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'value',\n label: '數值',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '描述',\n options: {\n filter: false,\n sort: false,\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n\n const data = await asyncListAll(listConfigurations);\n setData(data\n .sort(sortBy('key'))\n .sort(sortBy('category')),\n );\n\n setIsLoading(false);\n })();\n }, [lastUpdatedAt]);\n\n return (\n setLastUpdatedAt(Date.now())}\n editButton={ConfigurationEditButton}\n />\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Paper from '@material-ui/core/Paper';\nimport ReactJson from 'react-json-view';\n\nimport {\n pandagoAddOutlets,\n} from 'graphql/mutations';\nimport { request } from 'utilities/graph';\nimport ConfigurationTable from './ConfigurationTable';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n}));\n\nexport default function System() {\n const classes = useStyles();\n\n const [isLoading, setIsLoading] = useState(false);\n const [message, setMessage] = useState({});\n\n const triggerPandagoAddOutlets = async () => {\n try {\n setMessage({});\n setIsLoading(true);\n const result = await request(pandagoAddOutlets, { input: {} });\n global.logger.debug(result);\n setMessage(result);\n } catch (e) {\n global.logger.debug(e);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {}, []);\n\n return (\n \n \n \n \n

Pandago 餐廳同步

\n

未來如果銀色大門有新增門市都要填到這張表上,通知我們開通,總公司帳號才看得到各門市的定單喔

\n

\n https://docs.google.com/spreadsheets/d/1XFbRhbW5dfwqYXg7wwIGtMjClUbMgKpRZ95pZCKRndI/edit#gid=1995729169\n

\n \n 點此將餐廳新增至Pandogo\n {isLoading && }\n \n

\n \n
\n
\n \n \n \n
\n
\n );\n}\n","export const getDeliveryStaff = /* GraphQL */ `\n query GetDeliveryStaff($id: ID!) {\n getDeliveryStaff(id: $id) {\n id\n username\n isActive\n county\n clientId\n name\n nickname\n phoneNumber\n }\n }\n`;\n\nconst orderItems = /* GraphQL */ `\n items {\n id\n clientId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n category\n deliveryGroupId\n deliveryGroupSortOrder\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n paymentMethod\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n # direction {\n # startAddress\n # startLocation {\n # lat\n # lng\n # }\n # endAddress\n # endLocation {\n # lat\n # lng\n # }\n # distance\n # duration\n # distanceInMeters\n # durationInSeconds\n # overviewPolyline\n # bounds {\n # northeast {\n # lat\n # lng\n # }\n # southwest {\n # lat\n # lng\n # }\n # }\n # }\n client {\n id\n type\n isActive\n county\n username\n name\n phoneNumber\n }\n elder {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n }\n restaurant {\n id\n owner\n restaurantOwnerId\n isActive\n county\n clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n }\n }\n`;\n\nexport const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${orderItems}\n nextToken\n }\n }\n`;\n\nexport const getOrdersByCountyByDate = /* GraphQL */ `\n query GetOrdersByCountyByDate(\n $county: String\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByCountyByDate(\n county: $county\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${orderItems}\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Board from 'react-trello';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\n\nimport { sortOrder } from 'components/Schedule/helpers';\nimport { Colors } from '@silvergatedelivery/constants';\nimport { formatTime } from 'utilities/format';\nimport OrderDialog from 'components/Order/OrderDialog';\nimport LinkButton from 'components/Table/LinkButton';\nimport { getTranslatedOrderStatus } from 'utilities/translate';\nimport { useCache } from 'CacheProvider';\n\nimport './BoardView.css';\n\nconst CARD_WIDTH = 250;\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: CARD_WIDTH,\n backgroundColor: Colors.highlight,\n color: Colors.dark,\n padding: 8,\n marginBottom: 12,\n },\n cardTitle: {\n fontWeight: 'bold',\n fontSize: 18,\n },\n cardDescription: {\n fontSize: 16,\n lineHeight: '24px',\n },\n cardIssueDescription: {\n fontSize: 14,\n color: Colors.raised,\n },\n}));\n\nfunction Card({ title, metadata: order, visitorMode = false }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const { appGroup } = useCache();\n const orgMode = appGroup === 'OrgAdmins';\n const facilityMode = appGroup === 'FacilityAdmins';\n\n let deliveryStaffName = '';\n if (order.deliveryStaff) {\n deliveryStaffName = visitorMode ? (order.deliveryStaff.name[0] + `姓${t('送餐大使')}`) : order.deliveryStaff.name;\n }\n\n return (\n \n \n \n {title}\n \n {!orgMode &&\n
\n \n
\n \n
}\n \n \n {t('餐廳')}:{order.restaurant.name}
\n {!facilityMode && <>機構:{order.client.name}
}\n {order.deliveryStaff ? `大使:${deliveryStaffName}` : ''}\n
\n \n {order.isAudited === 1 ? order.issueSummary : ''}\n \n \n );\n}\n\nCard.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n metadata: PropTypes.any,\n visitorMode: PropTypes.bool,\n};\n\nexport default function BoardView({\n orders = [],\n}) {\n const classes = useStyles();\n const [lanes, setLanes] = useState();\n const { appGroup, selectedUserGroupParams } = useCache();\n const orgMode = appGroup === 'OrgAdmins';\n\n useEffect(() => {\n const data = [\n ...getTranslatedOrderStatus().map(({ label, value, color }) => {\n const matchedOrders = orders\n .filter(({ status }) => status === value)\n .sort(sortOrder);\n\n return {\n id: value,\n title: label,\n label: `${matchedOrders.length}`,\n cards: matchedOrders.map((order) => {\n let elderName = order.elder.name;\n let visitorMode = false;\n const { organizationData } = selectedUserGroupParams;\n if (orgMode && organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find(({ clientId }) => clientId === order.clientId);\n if (clientParams && clientParams.visitorMode) {\n elderName = (order.elder.name[0] + '姓長輩');\n visitorMode = true;\n }\n }\n return {\n id: order.id,\n title: `${formatTime(order.deliveryBy)} ${elderName}`,\n description: `${order.restaurant.name}`,\n metadata: order,\n visitorMode: visitorMode,\n };\n }),\n editLaneTitle: false,\n disallowAddingCard: true,\n hideCardDeleteIcon: true,\n droppable: false,\n style: {\n color: '#fff',\n backgroundColor: color,\n minWidth: CARD_WIDTH + 10,\n width: CARD_WIDTH + 10,\n maxHeight: 'calc(100vh - 220px)',\n },\n };\n }),\n ];\n setLanes(data);\n }, [orders]);\n\n if (!lanes) return null;\n\n return (\n \n {orders.length > 0 &&\n \n {\n return ;\n },\n }}\n />\n }\n );\n}\n\nBoardView.propTypes = {\n orders: PropTypes.array,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment-timezone';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport IconButton from '@material-ui/core/IconButton';\nimport Countdown from 'react-countdown';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport TextField from '@material-ui/core/TextField';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { DebounceInput } from 'react-debounce-input';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Marker from 'components/Map/Marker';\nimport { orderStatus } from '@silvergatedelivery/constants';\n\nimport { asyncListAll, request } from 'utilities/graph';\nimport {\n getDeliveryStaff,\n getOrdersByCountyByDate,\n getOrdersByClientByDate,\n} from './queries';\nimport {\n getDeliveryGroupsByClientByIsActive,\n getElderDeliveryGroupsByClientByStatus,\n} from 'graphql/queries';\nimport {\n TIME_ZONE,\n AUTO_UPDATE_INTERVAL_IN_MILLISECONDS,\n counties,\n} from '@silvergatedelivery/constants';\nimport { sortBy, sortOrdersByDeliveryGroups } from 'utilities/sorting';\nimport BoardView from './BoardView';\nimport cache from 'utilities/cache';\nimport { useCache } from 'CacheProvider';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n app: {\n position: 'relative',\n height: '100%',\n overflow: 'hidden',\n },\n centerContent: {\n width: '100%',\n height: '100%',\n transition: 'width 0.3s ease-in-out',\n overflow: 'auto',\n },\n centerContentShrink: {\n width: '70%',\n },\n popup: {\n position: 'absolute',\n top: 0,\n right: '-100%',\n width: '30%',\n height: '100%',\n boxShadow: '-2px 0px 10px rgba(0, 0, 0, 0.2)',\n transition: 'right 0.3s ease-in-out',\n overflow: 'hidden',\n },\n popupActive: {\n right: 0,\n },\n}));\n\nconst matchText = (a = '', b = '') => {\n return `${a}`.toLowerCase().includes(`${b}`.toLowerCase());\n};\n\nexport default function TodayOrders() {\n const classes = useStyles();\n const searchRef = useRef(null);\n const { t } = useTranslation();\n const allDeliveryGroups = {\n name: `所有${t('送餐群組')}`,\n id: 'all',\n };\n const mealSlots = [\n {\n label: `顯示${t('午餐')}和${t('晚餐')}`,\n value: 'all',\n },\n {\n label: `顯示${t('午餐')}`,\n value: 'lunch',\n },\n {\n label: `顯示${t('晚餐')}`,\n value: 'dinner',\n },\n ];\n const [isLoading, setIsLoading] = useState(false);\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [orders, setOrders] = useState([]);\n const [filteredOrders, setFilteredOrders] = useState([]);\n const [searchText, setSearchText] = useState('');\n const [onlyShowIssuedOrders, setOnlyShowIssuedOrders] = useState(false);\n const [mealSlotSelected, setMealSlotSelected] = useState('all');\n const [deliveryGroups, setDeliveryGroups] = useState([allDeliveryGroups]);\n const [deliveryGroupSelected, setDeliveryGroupSelected] = useState('all');\n const [showMap, setShowMap] = useState(false);\n const [locations, setLocations] = useState([]);\n const { selectedUserGroupParams } = useCache();\n\n const organizationId = cache.get('app:organizationId');\n const clientId = cache.get('app:facilityId');\n\n useEffect(() => {\n if (clientId) {\n (async () => {\n setIsLoading(true);\n const newDeliveryGroups = await asyncListAll(getDeliveryGroupsByClientByIsActive, { clientId });\n setDeliveryGroups([\n allDeliveryGroups,\n ...newDeliveryGroups.sort((a, b) => a.name > b.name ? 1 : -1),\n ]);\n setIsLoading(false);\n })();\n }\n }, [clientId]);\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n const location = cache.get('app:location');\n\n let orders = [];\n\n if (organizationId) {\n const { organizationClientIds } = selectedUserGroupParams;\n await Promise.all(organizationClientIds.map(async (clientId) => {\n const data = await asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n eq: moment().tz(TIME_ZONE).format('YYYY-MM-DD'),\n },\n });\n\n orders = [...orders, ...data];\n }));\n } else\n if (clientId) {\n const [clientOrdersData, elderDeliveryGroupsData] = await Promise.all([\n asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n eq: moment().tz(TIME_ZONE).format('YYYY-MM-DD'),\n },\n }),\n asyncListAll(getElderDeliveryGroupsByClientByStatus, {\n clientId: clientId,\n status: { eq: '使用中' },\n limit: 1000,\n }),\n ]);\n orders = sortOrdersByDeliveryGroups(clientOrdersData, elderDeliveryGroupsData);\n } else\n if (location) {\n orders = await asyncListAll(getOrdersByCountyByDate, {\n county: location,\n date: {\n eq: moment().tz(TIME_ZONE).format('YYYY-MM-DD'),\n },\n });\n } else {\n await Promise.all(counties.map(async (county) => {\n const countyOrders = await asyncListAll(getOrdersByCountyByDate, {\n county,\n date: {\n eq: moment().tz(TIME_ZONE).format('YYYY-MM-DD'),\n },\n });\n orders = [...orders, ...countyOrders];\n }));\n // orders = await asyncListAll(listOrders, {\n // filter: {\n // deliveryBy: {\n // between: [\n // moment().tz(TIME_ZONE).startOf(period).toISOString(),\n // moment().tz(TIME_ZONE).endOf(period).toISOString(),\n // ],\n // },\n // },\n // });\n }\n\n const deliveryStaffIds = orders.reduce((allIds, { deliveryStaffId }) => {\n if (deliveryStaffId && !allIds.includes(deliveryStaffId)) {\n allIds.push(deliveryStaffId);\n }\n return allIds;\n }, []);\n\n const deliveryStaffs = await Promise.all(deliveryStaffIds.map(async (id) => {\n const { data: { getDeliveryStaff: deliveryStafff } } = await request(getDeliveryStaff, { id });\n return deliveryStafff;\n }));\n\n orders.forEach((order) => {\n if (order.deliveryStaffId) {\n const matched = deliveryStaffs.find(({ id }) => id === order.deliveryStaffId);\n if (matched) {\n order.deliveryStaff = matched;\n }\n }\n });\n\n setOrders(orders.sort(sortBy('deliveryBy')).sort(sortBy('status')));\n setIsLoading(false);\n })();\n }, [lastUpdatedAt]);\n\n useEffect(() => {\n const filteredOrders = orders\n .filter(({ mealSlot }) => mealSlotSelected === 'all' || mealSlotSelected === mealSlot)\n .filter(({ deliveryGroupId }) => deliveryGroupSelected === 'all' || deliveryGroupSelected === deliveryGroupId)\n .filter((({ elder, restaurant, client, deliveryStaff = {} }) => {\n return matchText(elder.name, searchText) ||\n matchText(restaurant.name, searchText) ||\n matchText(client.name, searchText) ||\n matchText((deliveryStaff ? deliveryStaff.name : ''), searchText);\n }))\n .filter(({ issuePriority, isAudited }) => {\n return onlyShowIssuedOrders ? (isAudited === 1 && issuePriority > 0) : true;\n })\n .sort(sortBy('deliveryBy'));\n let newLocations = [];\n orderStatus.slice().reverse().forEach(({ value, colorText }) => {\n const locations = filteredOrders.filter(({ status }) => status === value).map(({ elder, id }) => ({\n lat: elder.address.lat,\n lng: elder.address.lng,\n name: elder.name,\n id,\n color: colorText,\n }));\n newLocations = newLocations.concat(locations);\n });\n setFilteredOrders(filteredOrders);\n setLocations(newLocations);\n }, [orders, searchText, onlyShowIssuedOrders, mealSlotSelected, deliveryGroupSelected]);\n\n return (\n \n \n \n \n {\n setSearchText(e.target.value);\n }}\n element={TextField}\n id={`search-text`}\n label=\"\"\n value={searchText}\n type={'text'}\n placeholder=\"搜尋\"\n variant=\"outlined\"\n margin=\"dense\"\n fullWidth\n style={{ marginLeft: 8 }}\n // disabled={isLoading}\n inputRef={searchRef}\n />\n \n \n \n {\n setOnlyShowIssuedOrders(e.target.checked);\n }}\n name={'onlyShowIssuedOrders'}\n color=\"primary\"\n disabled={isLoading}\n />\n }\n label=\"只顯示有異常的訂單\"\n />\n \n \n {\n setShowMap(e.target.checked);\n }}\n />\n }\n label={'顯示地圖'}\n />\n \n \n {\n setMealSlotSelected(e.target.value);\n }}\n >\n {mealSlots.map((meal, index) => (\n {meal.label}\n ))}\n \n \n {clientId &&\n \n {\n setDeliveryGroupSelected(e.target.value);\n }}\n >\n {deliveryGroups.map((deliveryGroup, index) => (\n {`顯示${deliveryGroup.name}`}\n ))}\n \n }\n \n 距離下次自動更新:\n setLastUpdatedAt(Date.now())}\n />\n {isLoading ?\n :\n setLastUpdatedAt(Date.now())} style={{ marginLeft: 8 }}>\n \n }\n \n \n \n
\n
\n \n
\n
\n {\n if (location.name) {\n setSearchText(location.name);\n const input = searchRef.current.querySelector('input');\n if (input) {\n input.focus();\n }\n }\n }}\n />\n
\n
\n
\n
);\n}\n\nTodayOrders.propTypes = {\n height: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Badge from '@material-ui/core/Badge';\nimport Tooltip from '@material-ui/core/Tooltip';\n// import { Hub } from 'aws-amplify';\n\nimport { request } from 'utilities/graph';\nimport {\n getIssuesByClientByStatus,\n getIssuesByStatusByCreatedAt,\n getIssuesByCountyByStatus,\n} from 'graphql/queries';\nimport { AUTO_UPDATE_INTERVAL_IN_MILLISECONDS } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\n\nexport default function IssueCenterBadge({ children }) {\n const [badgeContent, setBadgeContent] = useState(0);\n\n const update = async () => {\n // global.logger.debug('Update issue center badge content');\n const county = cache.get('app:location');\n const clientId = cache.get('app:facilityId');\n\n let records = [];\n if (clientId) {\n const params = {\n clientId,\n status: { eq: 'pending' },\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getIssuesByClientByStatus: { items: results } } } = await request(getIssuesByClientByStatus, params);\n records = results;\n } else\n if (county) {\n const params = {\n county,\n status: { eq: 'pending' },\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getIssuesByCountyByStatus: { items: results } } } = await request(getIssuesByCountyByStatus, params);\n records = results;\n } else {\n const params = {\n status: 'pending',\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getIssuesByStatusByCreatedAt: { items: results } } } = await request(getIssuesByStatusByCreatedAt, params);\n records = results;\n }\n\n setBadgeContent(records.length);\n };\n\n useEffect(() => {\n update();\n\n const interval = setInterval(update, AUTO_UPDATE_INTERVAL_IN_MILLISECONDS);\n\n return () => {\n // Hub.remove('app', appListener);\n clearInterval(interval);\n };\n }, []);\n\n return (\n \n \n {children}\n \n );\n}\n\nIssueCenterBadge.propTypes = {\n children: PropTypes.element,\n};\n","/* eslint-disable quotes, comma-dangle */\nimport i18n from 'i18next';\nimport {\n deliveryStaffTransactionStatus,\n deliveryStaffTransactionTypes,\n} from '@silvergatedelivery/constants';\n\nconst schema = {\n \"title\": \"\",\n \"type\": \"object\",\n \"required\": [\n \"deliveryStaffId\",\n \"status\", \"type\", \"amount\"\n ],\n \"properties\": {\n // \"username\": {\n // \"type\": \"string\",\n // \"title\": \"用戶編號\"\n // },\n \"deliveryStaffId\": {\n \"type\": \"string\",\n \"title\": i18n.t('送餐大使'),\n },\n \"type\": {\n \"type\": \"string\",\n \"title\": \"類別\",\n 'enum': deliveryStaffTransactionTypes.map(({ value }) => value),\n 'enumNames': deliveryStaffTransactionTypes.map(({ label }) => label),\n 'default': deliveryStaffTransactionTypes[0].value,\n },\n \"amount\": {\n \"type\": \"number\",\n \"title\": \"S Token 數量\"\n },\n \"status\": {\n \"type\": \"string\",\n \"title\": \"狀態\",\n 'enum': deliveryStaffTransactionStatus.map(({ value }) => value),\n 'enumNames': deliveryStaffTransactionStatus.map(({ label }) => label),\n 'default': deliveryStaffTransactionStatus[0].value,\n },\n \"summary\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"簡述\"\n },\n \"note\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"備註\"\n }\n }\n};\n\nexport default schema;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { getDeliveryStaff } from 'graphql/queries';\nimport { createDeliveryStaffTransaction } from 'graphql/mutations';\nimport schema from './DeliveryStaffTransactionForm.schema.js';\nimport uiSchema from './uiSchema';\n\nexport default function DeliveryStaffTransactionForm({ ...props }) {\n const createFunc = async (data) => {\n global.logger.debug(data);\n const { data: { getDeliveryStaff: { username } } } = await request(getDeliveryStaff, { id: data.deliveryStaffId });\n data.username = username;\n\n await request(createDeliveryStaffTransaction, { input: data });\n };\n\n const updateFunc = async () => {};\n\n return (\n \n );\n}\n\nDeliveryStaffTransactionForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { createDeliveryStaffTransaction, updateDeliveryStaffTransaction } from 'graphql/mutations';\nimport schema from './DeliveryStaffTransactionForm.schema.js';\nimport uiSchema from './DeliveryStaffTransactionUpdateForm.uiSchema';\n\nexport default function DeliveryStaffTransactionForm({ ...props }) {\n const createFunc = async (data) => {\n await request(createDeliveryStaffTransaction, { input: data });\n };\n\n const updateFunc = async (data) => {\n const toUpdateData = {\n id: data.id,\n status: data.status,\n type: data.type,\n amount: data.amount,\n summary: data.summary,\n note: data.note,\n };\n await request(updateDeliveryStaffTransaction, { input: toUpdateData });\n };\n\n return (\n \n );\n}\n\nDeliveryStaffTransactionForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport EditButton from '../components/EditButton';\nimport DeliveryStaffTransactionForm from './DeliveryStaffTransactionForm';\nimport DeliveryStaffTransactionUpdateForm from './DeliveryStaffTransactionUpdateForm';\n\nexport default function DeliveryStaffTransactionEditButton({ mode = 'edit', ...props }) {\n const form = mode === 'edit' ? DeliveryStaffTransactionUpdateForm : DeliveryStaffTransactionForm;\n\n return (\n );\n}\n\nDeliveryStaffTransactionEditButton.propTypes = {\n mode: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment-timezone';\nimport {\n TIME_ZONE,\n deliveryStaffTransactionStatus,\n deliveryStaffTransactionTypes,\n} from '@silvergatedelivery/constants';\n\nimport DataTable from 'components/Table/DataTable';\n// import OrderDialog from 'components/Order/OrderDialog';\nimport {\n listDeliveryStaffTransactions,\n getDeliveryStaffTransactionByStatusByCreatedAt,\n} from 'graphql/queries';\nimport LinkButton from 'components/Table/LinkButton';\nimport DeliveryStaffTransactionEditButton from 'forms/DeliveryStaffTransactionForm/DeliveryStaffTransactionEditButton';\nimport CustomStatusChip from 'components/CustomStatusChip';\n\nconst last3Month = moment().tz(TIME_ZONE).add(-90, 'days').format('YYYY-MM-DD');\n// const todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\nconst nextWeek = moment().tz(TIME_ZONE).add(7, 'days').format('YYYY-MM-DD');\n\nconst defaultIndexes = [\n {\n name: 'getDeliveryStaffTransactionByStatusByCreatedAt',\n label: '按狀態查詢',\n partitionKey: 'status',\n sortKey: 'createdAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [...deliveryStaffTransactionStatus],\n }, {\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getDeliveryStaffTransactionByStatusByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: listDeliveryStaffTransactions,\n },\n];\n\nexport default function STokenTable({\n title = 'S Token 交易紀錄',\n description,\n clientId,\n elderId,\n restaurantId,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffId',\n label: `${t('送餐大使')}編號`,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'type',\n label: '類別',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return deliveryStaffTransactionTypes.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'deliveryStaff.name',\n label: t('送餐大使'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaff.bankAccount',\n label: '銀行帳戶',\n options: {\n filter: false,\n sort: false,\n customBodyRender(bankAccount) {\n return `${bankAccount.name || ''} ${bankAccount.number || ''}`;\n },\n\n },\n },\n {\n name: 'amount',\n label: '數量',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'summary',\n label: '簡述',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'note',\n label: '備註',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffId',\n label: `${t('送餐大使')}頁面`,\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n // {\n // name: 'orderId',\n // label: ' ',\n // options: {\n // display: true,\n // filter: false,\n // sort: false,\n // customBodyRender(id) {\n // if (!id) return '';\n // return (\n // \n // );\n // },\n // },\n // },\n // {\n // name: 'orderId',\n // label: ' ',\n // options: {\n // display: true,\n // filter: false,\n // sort: false,\n // customBodyRender(id) {\n // return (\n // \n // );\n // },\n // },\n // },\n ];\n\n useEffect(() => {\n setIndexes(defaultIndexes);\n setQueryParams({\n status: 'pending',\n createdAt: {\n from: last3Month,\n to: nextWeek,\n },\n });\n }, []);\n\n if (!indexes || !queryParams) return null;\n\n return (\n \n \n );\n}\n\nSTokenTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n clientId: PropTypes.string,\n elderId: PropTypes.string,\n restaurantId: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Badge from '@material-ui/core/Badge';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { AUTO_UPDATE_INTERVAL_IN_MILLISECONDS } from '@silvergatedelivery/constants';\n\nimport { request } from 'utilities/graph';\nimport {\n getOrdersByStatusByDate,\n getOrdersByCountyByStatus,\n getOrdersByClientByStatus,\n} from 'graphql/queries';\nimport cache from 'utilities/cache';\n\nexport default function OrderBadge({ children }) {\n const { t } = useTranslation();\n const [badgeContent, setBadgeContent] = useState(0);\n\n const update = async () => {\n // global.logger.debug('Update issue center badge content');\n const county = cache.get('app:location');\n const clientId = cache.get('app:facilityId');\n\n const targetStatus = 'waitingForDeliveryStaff';\n\n let records = [];\n if (clientId) {\n const params = {\n clientId,\n status: { eq: targetStatus },\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getOrdersByClientByStatus: { items: results } } } = await request(getOrdersByClientByStatus, params);\n records = results;\n } else\n if (county) {\n const params = {\n county,\n status: { eq: targetStatus },\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getOrdersByCountyByStatus: { items: results } } } = await request(getOrdersByCountyByStatus, params);\n records = results;\n } else {\n const params = {\n status: targetStatus,\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getOrdersByStatusByDate: { items: results } } } = await request(getOrdersByStatusByDate, params);\n records = results;\n }\n\n setBadgeContent(records.length);\n };\n\n useEffect(() => {\n update();\n\n const interval = setInterval(update, AUTO_UPDATE_INTERVAL_IN_MILLISECONDS);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return (\n \n \n {children}\n \n );\n}\n\nOrderBadge.propTypes = {\n children: PropTypes.element,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Badge from '@material-ui/core/Badge';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { AUTO_UPDATE_INTERVAL_IN_MILLISECONDS } from '@silvergatedelivery/constants';\n\nimport { request } from 'utilities/graph';\nimport {\n getOrdersByStatusByDate,\n getOrdersByCountyByStatus,\n getOrdersByClientByStatus,\n} from 'graphql/queries';\nimport cache from 'utilities/cache';\n\nexport default function AbandonedOrderBadge({ children }) {\n const { t } = useTranslation();\n const [badgeContent, setBadgeContent] = useState(0);\n\n const update = async () => {\n // global.logger.debug('Update issue center badge content');\n const county = cache.get('app:location');\n const clientId = cache.get('app:facilityId');\n\n const targetStatus = 'reMatchingDeliveryStaff';\n\n let records = [];\n if (clientId) {\n const params = {\n clientId,\n status: { eq: targetStatus },\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getOrdersByClientByStatus: { items: results } } } = await request(getOrdersByClientByStatus, params);\n records = results;\n } else\n if (county) {\n const params = {\n county,\n status: { eq: targetStatus },\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getOrdersByCountyByStatus: { items: results } } } = await request(getOrdersByCountyByStatus, params);\n records = results;\n } else {\n const params = {\n status: targetStatus,\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getOrdersByStatusByDate: { items: results } } } = await request(getOrdersByStatusByDate, params);\n records = results;\n }\n\n setBadgeContent(records.length);\n };\n\n useEffect(() => {\n update();\n\n const interval = setInterval(update, AUTO_UPDATE_INTERVAL_IN_MILLISECONDS);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return (\n \n \n {children}\n \n );\n}\n\nAbandonedOrderBadge.propTypes = {\n children: PropTypes.element,\n};\n","/* eslint-disable quotes, comma-dangle */\nimport {\n tag,\n} from '@silvergatedelivery/constants';\n\nexport default {\n \"title\": \"標籤\",\n \"type\": \"object\",\n \"required\": [\n \"category\", \"subcategory\", \"label\"\n ],\n \"properties\": {\n \"category\": {\n \"type\": \"string\",\n \"title\": \"類別\",\n \"enum\": Object.keys(tag)\n },\n \"label\": {\n \"type\": \"string\",\n \"title\": \"名稱\"\n },\n \"color\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"顏色\"\n }\n },\n \"dependencies\": {\n \"category\": {\n \"oneOf\": Object.keys(tag).map((category) => {\n return {\n \"properties\": {\n \"category\": {\n \"enum\": [category]\n },\n \"subcategory\": {\n \"type\": \"string\",\n \"title\": \"子類別\",\n \"enum\": Object.keys(tag[category])\n },\n }\n };\n })\n }\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { createTag, updateTag } from 'graphql/mutations';\nimport schema from './schema.js';\nimport uiSchema from './uiSchema';\n\nexport default function TagForm({ ...props }) {\n const createFunc = async (data) => {\n await request(createTag, { input: data });\n };\n\n const updateFunc = async (data) => {\n await request(updateTag, { input: data });\n };\n\n return (\n \n );\n}\n\nTagForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport TagForm from './TagForm';\n\nexport default function TagEditButton({ ...props }) {\n return (\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport { listTags } from 'graphql/queries';\nimport TagEditButton from 'forms/TagForm/TagEditButton';\nimport { sortBy } from 'utilities/sorting';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'category',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'subcategory',\n label: '子類別',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'label',\n label: '名稱',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'color',\n label: '顏色',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n];\n\nexport default function TagTable({\n title = '標籤',\n description,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n useEffect(() => {\n setIndexes([\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listTags,\n },\n ]);\n setQueryParams({});\n }, []);\n\n return (\n \n );\n}\n\nTagTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nimport VerticalTabs from 'components/Tab/VerticalTabs';\nimport RestaurantTable from 'components/RestaurantTable';\nimport RestaurantOwnerCard from 'components/Card/RestaurantOwnerCard';\nimport NotificationTable from 'components/NotificationTable';\n\nexport default function RestaurantOwnerDetails({ id: inId, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [tabs, setTabs] = useState([]);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n const tabs = [\n {\n label: '基本資料',\n component: ,\n },\n {\n label: t('餐廳'),\n component: ,\n },\n {\n label: '通知紀錄',\n component: ,\n },\n ];\n setTabs(tabs);\n }, [id]);\n\n if (!id) {\n return null;\n }\n\n return (\n \n );\n}\n\nRestaurantOwnerDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport {\n TIME_ZONE,\n transactionStatus,\n transactionTypes,\n} from '@silvergatedelivery/constants';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listTransactions,\n getTransactionsByStatusByCreatedAt,\n} from 'graphql/queries';\nimport LinkButton from 'components/Table/LinkButton';\n// import DeliveryStaffTransactionEditButton from 'forms/DeliveryStaffTransactionForm/DeliveryStaffTransactionEditButton';\nimport CustomStatusChip from 'components/CustomStatusChip';\n\nconst today = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\nglobal.logger.debug({\n transactionStatus,\n transactionTypes,\n});\nconst defaultIndexes = [\n {\n name: 'getTransactionsByStatusByCreatedAt',\n label: '按狀態查詢',\n partitionKey: 'status',\n sortKey: 'createdAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [...transactionStatus],\n }, {\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getTransactionsByStatusByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: listTransactions,\n },\n];\n\nexport default function TransactionTable({\n title = '交易紀錄',\n description,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '用戶名稱',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'statusMessage',\n label: '狀態描述',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'type',\n label: '類型',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return transactionTypes.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'category',\n label: '類別',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'serviceProvider',\n label: '金流方',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '簡述',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'amount',\n label: '金額',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'items',\n label: '項目',\n options: {\n filter: false,\n sort: false,\n customBodyRender(items = []) {\n return (\n {items.map((item, index)=>(\n
\n {item.name} {item.unitValue}/{item.unit} * {item.qty} = ${item.subTotal}\n
\n ))}\n
);\n },\n\n },\n },\n {\n name: 'note',\n label: '備註',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'linePayTransactionId',\n label: 'LinePay 交易ID',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'linePayPaymentUrlWeb',\n label: 'LinePay 付款網址',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'clientId',\n label: '客戶頁面',\n options: {\n filter: false,\n sort: false,\n customBodyRender(id) {\n if (!id) return null;\n return (\n \n );\n },\n },\n },\n {\n name: 'orderId',\n label: '訂單頁面',\n options: {\n filter: false,\n sort: false,\n customBodyRender(id) {\n if (!id) return null;\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n setIndexes(defaultIndexes);\n setQueryParams({\n status: 'approved',\n createdAt: {\n from: today,\n to: today,\n },\n });\n }, []);\n\n if (!indexes || !queryParams) return null;\n\n return (\n \n \n );\n}\n\nTransactionTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport {\n TIME_ZONE,\n invoiceStatus,\n invoiceTypes,\n} from '@silvergatedelivery/constants';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listInvoices,\n getInvoicesByStatusByCreatedAt,\n} from 'graphql/queries';\nimport LinkButton from 'components/Table/LinkButton';\nimport CustomStatusChip from 'components/CustomStatusChip';\n\nconst today = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\nglobal.logger.debug({\n invoiceStatus,\n invoiceTypes,\n});\n\nconst defaultIndexes = [\n {\n name: 'getInvoicesByStatusByCreatedAt',\n label: '按狀態查詢',\n partitionKey: 'status',\n sortKey: 'createdAt',\n fields: [{\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [...invoiceStatus],\n }, {\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getInvoicesByStatusByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '創建時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: listInvoices,\n },\n];\n\nexport default function InvoiceTable({\n title = '電子發票',\n description,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '用戶名稱',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'code',\n label: '發票號碼',\n options: {\n filter: true,\n sort: false,\n },\n },\n {\n name: 'note',\n label: '狀態描述',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'type',\n label: '類型',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return invoiceTypes.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'carrier',\n label: '載具',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'title',\n label: '抬頭',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'taxIdNumber',\n label: '統編',\n options: {\n filter: false,\n sort: false,\n },\n },\n {\n name: 'Transaction',\n label: '項目',\n options: {\n filter: false,\n sort: false,\n customBodyRender(Transaction) {\n return (\n {Transaction.items.map((item, index)=>(\n
\n {item.name} {item.unitValue}/{item.unit} * {item.qty} = ${item.subTotal}\n
\n ))}\n
);\n },\n\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'clientId',\n label: '客戶頁面',\n options: {\n filter: false,\n sort: false,\n customBodyRender(id) {\n if (!id) return null;\n return (\n \n );\n },\n },\n },\n {\n name: 'orderId',\n label: '訂單頁面',\n options: {\n filter: false,\n sort: false,\n customBodyRender(id) {\n if (!id) return null;\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n setIndexes(defaultIndexes);\n setQueryParams({\n status: 'pending',\n createdAt: {\n from: today,\n to: today,\n },\n });\n }, []);\n\n if (!indexes || !queryParams) return null;\n\n return (\n \n \n );\n}\n\nInvoiceTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","/* eslint-disable quotes, comma-dangle */\nexport default {\n \"title\": \"捐贈項目\",\n \"type\": \"object\",\n \"required\": [\n \"isActive\", \"name\", \"summary\",\n \"count\", \"unit\", \"unitValue\",\n \"totalValue\"\n ],\n \"properties\": {\n \"isActive\": {\n \"type\": \"number\",\n \"title\": \"狀態\",\n \"enum\": [1, 0],\n \"enumNames\": [\"使用\", \"停用\"],\n \"default\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"title\": \"名稱\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"title\": \"簡述\"\n },\n \"description\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"詳細描述\"\n },\n \"count\": {\n \"type\": \"number\",\n \"title\": \"數量\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"title\": \"單位 (ex: 餐/堂/箱)\"\n },\n \"unitValue\": {\n \"type\": \"number\",\n \"title\": \"單位價格\"\n },\n \"totalValue\": {\n \"type\": \"number\",\n \"title\": \"總金額\"\n },\n \"sponsors\": {\n \"type\": \"array\",\n \"title\": \"贊助廠商\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"title\": \"名稱\"\n },\n \"description\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"描述\"\n },\n \"websiteUrl\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"網址\"\n },\n \"logoUrl\": {\n \"type\": [\"string\", \"null\"],\n \"title\": \"LOGO網址\"\n }\n }\n }\n }\n }\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport { v1 as uuidv1 } from 'uuid';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { getSponsorshipProgram } from 'graphql/queries';\nimport { createSponsorshipProgram, updateSponsorshipProgram } from 'graphql/mutations';\nimport schema from './schema.js';\nimport uiSchema from './uiSchema';\nimport ImageGalleryUploader from 'components/ImageGalleryUploader';\n\nexport default function SponsorshipProgramForm({ ...props }) {\n const [id, setId] = useState();\n const [currentImageS3Keys, setCurrentImageS3Keys] = useState([]);\n const [newImageS3Keys, setNewImageS3Keys] = useState([]);\n // const [isLoading, setIsLoading] = useState(false);\n\n const onComplete = async () => {\n if (props.onComplete) {\n const { data: { getSponsorshipProgram: data } } = await request(getSponsorshipProgram, { id });\n\n props.onComplete(data);\n }\n };\n\n const createFunc = async (data) => {\n // setIsLoading(true);\n data.imageS3Keys = newImageS3Keys;\n global.logger.debug(data);\n\n await request(createSponsorshipProgram, { input: data });\n await onComplete();\n // setIsLoading(false);\n };\n\n const updateFunc = async (data) => {\n // setIsLoading(true);\n data.imageS3Keys = newImageS3Keys;\n global.logger.debug(data);\n\n await request(updateSponsorshipProgram, { input: data });\n await onComplete();\n // setIsLoading(false);\n };\n\n useEffect(() => {\n if (props.formData && props.formData.id) {\n props.formData.sponsors = props.formData.sponsors || [];\n setId(props.formData.id);\n setCurrentImageS3Keys(props.formData.imageS3Keys || []);\n setNewImageS3Keys(props.formData.imageS3Keys || []);\n } else {\n setId(uuidv1());\n }\n }, [props.formData]);\n\n return (\n \n \n \n \n \n );\n}\n\nSponsorshipProgramForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport Form from './SponsorshipProgramForm';\n\nexport default function SponsorshipProgramEditButton({ ...props }) {\n return (\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listSponsorshipPrograms,\n getSponsorshipProgramsByIsActiveByCreatedAt,\n} from 'graphql/queries';\nimport SponsorshipProgramEditButton from 'forms/SponsorshipProgramForm/SponsorshipProgramEditButton';\nimport { sortBy } from 'utilities/sorting';\nimport ImagePreviewAvatar from 'components/ImagePreviewAvatar';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'isActive',\n label: '狀態',\n type: 'checkbox',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'imageS3Keys',\n label: '圖片',\n options: {\n filter: false,\n sort: false,\n customBodyRender(imageS3Keys) {\n return (\n \n );\n },\n },\n },\n {\n name: 'name',\n label: '名稱',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'summary',\n label: '簡述',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '詳細描述',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'count',\n label: '數量',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'unit',\n label: '單位',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'unitValue',\n label: '單位價格',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'totalValue',\n label: '總金額',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'sponsors',\n label: '贊助廠商',\n options: {\n filter: false,\n sort: false,\n customBodyRender(sponsors) {\n return (\n {(sponsors || []).map(({ name, logoUrl }, index) => (\n
\n \n {name}\n
\n ))}\n
);\n },\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n];\n\nexport default function SponsorshipProgramTable({\n title = '捐贈項目',\n description,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getSponsorshipProgramsByIsActiveByCreatedAt',\n label: '按狀態查詢',\n partitionKey: 'isActive',\n sortKey: 'createdAt',\n fields: [{\n label: '狀態',\n key: 'isActive',\n type: 'select',\n options: [\n { value: 1, label: '使用中' },\n { value: 0, label: '停用中' },\n ],\n }],\n operation: getSponsorshipProgramsByIsActiveByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listSponsorshipPrograms,\n },\n ]);\n setQueryParams({\n isActive: 1,\n });\n }, []);\n\n return (\n \n );\n}\n\nSponsorshipProgramTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","/* eslint-disable quotes, comma-dangle */\nexport default {\n \"title\": \"會員項目\",\n \"type\": \"object\",\n \"required\": [\n \"isActive\", \"name\", \"description\",\n \"durationInDays\", \"discountRule\", \"discountPercentage\",\n \"unit\", \"unitValue\"\n ],\n \"properties\": {\n \"isActive\": {\n \"type\": \"number\",\n \"title\": \"狀態\",\n \"enum\": [1, 0],\n \"enumNames\": [\"使用\", \"停用\"],\n \"default\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"title\": \"名稱\"\n },\n \"description\": {\n \"type\": \"string\",\n \"title\": \"詳細描述\"\n },\n \"durationInDays\": {\n \"type\": \"number\",\n \"title\": \"使用天數\"\n },\n \"discountRule\": {\n \"type\": \"string\",\n \"title\": \"折扣描述\"\n },\n \"discountPercentage\": {\n \"type\": \"number\",\n \"title\": \"折扣\",\n \"exclusiveMinimum\": 0,\n \"exclusiveMaximum\": 1\n },\n \"unit\": {\n \"type\": \"string\",\n \"title\": \"單位 (ex: 月/季/年)\"\n },\n \"unitValue\": {\n \"type\": \"number\",\n \"title\": \"單位價格\"\n }\n }\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { v1 as uuidv1 } from 'uuid';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { getMembershipProgram } from 'graphql/queries';\nimport { createMembershipProgram, updateMembershipProgram } from 'graphql/mutations';\nimport schema from './schema.js';\nimport uiSchema from './uiSchema';\n\nexport default function MembershipProgramForm({ ...props }) {\n const [id, setId] = useState();\n\n const onComplete = async () => {\n if (props.onComplete) {\n const { data: { getMembershipProgram: data } } = await request(getMembershipProgram, { id });\n\n props.onComplete(data);\n }\n };\n\n const createFunc = async (data) => {\n await request(createMembershipProgram, { input: data });\n await onComplete();\n };\n\n const updateFunc = async (data) => {\n await request(updateMembershipProgram, { input: data });\n await onComplete();\n };\n\n useEffect(() => {\n if (props.formData && props.formData.id) {\n setId(props.formData.id);\n } else {\n setId(uuidv1());\n }\n }, [props.formData]);\n\n return (\n \n \n );\n}\n\nMembershipProgramForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport Form from './MembershipProgramForm';\n\nexport default function MembershipProgramFormEditButton({ ...props }) {\n return (\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listMembershipPrograms,\n getMembershipProgramsByIsActiveByCreatedAt,\n} from 'graphql/queries';\nimport EditButton from 'forms/MembershipProgramForm/MembershipProgramFormEditButton';\nimport { sortBy } from 'utilities/sorting';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'isActive',\n label: '狀態',\n type: 'checkbox',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名稱',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'description',\n label: '詳細描述',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'discountRule',\n label: '折扣描述',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'discountPercentage',\n label: '折扣',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'durationInDays',\n label: '使用天數',\n type: 'number',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'unitValue',\n label: '單位價格',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'unit',\n label: '單位',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n];\n\nexport default function MembershipProgramTable({\n title = '會員項目',\n description,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getMembershipProgramsByIsActiveByCreatedAt',\n label: '按狀態查詢',\n partitionKey: 'isActive',\n sortKey: 'createdAt',\n fields: [{\n label: '狀態',\n key: 'isActive',\n type: 'select',\n options: [\n { value: 1, label: '使用中' },\n { value: 0, label: '停用中' },\n ],\n }],\n operation: getMembershipProgramsByIsActiveByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listMembershipPrograms,\n },\n ]);\n setQueryParams({\n isActive: 1,\n });\n }, []);\n\n return (\n \n );\n}\n\nMembershipProgramTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { createClientAppBanner, updateClientAppBanner } from 'graphql/mutations';\nimport schema from './schema';\nimport uiSchema from './uiSchema';\nimport { deliveryStaffStatus } from '@silvergatedelivery/constants';\n\nObject.assign(schema.properties.isActive, {\n type: 'number',\n enum: deliveryStaffStatus.map(({ value }) => value),\n enumNames: deliveryStaffStatus.map(({ label }) => label),\n default: 1,\n});\n\nexport default function ClientAppBannerForm({ ...props }) {\n const createFunc = async (data) => {\n await request(createClientAppBanner, { input: data });\n };\n\n const updateFunc = async (data) => {\n await request(updateClientAppBanner, { input: data });\n };\n\n return (\n \n );\n}\n\nClientAppBannerForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport Form from './ClientAppBannerForm';\n\nexport default function ClientAppBannerEditButton({ ...props }) {\n return (\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport { listClientAppBanners } from 'graphql/queries';\nimport EditButton from 'forms/ClientAppBannerForm/ClientAppBannerEditButton';\nimport { sortBy } from 'utilities/sorting';\nimport DeliveryStaffChip from 'components/DeliveryStaffChip';\nimport LinkButton from 'components/Table/LinkButton';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'imageUrl',\n label: '圖片',\n options: {\n filter: false,\n sort: false,\n customBodyRender(imageUrl) {\n return (\n
\n \n
\n
);\n },\n },\n },\n {\n name: 'isActive',\n label: '狀態',\n options: {\n display: true,\n filter: true,\n sort: true,\n customBodyRender(value) {\n return (\n \n );\n },\n },\n },\n {\n name: 'sortOrder',\n label: '排序',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'title',\n label: '標題',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'content',\n label: '描述',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'url',\n label: '連結',\n options: {\n filter: false,\n sort: false,\n customBodyRender(url) {\n return (\n \n );\n },\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n];\n\nexport default function ClientAppBannerTable({\n title = 'Banners',\n description,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n useEffect(() => {\n setIndexes([\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listClientAppBanners,\n },\n ]);\n setQueryParams({});\n }, []);\n\n return (\n \n );\n}\n\nClientAppBannerTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\n\nimport DataTable from 'components/Table/DataTable';\nimport { getOrderQuotesByCodeByCreatedAt, listOrderQuotes } from 'graphql/queries';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\n\nconst lastWeek = moment().tz(TIME_ZONE).add(-7, 'days').format('YYYY-MM-DD');\nconst today = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function OrderQuoteTable({\n title = '估價單',\n description,\n data,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'restaurantId',\n label: `${t('餐廳')}ID`,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'restaurantName',\n label: t('餐廳'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'originalStartAddress',\n label: '原始起點',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'originalEndAddress',\n label: '原始終點',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'code',\n label: 'Code',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'startAddress',\n label: '起點',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'endAddress',\n label: '終點',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'distance',\n label: '距離',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'message',\n label: '訊息',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'calculationMethod',\n label: '計價方式',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'totalFee',\n label: '總費用(含平台費與運費加成)',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffFee',\n label: t('送餐費用'),\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'uberEstimatedFee',\n label: 'Uber估價',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'pandagoEstimatedFee',\n label: 'Pandago估價',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'ilinkEstimatedFee',\n label: 'ILink估價',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lalamoveEstimatedFee',\n label: 'Lalamove估價',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'defaultDeliveryStaffFee',\n label: '里程估價',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n ];\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => false,\n };\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getOrderQuotesByCodeByCreatedAt',\n label: '按狀態/時間查詢',\n partitionKey: 'code',\n sortKey: 'createdAt',\n fields: [{\n label: '狀態',\n key: 'code',\n type: 'select',\n options: [{ value: 'SUCCESS', label: 'SUCCESS' }, { value: 'OUT_OR_RANGE', label: 'OUT_OR_RANGE' }, { value: 'FAILED', label: 'FAILED' }],\n }, {\n label: '估價時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getOrderQuotesByCodeByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listOrderQuotes,\n },\n ]);\n setQueryParams({\n code: 'SUCCESS',\n createdAt: {\n from: lastWeek,\n to: today,\n },\n });\n }, []);\n\n return (\n \n );\n}\n\nOrderQuoteTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n getWebhookEventsByVendorByCreatedAt,\n listWebhookEvents,\n} from 'graphql/queries';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\n\nconst columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'vendor',\n label: '外送夥伴與支付平台',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'headers',\n label: 'headers',\n type: 'json',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'body',\n label: 'body',\n type: 'json',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n];\n\nconst pastThreeDays = moment().tz(TIME_ZONE).add(-3, 'days').format('YYYY-MM-DD');\nconst today = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function WebhookEventTable({\n title = 'Webhooks',\n description,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => false,\n };\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getWebhookEventsByVendorByCreatedAt',\n label: '按外送夥伴與支付平台/時間查詢',\n partitionKey: 'vendor',\n sortKey: 'createdAt',\n fields: [{\n label: '外送夥伴與支付平台',\n key: 'vendor',\n type: 'select',\n options: [\n { value: 'uber', label: 'Uber' },\n { value: 'pandago', label: 'Pandago' },\n { value: 'lalamove', label: 'Lalamove' },\n { value: 'newebpay', label: 'NewebPay' },\n ],\n }, {\n label: '時間',\n key: 'createdAt',\n type: 'datetime',\n }],\n operation: getWebhookEventsByVendorByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listWebhookEvents,\n },\n ]);\n setQueryParams({\n vendor: 'uber',\n createdAt: {\n from: pastThreeDays,\n to: today,\n },\n });\n }, []);\n\n return (\n \n );\n}\n\nWebhookEventTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React, { useState } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport ReactJson from 'react-json-view';\n\nimport DataForm from 'forms/DataForm';\nimport { getOrderQuote } from 'graphql/queries';\nimport { quoteOrder } from 'graphql/mutations';\nimport { request } from 'utilities/graph';\nimport OrderQuoteTable from '../OrderQuoteTable';\n\nimport schema from './schema';\nimport uiSchema from './uiSchema';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n}));\n\nexport default function OrderQuote() {\n const classes = useStyles();\n\n const [quoteData, setQuoteData] = useState(null);\n\n const getQuote = async ({ restaurantId, address = {} }) => {\n const params = {\n input: {\n restaurantId,\n addressCounty: address.county,\n addressZipCode: address.zipCode,\n addressDistrict: address.district,\n addressStreet: address.street,\n },\n };\n const {\n data: {\n quoteOrder: {\n data: {\n orderQuoteId,\n },\n },\n },\n } = await request(quoteOrder, params);\n\n const {\n data: {\n getOrderQuote: data,\n },\n } = await request(getOrderQuote, { id: orderQuoteId });\n\n setQuoteData(data);\n };\n\n return (\n \n \n \n \n \n \n \n \n\n {quoteData &&\n \n \n }\n\n {quoteData &&\n \n \n \n \n }\n \n \n );\n}\n\nOrderQuote.propTypes = {};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport Place from 'components/Map/Place';\n\nexport default function QueryAddressResultTable({\n title = '地址查詢結果',\n description,\n data,\n ...props\n}) {\n const columns = [\n {\n name: 'queryAddressMethod',\n label: '查詢方式',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'originalAddress',\n label: `輸入地址`,\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n\n {\n name: 'address',\n label: `回傳地址`,\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'coordinates',\n label: `經緯度`,\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lat',\n label: '緯度',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'lng',\n label: '經度',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'coordinates',\n label: `經緯度`,\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender(coordinates) {\n const [lat, lng] = coordinates.split(',');\n\n return ;\n },\n\n },\n },\n ];\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => false,\n };\n\n return (\n \n );\n}\n\nQueryAddressResultTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n data: PropTypes.array,\n};\n","import React, { useState } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\n\nimport DataForm from 'forms/DataForm';\nimport { queryAddress } from 'graphql/mutations';\nimport { request } from 'utilities/graph';\nimport QueryAddressResultTable from '../QueryAddressResultTable';\n// import { formatAddress } from 'utilities/format';\nimport schema from './schema';\nimport uiSchema from './uiSchema';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n}));\n\nexport default function QueryAddress() {\n const classes = useStyles();\n\n const [data, setData] = useState(undefined);\n\n const handleSubmit = async ({ addressString }) => {\n const queryAddressMethods = ['tomtom', 'google', 'tgos'];\n // const addressString = formatAddress(address);\n\n const result = await Promise.all(queryAddressMethods.map(async (queryAddressMethod) => {\n const params = {\n input: {\n queryAddressMethod,\n address: addressString,\n },\n };\n const {\n data: {\n queryAddress: {\n data,\n },\n },\n } = await request(queryAddress, params);\n\n return {\n originalAddress: addressString,\n coordinates: `${data.lat},${data.lng}`,\n ...data,\n };\n }));\n\n setData(result);\n };\n\n return (\n \n \n \n \n \n \n \n \n\n {data &&\n \n \n }\n \n \n );\n}\n\nQueryAddress.propTypes = {};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport { getEventsByClientByTimestamp } from 'graphql/queries';\nimport DataTable from 'components/Table/DataTable';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { getClientIdSchema } from 'forms/schemas';\n\nconst title = '系統紀錄';\nconst description = '';\n\nconst ignoreDiffKey = [\n 'createdAt',\n 'createdBy',\n 'updatedAt',\n 'updatedBy',\n];\n\nconst tableStyle = {\n border: '1px solid #cecece',\n borderCollapse: 'collapse',\n padding: 3,\n};\n\nconst pastThreeDays = moment().tz(TIME_ZONE).add(-3, 'days').format('YYYY-MM-DD');\nconst today = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function EventTable({ clientId }) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'timestamp',\n label: '紀錄時間',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'tableName',\n label: '資料庫',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return value.split('-')[0];\n },\n },\n },\n {\n name: 'key',\n label: 'Key',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender(value) {\n return value.split('__')[1];\n },\n },\n },\n {\n name: 'eventName',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n switch (value) {\n case 'INSERT':\n return '新增';\n case 'MODIFY':\n return '更新';\n case 'REMOVE':\n return '刪除';\n default:\n }\n },\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'diff',\n label: '變更內容',\n options: {\n filter: false,\n sort: false,\n customBodyRender(input) {\n let jsonObj = input;\n while (typeof jsonObj === 'string') {\n jsonObj = JSON.parse(jsonObj);\n }\n\n const diffs = jsonObj.filter(({ key }) => !ignoreDiffKey.includes(key));\n\n if (diffs.length === 0) return null;\n\n const displayValue = (value) => {\n if (typeof value === 'object') {\n return JSON.stringify(value, null, 2);\n }\n return String(value);\n };\n\n return (\n \n \n \n \n \n \n \n \n {diffs.map((diff, index)=>(\n \n \n \n \n \n ))}\n \n
欄位
\n {diff.key}\n \n {displayValue(diff.old)}\n \n {displayValue(diff.new)}\n
);\n },\n },\n },\n {\n name: 'oldData',\n label: '舊資料',\n type: 'json',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'newData',\n label: '新資料',\n type: 'json',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'expirationUnixTime',\n label: '到期時間',\n type: 'expirationUnixTime',\n options: {\n filter: false,\n sort: true,\n\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n const clientOptions = await getClientIdSchema(null, '所屬機構', true);\n\n setIndexes([\n {\n name: 'getEventsByClientByTimestamp',\n label: '按機構查詢',\n partitionKey: 'clientId',\n sortKey: 'timestamp',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: clientOptions.map(({ id, name }) => ({ value: id, label: name })),\n }, {\n label: '紀錄時間',\n key: 'timestamp',\n type: 'datetime',\n }],\n operation: getEventsByClientByTimestamp,\n },\n ]);\n setQueryParams({\n clientId: clientOptions[0] && clientOptions[0].id,\n timestamp: {\n from: pastThreeDays,\n to: today,\n },\n });\n })();\n }, []);\n\n if (!indexes || !queryParams) return <>;\n\n return (\n \n \n \n );\n}\n\nEventTable.propTypes = {\n clientId: PropTypes.string,\n};\n","\nimport React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport { createDementiaQuestionnaire, updateDementiaQuestionnaire } from 'graphql/mutations';\nimport uiSchema from './uiSchema';\n\nexport default function DementiaQuestionnaireForm({ ...props }) {\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n const createFunc = async (data) => {\n await request(createDementiaQuestionnaire, { input: data });\n };\n\n const updateFunc = async (data) => {\n await request(updateDementiaQuestionnaire, { input: data });\n };\n\n return (\n \n );\n}\n\nDementiaQuestionnaireForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\n\nimport EditButton from '../components/EditButton';\nimport DementiaQuestionnaireForm from './DementiaQuestionnaireForm';\n\nexport default function DementiaQuestionnaireEditButton({ ...props }) {\n return (\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport { getElderDementiaSurveyByClientByDate, listElderDementiaSurveys } from 'graphql/queries';\nimport DataTable from 'components/Table/DataTable';\nimport { TIME_ZONE, surveyResponse } from '@silvergatedelivery/constants';\nimport { getClientIdSchema } from 'forms/schemas';\n\nconst title = '失智防治成效';\nconst description = '';\n\nconst pastThreeDays = moment().tz(TIME_ZONE).add(-3, 'days').format('YYYY-MM-DD');\nconst today = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n\nexport default function EventTable({ clientId }) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const options = {};\n\n const columns = [\n {\n name: 'createdAt',\n label: '紀錄時間',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elder.name',\n label: '姓名',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'dementiaQuestionnaire',\n label: '問題',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender(dementiaQuestionnaire) {\n return dementiaQuestionnaire.items[0].question;\n },\n },\n },\n {\n name: 'response',\n label: '回應',\n options: {\n display: true,\n filter: true,\n sort: true,\n customBodyRender(response) {\n return (surveyResponse.find(({ value }) => value === response) || {}).label || '';\n },\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n const clientOptions = await getClientIdSchema(null, '所屬機構', true);\n\n setIndexes([\n {\n name: 'getElderDementiaSurveyByClientByDate',\n label: '按機構查詢',\n partitionKey: 'clientId',\n sortKey: 'date',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: clientOptions.map(({ id, name }) => ({ value: id, label: name })),\n }, {\n label: '問卷時間',\n key: 'date',\n type: 'date',\n }],\n operation: getElderDementiaSurveyByClientByDate,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n key: 'date',\n fields: [{\n label: `問卷時間`,\n key: 'date',\n type: 'date',\n }],\n operation: listElderDementiaSurveys,\n },\n ]);\n setQueryParams({\n clientId: clientOptions[0] && clientOptions[0].id,\n date: {\n from: pastThreeDays,\n to: today,\n },\n });\n })();\n }, []);\n\n if (!indexes || !queryParams) return <>;\n\n return (\n \n \n \n );\n}\n\nEventTable.propTypes = {\n clientId: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n getAuditTrailsByGroupNameByTimestamp,\n getAuditTrailsByFacilityIdByTimestamp,\n listAuditTrails,\n} from 'graphql/queries';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\nimport { useCache } from 'CacheProvider';\nimport { getClientIdSchema } from 'forms/schemas';\nimport LineCard from 'views/FacilityAdmin/Dashboard/components/LineCard';\n\nconst pastThreeDays = moment().tz(TIME_ZONE).add(-3, 'days').startOf('day').format('YYYY-MM-DD');\nconst today = moment().tz(TIME_ZONE).endOf('day').format('YYYY-MM-DD');\n\nconst LoginChart = ({ loginLogs, params }) => {\n const getDatesBetween = (start, end, format = 'YYYY-MM-DD') => {\n const startDate = moment(start);\n const endDate = moment(end);\n const dates = [];\n while (startDate.isBefore(endDate) || startDate.isSame(endDate)) {\n dates.push(startDate.format(format));\n startDate.add(1, 'days');\n }\n return dates;\n };\n const getWeeksBetween = (start, end, format = 'WW') => {\n const startDate = moment(start);\n const endDate = moment(end);\n const startWeek = startDate.isoWeek();\n const endWeek = endDate.isoWeek();\n const startYear = startDate.isoWeekYear();\n const endYear = endDate.isoWeekYear();\n\n const weeks = Array.from({ length: (endYear - startYear) * 52 + (endWeek - startWeek + 1) }, (_, i) => {\n const currentWeek = startWeek + i;\n const adjustedWeek = ((currentWeek - 1) % 52) + 1;\n return `${adjustedWeek}`;\n });\n return weeks;\n };\n\n if (!loginLogs || !params) {\n return <>;\n }\n\n let dates = [];\n let weeks = [];\n let weekMode = false;\n if (params?.timestamp?.from && params?.timestamp?.to) {\n const differenceInDays = moment(params.timestamp.to).diff(moment(params.timestamp.from), 'days');\n if (differenceInDays > 32) {\n weekMode = true;\n dates = getDatesBetween(params.timestamp.from, params.timestamp.to);\n weeks = getWeeksBetween(params.timestamp.from, params.timestamp.to);\n } else {\n dates = getDatesBetween(params.timestamp.from, params.timestamp.to);\n }\n }\n\n let title = '每日登入次數';\n let data;\n if (weekMode) {\n title = '每週登入次數';\n data = [{\n id: '登入次數',\n data: weeks.map((week) => {\n const filteredLoginLogs = loginLogs.filter((item) => moment(item.timestamp).tz(TIME_ZONE).format('WW') === week);\n const lineValue = {\n x: moment().week(week).startOf('week').format('MM-DD'),\n y: filteredLoginLogs.filter((item) => item.action === '登入').length,\n };\n return lineValue;\n }),\n }];\n } else {\n data = [{\n id: '登入次數',\n data: dates.map((date) => {\n const filteredLoginLogs = loginLogs.filter((item) => moment(item.timestamp).tz(TIME_ZONE).format('YYYY-MM-DD') === date);\n const lineValue = {\n x: date.slice(-5),\n y: filteredLoginLogs.filter((item) => item.action === '登入').length,\n };\n return lineValue;\n }),\n }];\n }\n const colors = ({ id }) => {\n return '#00913A';\n };\n return ;\n};\n\nLoginChart.propTypes = {\n loginLogs: PropTypes.array,\n params: PropTypes.any,\n};\n\nexport default function AuditTrailTable({\n title = '使用紀錄',\n description,\n organizationId: inOrganizationId,\n clientId: inClientId,\n facilityId: inFacilityId,\n ...props\n}) {\n const { selectedUserGroupParams } = useCache();\n\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [listQueries, setListQueries] = useState();\n\n const organizationId = inOrganizationId || cache.get('app:organizationId');\n const facilityId = inFacilityId || cache.get('app:facilityId');\n // const clientId = inClientId || cache.get('app:clientId');\n\n const options = {};\n\n const columns = [\n // {\n // name: 'id',\n // label: '編號',\n // options: {\n // display: false,\n // filter: false,\n // sort: true,\n // },\n // },\n {\n name: 'timestamp',\n label: '時間',\n type: 'datetime',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'groupName',\n label: '權限',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '帳號',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'action',\n label: '操作動作',\n options: {\n filter: true,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名稱',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n\n ];\n\n useEffect(() => {\n if (organizationId) {\n const { organizationClientIds } = selectedUserGroupParams;\n\n setListQueries(organizationClientIds.map((clientId) => {\n return {\n name: getAuditTrailsByFacilityIdByTimestamp,\n params: {\n facilityId: clientId,\n },\n };\n }));\n\n setIndexes(undefined);\n\n return;\n }\n\n if (facilityId) {\n setIndexes([\n {\n name: 'byFacilityIdByTimestamp',\n label: '按機構查詢',\n partitionKey: 'facilityId',\n sortKey: 'timestamp',\n fields: [\n // {\n // label: '機構編號',\n // key: 'facilityId',\n // },\n {\n label: `時間`,\n key: 'timestamp',\n type: 'datetime',\n },\n ],\n operation: getAuditTrailsByFacilityIdByTimestamp,\n },\n ]);\n\n setQueryParams({\n facilityId,\n timestamp: {\n from: pastThreeDays,\n to: today,\n },\n });\n\n return;\n }\n\n // Admin\n (async () => {\n const clientOptions = await getClientIdSchema(null, '所屬機構', true);\n setIndexes([\n {\n name: 'getAuditTrailsByGroupNameByTimestamp',\n label: '按權限查詢',\n partitionKey: 'groupName',\n sortKey: 'timestamp',\n fields: [\n {\n label: '權限',\n key: 'groupName',\n type: 'select',\n options: [\n 'admin',\n 'organization',\n 'facility',\n 'delivery',\n 'client',\n ].map((item) => {\n return { value: item, label: item };\n }),\n\n },\n {\n label: `時間`,\n key: 'timestamp',\n type: 'datetime',\n },\n ],\n operation: getAuditTrailsByGroupNameByTimestamp,\n },\n {\n name: 'byFacilityIdByTimestamp',\n label: '按機構查詢',\n partitionKey: 'facilityId',\n sortKey: 'timestamp',\n fields: [{\n label: '機構',\n key: 'facilityId',\n type: 'select',\n options: clientOptions.map(({ id, name }) => ({ value: id, label: name })),\n }, {\n label: `時間`,\n key: 'timestamp',\n type: 'datetime',\n }],\n operation: getAuditTrailsByFacilityIdByTimestamp,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n key: 'timestamp',\n fields: [{\n label: '操作動作',\n key: 'action',\n }, {\n label: `時間`,\n key: 'timestamp',\n type: 'datetime',\n }],\n operation: listAuditTrails,\n },\n ]);\n\n setQueryParams({\n groupName: 'admin',\n timestamp: {\n from: pastThreeDays,\n to: today,\n },\n });\n })();\n }, [organizationId, facilityId]);\n\n if (!indexes || !queryParams) return <>;\n\n return (\n \n \n {(data, params) => }\n \n \n );\n}\n\nAuditTrailTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n organizationId: PropTypes.string,\n clientId: PropTypes.string,\n facilityId: PropTypes.string,\n};\n","import React from 'react';\nimport i18n from 'i18next';\n\n// Icon Search\n// https://v4.mui.com/components/material-icons/#material-icons\nimport MotorcycleIcon from '@material-ui/icons/Motorcycle';\nimport LockIcon from '@material-ui/icons/Lock';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport EventNoteIcon from '@material-ui/icons/EventNote';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\nimport RestaurantIcon from '@material-ui/icons/Restaurant';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport TodayIcon from '@material-ui/icons/Today';\nimport FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder';\nimport CheckCircleOutlineIcon from '@material-ui/icons/CheckCircleOutline';\nimport SmsFailedIcon from '@material-ui/icons/SmsFailed';\nimport GroupIcon from '@material-ui/icons/Group';\nimport PersonIcon from '@material-ui/icons/Person';\nimport PersonPinIcon from '@material-ui/icons/PersonPin';\nimport EmojiFoodBeverageIcon from '@material-ui/icons/EmojiFoodBeverage';\nimport LocalOfferIcon from '@material-ui/icons/LocalOffer';\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd';\nimport ArtTrackIcon from '@material-ui/icons/ArtTrack';\nimport AccountBalanceIcon from '@material-ui/icons/AccountBalance';\nimport ReceiptIcon from '@material-ui/icons/Receipt';\nimport StarsIcon from '@material-ui/icons/Stars';\nimport FeaturedPlayListIcon from '@material-ui/icons/FeaturedPlayList';\nimport SportsMotorsportsIcon from '@material-ui/icons/SportsMotorsports';\nimport ViewCarouselIcon from '@material-ui/icons/ViewCarousel';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport AddShoppingCartIcon from '@material-ui/icons/AddShoppingCart';\nimport PlaylistAddIcon from '@material-ui/icons/PlaylistAdd';\nimport RemoveFromQueueIcon from '@material-ui/icons/RemoveFromQueue';\nimport NotListedLocationIcon from '@material-ui/icons/NotListedLocation';\nimport EventSeatIcon from '@material-ui/icons/EventSeat';\nimport WorkIcon from '@material-ui/icons/Work';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedIn';\n\nimport OrganizationTable from 'components/OrganizationTable';\nimport OrganizationDetails from 'components/OrganizationDetails';\nimport IndividualClientTable from 'components/IndividualClientTable';\nimport FacilityClientTable from 'components/FacilityClientTable';\nimport ElderTable from 'components/ElderTable';\nimport DeliveryStaffTable from 'components/DeliveryStaffTable';\nimport DeliveryStaffOrderTable from 'components/DeliveryStaffOrderTable';\nimport Schedule from 'views/Admin/Schedule/Schedule';\nimport Orders from 'views/Admin/Orders/Orders';\nimport UberOrders from 'views/Admin/UberOrders/UberOrders';\nimport PandagoOrders from 'views/Admin/PandagoOrders/PandagoOrders';\nimport ILinkOrders from 'views/Admin/ILinkOrders/ILinkOrders';\nimport LalamoveOrders from 'views/Admin/LalamoveOrders/LalamoveOrders';\nimport OrderTable from 'components/OrderTable';\nimport Order from 'views/Admin/Order/Order';\nimport RestaurantTable from 'components/RestaurantTable';\nimport ClientDetails from 'components/ClientDetails';\nimport ElderDetails from 'components/ElderDetails';\nimport RestaurantDetails from 'components/RestaurantDetails';\nimport RestaurantMeals from 'views/Admin/RestaurantMeals/RestaurantMeals';\nimport DeliveryStaffDetails from 'components/DeliveryStaffDetails';\nimport Dashboard from 'views/Admin/Dashboard/Dashboard';\nimport IssueCenter from 'views/Admin/IssueCenter/IssueCenter';\nimport Users from 'views/Admin/Users/Users';\nimport Reports from 'views/Admin/Reports/Reports';\nimport System from 'views/Admin/System/System';\nimport TodayOrders from 'views/Admin/TodayOrders/TodayOrders';\nimport DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\nimport LandingPage from 'views/Public/LandingPage';\nimport IssueCenterBadge from 'components/IssueCenterBadge';\nimport DeliveryStaffBadge from 'components/DeliveryStaffBadge';\nimport SToken from 'views/Admin/SToken/SToken';\nimport STokenBadge from 'components/STokenBadge';\nimport OrderBadge from 'components/OrderBadge';\nimport AbandonedOrderBadge from 'components/AbandonedOrderBadge';\nimport TagTable from 'components/TagTable';\nimport RestaurantOwnerTable from 'components/RestaurantOwnerTable';\nimport RestaurantOwnerDetails from 'components/RestaurantOwnerDetails';\nimport Transactions from 'views/Admin/Transactions/Transactions';\nimport Invoices from 'views/Admin/Invoices/Invoices';\nimport SponsorshipPrograms from 'views/Admin/Sponsorship/SponsorshipPrograms';\nimport Sponsorships from 'views/Admin/Sponsorship/Sponsorships';\nimport MembershipPrograms from 'views/Admin/Membership/MembershipPrograms';\nimport Memberships from 'views/Admin/Membership/Memberships';\nimport ClientAppBannerTable from 'components/ClientAppBannerTable';\nimport OrderQuoteTable from 'components/OrderQuoteTable';\nimport ApiDocs from 'views/Admin/ApiDocs/ApiDocs';\nimport WebhookEventTable from 'components/WebhookEventTable';\nimport GetOrderQuote from 'components/GetOrderQuote';\nimport QueryAddress from 'components/QueryAddress';\nimport EventTable from 'components/EventTable';\nimport DementiaQuestionnaireTable from 'components/Project/Dementia/DementiaQuestionnaireTable';\nimport DementiaPreventionTable from 'components/Project/Dementia/DementiaPreventionTable';\nimport AuditTrailTable from 'components/AuditTrailTable';\n\nexport default [\n {\n title: i18n.t('總覽'),\n icon: DashboardIcon,\n paths: [{ path: '/dashboard', exact: true }],\n component: Dashboard,\n },\n {\n title: i18n.t('今日訂單'),\n icon: TodayIcon,\n paths: [{ path: '/todayOrders', exact: true }],\n component: TodayOrders,\n },\n {\n title: '訂單',\n icon: ListAltIcon,\n paths: [{ path: '/orders', exact: true }],\n component: Orders,\n },\n {\n title: '訂單頁面',\n icon: ListAltIcon,\n paths: [{ path: '/order/:id', exact: true }],\n component: Order,\n hideFromMenu: true,\n },\n {\n title: i18n.t('行程表'),\n icon: EventNoteIcon,\n paths: [{ path: '/schedule', exact: true }],\n component: Schedule,\n },\n {\n title: i18n.t('送餐關懷'),\n icon: FavoriteBorderIcon,\n paths: [{ path: '/deliveryDiary', exact: true }],\n component: DeliveryDiary,\n divider: true,\n },\n {\n title: 'Uber',\n icon: SportsMotorsportsIcon,\n paths: [{ path: '/uberOrders', exact: true }],\n component: UberOrders,\n },\n {\n title: 'Pandago',\n icon: SportsMotorsportsIcon,\n paths: [{ path: '/pandagoOrders', exact: true }],\n component: PandagoOrders,\n },\n {\n title: 'I-Link',\n icon: SportsMotorsportsIcon,\n paths: [{ path: '/iLinkOrders', exact: true }],\n component: ILinkOrders,\n },\n {\n title: 'Lalamove',\n icon: SportsMotorsportsIcon,\n paths: [{ path: '/LalamoveOrders', exact: true }],\n component: LalamoveOrders,\n divider: true,\n },\n {\n title: i18n.t('送餐大使'),\n icon: MotorcycleIcon,\n paths: [{ path: '/deliveryStaffs', exact: true }],\n component: DeliveryStaffTable,\n },\n {\n title: `${i18n.t('送餐大使')}頁面`,\n paths: [{ path: '/deliveryStaff/:id', exact: true }],\n component: DeliveryStaffDetails,\n hideFromMenu: true,\n },\n {\n title: i18n.t('送餐對象'),\n icon: PersonPinIcon,\n paths: [{ path: '/elders', exact: true }],\n component: ElderTable,\n },\n {\n title: i18n.t('送餐紀錄'),\n icon: ArtTrackIcon,\n paths: [{ path: '/deliveryStaffOrders', exact: true }],\n component: DeliveryStaffOrderTable,\n divider: true,\n },\n {\n title: '客戶 - 組織',\n icon: EventSeatIcon,\n paths: [{ path: '/organizations', exact: true }],\n component: () => ,\n },\n {\n title: '組織頁面',\n paths: [{ path: '/organization/:id', exact: true }],\n component: OrganizationDetails,\n hideFromMenu: true,\n },\n {\n title: '客戶 - 機構',\n icon: GroupIcon,\n paths: [{ path: '/facilities', exact: true }],\n component: () => ,\n },\n {\n title: '客戶 - 個人',\n icon: PersonIcon,\n paths: [{ path: '/clients', exact: true }],\n component: () => ,\n divider: true,\n },\n {\n title: '客戶頁面',\n paths: [{ path: '/client/:id', exact: true }],\n component: ClientDetails,\n hideFromMenu: true,\n },\n {\n title: `${i18n.t('送餐對象')}頁面`,\n paths: [{ path: '/elder/:id', exact: true }],\n component: ElderDetails,\n hideFromMenu: true,\n },\n {\n title: i18n.t('餐廳'),\n icon: RestaurantIcon,\n paths: [{ path: '/restaurants', exact: true }],\n component: RestaurantTable,\n },\n {\n title: `${i18n.t('餐廳')}負責人`,\n icon: AssignmentIndIcon,\n paths: [{ path: '/restaurantOwners', exact: true }],\n component: RestaurantOwnerTable,\n },\n {\n title: `${i18n.t('餐廳')}負責人頁面`,\n paths: [{ path: '/restaurantOwner/:id', exact: true }],\n component: RestaurantOwnerDetails,\n hideFromMenu: true,\n },\n {\n title: i18n.t('餐點'),\n icon: EmojiFoodBeverageIcon,\n paths: [{ path: '/restaurantMeals', exact: true }],\n component: RestaurantMeals,\n divider: true,\n },\n {\n title: `${i18n.t('餐廳')}頁面`,\n paths: [{ path: '/restaurant/:id', exact: true }],\n component: RestaurantDetails,\n hideFromMenu: true,\n },\n {\n title: '應變中心',\n icon: ErrorIcon,\n paths: [{ path: '/issueCenter', exact: true }],\n component: IssueCenter,\n badge: IssueCenterBadge,\n },\n {\n title: '棄單',\n icon: SmsFailedIcon,\n paths: [{ path: '/abandonedOrders', exact: true }],\n component: () => ,\n badge: AbandonedOrderBadge,\n },\n {\n title: 'S Token',\n icon: ListAltIcon,\n paths: [{ path: '/sToken', exact: true }],\n component: SToken,\n badge: STokenBadge,\n },\n {\n title: '交易紀錄',\n icon: AccountBalanceIcon,\n paths: [{ path: '/transactions', exact: true }],\n component: Transactions,\n },\n {\n title: '電子發票',\n icon: ReceiptIcon,\n paths: [{ path: '/invoices', exact: true }],\n component: Invoices,\n divider: true,\n },\n {\n title: '捐贈項目',\n icon: StarsIcon,\n paths: [{ path: '/sponsorshipPrograms', exact: true }],\n component: SponsorshipPrograms,\n },\n {\n title: '捐贈紀錄',\n icon: FeaturedPlayListIcon,\n paths: [{ path: '/sponsorships', exact: true }],\n component: Sponsorships,\n },\n {\n title: '失智防治專案',\n icon: WorkIcon,\n paths: [{ path: '/', exact: true }],\n component: LandingPage,\n divider: true,\n folder: true,\n },\n {\n title: '失智防治成效',\n icon: AssignmentTurnedInIcon,\n paths: [{ path: '/project/dementiaPrevention', exact: true }],\n component: DementiaPreventionTable,\n nested: true,\n },\n {\n title: '失智友善問卷',\n icon: QuestionAnswerIcon,\n paths: [{ path: '/project/dementiaQuestionnaire', exact: true }],\n component: DementiaQuestionnaireTable,\n nested: true,\n divider: true,\n },\n {\n title: '會員項目',\n icon: StarsIcon,\n paths: [{ path: '/membershipPrograms', exact: true }],\n component: MembershipPrograms,\n },\n {\n title: '付費會員',\n icon: FeaturedPlayListIcon,\n paths: [{ path: '/memberships', exact: true }],\n component: Memberships,\n divider: true,\n },\n {\n title: '新申請大使',\n icon: CheckCircleOutlineIcon,\n paths: [{ path: '/waitingForApprovalDeliveryStaffs', exact: true }],\n component: () => ,\n badge: DeliveryStaffBadge,\n },\n {\n title: '新訂單',\n icon: ListAltIcon,\n paths: [{ path: '/newOrders', exact: true }],\n component: () => ,\n badge: OrderBadge,\n divider: true,\n },\n {\n title: '估價單',\n icon: PlaylistAddIcon,\n paths: [{ path: '/orderQuotes', exact: true }],\n component: OrderQuoteTable,\n },\n {\n title: '估價',\n icon: AddShoppingCartIcon,\n paths: [{ path: '/getOrderQuote', exact: true }],\n component: GetOrderQuote,\n },\n {\n title: '地址查詢',\n icon: NotListedLocationIcon,\n paths: [{ path: '/queryAddress', exact: true }],\n component: QueryAddress,\n },\n {\n title: '標籤管理',\n icon: LocalOfferIcon,\n paths: [{ path: '/tags', exact: true }],\n component: TagTable,\n },\n {\n title: 'Banner管理',\n icon: ViewCarouselIcon,\n paths: [{ path: '/clientAppBanners', exact: true }],\n component: ClientAppBannerTable,\n },\n {\n title: '用戶',\n icon: LockIcon,\n paths: [{ path: '/users', exact: true }],\n component: Users,\n },\n {\n title: '報表',\n icon: AssessmentIcon,\n paths: [{ path: '/reports', exact: true }],\n component: Reports,\n },\n {\n title: '系統記錄',\n icon: RemoveFromQueueIcon,\n paths: [{ path: '/events', exact: true }],\n component: EventTable,\n },\n {\n title: '使用紀錄',\n icon: RemoveFromQueueIcon,\n paths: [{ path: '/auditTrails', exact: true }],\n component: AuditTrailTable,\n },\n {\n title: '系統',\n icon: SettingsIcon,\n paths: [{ path: '/system', exact: true }],\n component: System,\n },\n {\n title: 'APIs',\n icon: SettingsIcon,\n paths: [{ path: '/api-docs', exact: true }],\n component: ApiDocs,\n },\n {\n title: 'Webhooks',\n icon: SettingsIcon,\n paths: [{ path: '/webhooks', exact: true }],\n component: WebhookEventTable,\n },\n\n // {\n // title: '系統紀錄',\n // icon: EventNote,\n // paths: [\n // { path: '/events', exact: true },\n // ],\n // component: Events,\n // },\n];\n","import i18n from 'i18next';\nimport { counties } from '@silvergatedelivery/constants';\nimport { getTranslatedOrderStatus } from 'utilities/translate';\n\nexport const getChartDataMappings = (data = {}) => {\n const {\n orders,\n // prevOrders,\n // newOrders,\n // prevNewOrders,\n issues,\n prevIssues,\n newDeliveryStaffs,\n prevNewDeliveryStaffs,\n // newClients,\n // prevNewClients,\n newElders,\n prevNewElders,\n } = data;\n\n global.logger.debug('orders', orders);\n global.logger.debug('issues', issues);\n\n const issueOrderIds = [];\n issues.forEach(({ orderId }) => {\n if (orderId && !issueOrderIds.includes(orderId)) {\n issueOrderIds.push(orderId);\n }\n });\n\n const prevIssueOrderIds = [];\n prevIssues.forEach(({ orderId }) => {\n if (orderId && !prevIssueOrderIds.includes(orderId)) {\n prevIssueOrderIds.push(orderId);\n }\n });\n\n const lunchOrders = orders.filter(({ mealSlot }) => mealSlot === 'lunch');\n const dinnerOrders = orders.filter(({ mealSlot }) => mealSlot === 'dinner');\n\n const disadvantagedElders = newElders.filter(({ isDisadvantaged }) => isDisadvantaged);\n const prevDisadvantagedElders = prevNewElders.filter(({ isDisadvantaged }) => isDisadvantaged);\n const otherElders = newElders.filter(({ isDisadvantaged }) => !isDisadvantaged);\n const prevOtherElders = prevNewElders.filter(({ isDisadvantaged }) => !isDisadvantaged);\n const translatedOrderStatus = getTranslatedOrderStatus();\n // process data\n const chartDataMappings = {\n totalOrders: {\n type: 'summary',\n width: 3,\n title: '訂單數',\n value: orders.length,\n // prevValue: prevOrders.length,\n },\n totalOrdersValue: {\n type: 'summary',\n width: 3,\n title: '訂單總金額',\n unit: '$',\n value: orders.reduce((num, { total }) => {\n return num + total;\n }, 0),\n // prevValue: prevOrders.reduce((num, { total }) => {\n // return num + total;\n // }, 0),\n },\n orderIssueRatio: {\n type: 'summary',\n width: 3,\n title: '訂單事故比率',\n appendix: '%',\n value: Math.round((orders.length > 0 ? issueOrderIds.length / orders.length : 0) * 100),\n // prevValue: Math.round((prevOrders.length > 0 ? prevIssueOrderIds.length / prevOrders.length : 0) * 100),\n },\n totalIssues: {\n type: 'summary',\n width: 3,\n title: '應變中心事故數',\n value: issues.length,\n // prevValue: prevIssues.length,\n },\n // totalNewOrders: {\n // type: 'summary',\n // width: 3,\n // title: '新進訂單',\n // value: newOrders.length,\n // prevValue: prevNewOrders.length,\n // },\n totalNewDisadvantagedElders: {\n type: 'summary',\n width: 4,\n title: `新進${i18n.t('送餐對象')}(弱勢)`,\n value: disadvantagedElders.length,\n prevValue: prevDisadvantagedElders.length,\n },\n totalNewOtherElders: {\n type: 'summary',\n width: 4,\n title: `新進${i18n.t('送餐對象')}(自費)`,\n value: otherElders.length,\n prevValue: prevOtherElders.length,\n },\n // totalNewClients: {\n // type: 'summary',\n // title: '新進客戶數',\n // value: newClients.length,\n // prevValue: prevClients.length,\n // },\n totalNewDeliveryStaffs: {\n type: 'summary',\n width: 4,\n title: `新進${i18n.t('送餐大使')}`,\n value: newDeliveryStaffs.length,\n prevValue: prevNewDeliveryStaffs.length,\n },\n // isDisadvantagedRatio: {\n // type: 'pie',\n // title: `送餐對象`,\n // width: 4,\n // data: orders.reduce((obj, order) => {\n // const key = order.elder.isDisadvantaged ? '弱勢' : '自費';\n // obj[key] = obj[key] || { value: 0 };\n // obj[key].value++;\n // return obj;\n // }, {}),\n // },\n orderStatus: {\n type: 'pie',\n title: `訂單 ${orders.length}`,\n width: 4,\n data: orders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n lunchStatus: {\n type: 'pie',\n title: `${i18n.t('午餐')}訂單 ${lunchOrders.length}`,\n width: 4,\n data: lunchOrders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n dinnerStatus: {\n type: 'pie',\n title: `${i18n.t('晚餐')}訂單 ${dinnerOrders.length}`,\n width: 4,\n data: dinnerOrders.reduce((obj, order) => {\n const { label: key, color } = translatedOrderStatus.find(({ value }) => value === order.status);\n obj[key] = obj[key] || { value: 0, color };\n obj[key].value++;\n return obj;\n }, {}),\n },\n // issueStatus: {\n // type: 'pie',\n // title: '應變中心狀態',\n // width: 4,\n // data: issues.reduce((obj, issue) => {\n // const key = `${issue.status}`;\n // obj[key] = obj[key] || 0;\n // obj[key]++;\n // return obj;\n // }, {}),\n // },\n orderByCounty: {\n type: 'bar',\n title: '訂單縣市分佈',\n width: 12,\n mode: 'stacked',\n dataKeys: ['弱勢', '自費'],\n data: counties.map((county) => {\n return {\n 'name': county,\n '弱勢': orders.filter((item) => item.county === county && item.elder.isDisadvantaged).length,\n '自費': orders.filter((item) => item.county === county && !item.elder.isDisadvantaged).length,\n };\n }),\n },\n lunchByCounty: {\n type: 'bar',\n title: `${i18n.t('午餐')}訂單縣市分佈`,\n width: 12,\n mode: 'stacked',\n dataKeys: ['弱勢', '自費'],\n data: counties.map((county) => {\n return {\n 'name': county,\n '弱勢': lunchOrders.filter((item) => item.county === county && item.elder.isDisadvantaged).length,\n '自費': lunchOrders.filter((item) => item.county === county && !item.elder.isDisadvantaged).length,\n };\n }),\n },\n dinnerByCounty: {\n type: 'bar',\n title: `${i18n.t('晚餐')}訂單縣市分佈`,\n width: 12,\n mode: 'stacked',\n dataKeys: ['弱勢', '自費'],\n data: counties.map((county) => {\n return {\n 'name': county,\n '弱勢': dinnerOrders.filter((item) => item.county === county && item.elder.isDisadvantaged).length,\n '自費': dinnerOrders.filter((item) => item.county === county && !item.elder.isDisadvantaged).length,\n };\n }),\n },\n newOrderNewDeliveryStaffByCounty: {\n type: 'bar',\n title: `新進${i18n.t('送餐大使')}縣市分佈`,\n width: 12,\n dataKeys: [i18n.t('送餐大使')],\n data: counties.map((county) => {\n const item = {\n 'name': county,\n // '訂單': newOrders.filter((item) => item.county === county).length,\n };\n item[i18n.t('送餐大使')] = newDeliveryStaffs.filter((item) => item.county === county).length;\n return item;\n }),\n },\n // orderByDirection: {\n // type: 'plot',\n // title: '送餐距離與時間分佈',\n // width: 12,\n // data: orders.reduce((data, order) => {\n // let matched = data.find((x) => x.id === order.county);\n // if (!matched) {\n // matched = {\n // id: order.county,\n // data: [],\n // };\n // data.push(matched);\n // }\n // matched.data.push({\n // x: +((order.direction.distanceInMeters / 1000).toFixed(0)),\n // y: +((order.direction.durationInSeconds / 60).toFixed(0)),\n // });\n\n // return data;\n // }, []),\n // },\n issueByCounty: {\n type: 'bar',\n title: '事故縣市分佈',\n width: 12,\n dataKeys: ['數量'],\n data: issues.reduce((data, issue) => {\n let matched = data.find((x) => x.name === issue.county);\n if (!matched) {\n matched = {\n 'name': issue.county,\n '數量': 0,\n };\n data.push(matched);\n }\n matched['數量']++;\n\n return data;\n }, counties.map((county) => {\n return {\n 'name': county,\n '數量': 0,\n };\n })),\n },\n };\n\n return chartDataMappings;\n};\n","import React from 'react';\n\nimport OrderTable from 'components/OrderTable';\n\nexport default function Orders() {\n return (\n \n \n );\n}\n","import React from 'react';\n\nimport UberOrderTable from 'components/UberOrderTable';\n\nexport default function UberOrders() {\n return (\n \n \n );\n}\n","import React from 'react';\n\nimport PandagoOrderTable from 'components/PandagoOrderTable';\n\nexport default function PandagoOrders() {\n return (\n \n \n );\n}\n","import React from 'react';\n\nimport ILinkOrderTable from 'components/ILinkOrderTable';\n\nexport default function ILinkOrders() {\n return (\n \n \n );\n}\n","import React from 'react';\n\nimport LalamoveOrderTable from 'components/LalamoveOrderTable';\n\nexport default function LalamoveOrders() {\n return (\n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport {\n listRestaurantOwners,\n getRestaurantOwnersByCountyByCreatedAt,\n} from 'graphql/queries';\nimport { formatAddress } from 'utilities/format';\nimport RestaurantOwnerDetails from 'components/RestaurantOwnerDetails';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport LinkButton from 'components/Table/LinkButton';\nimport RestaurantOwnerEditButton from 'forms/RestaurantOwnerForm/RestaurantOwnerEditButton';\nimport {\n counties,\n} from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\n\nexport default function RestaurantOwnerTable({\n title = `${i18n.t('餐廳')}負責人`,\n description,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const clientId = cache.get('app:facilityId');\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const id = rowData[0];\n return (\n \n \n \n );\n },\n };\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n // filterList: [cache.get('app:location')].filter((x) => x),\n filter: true,\n sort: true,\n },\n },\n {\n name: 'isActive',\n label: '使用中',\n type: 'checkbox',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '名字',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'username',\n label: '帳號',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (value) => (\n
\n {value}\n
\n ),\n },\n },\n {\n name: 'address',\n label: '地址',\n options: {\n filter: false,\n sort: true,\n customBodyRender: formatAddress,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n // not enabled for client access\n if (clientId) {\n return;\n }\n setIndexes([\n {\n name: 'getRestaurantOwnersByCountyByCreatedAt',\n label: '按地區查詢',\n partitionKey: 'county',\n sortKey: 'createdAt',\n fields: [{\n label: '縣市',\n key: 'county',\n type: 'select',\n options: counties.map((item) => {\n return { value: item, label: item };\n }),\n }],\n operation: getRestaurantOwnersByCountyByCreatedAt,\n },\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [],\n operation: listRestaurantOwners,\n },\n ]);\n setQueryParams({\n county: cache.get('app:location') || counties[0],\n });\n }, []);\n\n if (!queryParams) return null;\n\n return (\n \n \n \n );\n}\n\nRestaurantOwnerTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","import React from 'react';\n\nimport STokenTable from 'components/STokenTable';\n\nexport default function STokenPage() {\n return ();\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Badge from '@material-ui/core/Badge';\nimport Tooltip from '@material-ui/core/Tooltip';\n// import { Hub } from 'aws-amplify';\n\nimport { request } from 'utilities/graph';\nimport { getDeliveryStaffTransactionByStatusByCreatedAt } from 'graphql/queries';\nimport { AUTO_UPDATE_INTERVAL_IN_MILLISECONDS } from '@silvergatedelivery/constants';\n\nexport default function STokenBadge({ children }) {\n const [badgeContent, setBadgeContent] = useState(0);\n\n const update = async () => {\n const params = {\n status: 'pending',\n limit: 10,\n sortDirection: 'DESC',\n };\n const {\n data: {\n getDeliveryStaffTransactionByStatusByCreatedAt: { items: records },\n },\n } = await request(getDeliveryStaffTransactionByStatusByCreatedAt, params);\n\n setBadgeContent(records.length);\n };\n\n useEffect(() => {\n update();\n\n const interval = setInterval(update, AUTO_UPDATE_INTERVAL_IN_MILLISECONDS);\n\n return () => {\n // Hub.remove('app', appListener);\n clearInterval(interval);\n };\n }, []);\n\n return (\n \n \n {children}\n \n );\n}\n\nSTokenBadge.propTypes = {\n children: PropTypes.element,\n};\n","import React from 'react';\n\nimport TransactionTable from 'components/TransactionTable';\n\nexport default function TransactionsPage() {\n return ();\n}\n","import React from 'react';\n\nimport InvoiceTable from 'components/InvoiceTable';\n\nexport default function InvoicesPage() {\n return ();\n}\n","import React from 'react';\n\nimport SponsorshipProgramTable from 'components/SponsorshipProgramTable';\n\nexport default function SponsorshipPrograms() {\n return ();\n}\n","\nimport React from 'react';\n\nimport SponsorshipTable from 'components/SponsorshipTable';\n\nexport default function Sponsorships() {\n return ();\n}\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DataTable from 'components/Table/DataTable';\nimport { listDementiaQuestionnaires } from 'graphql/queries';\nimport DementiaQuestionnaireEditButton from 'forms/DementiaQuestionnaireForm/DementiaQuestionnaireEditButton';\n\n\nexport default function DementiaQuestionnaireTable({\n title = '客戶',\n description,\n type: inClientType = 'individual',\n organizationId: inOrganizationId,\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'isActive',\n label: '使用中',\n type: 'checkbox',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'category',\n label: '題目類別',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n\n {\n name: 'type',\n label: '答題類型',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'question',\n label: '題目',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n ];\n\n useEffect(() => {\n setIndexes([\n {\n name: 'scan',\n label: '掃描全部資料',\n fields: [{\n label: '狀態',\n key: 'isActive',\n type: 'select',\n options: [\n {\n label: '已停用',\n value: 0,\n },\n {\n label: '使用中',\n value: 1,\n },\n ],\n }],\n operation: listDementiaQuestionnaires,\n },\n ]);\n setQueryParams({ isActive: 1 });\n }, []);\n\n return (\n \n );\n}\n\nDementiaQuestionnaireTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n type: PropTypes.string,\n organizationId: PropTypes.string,\n};\n","import React from 'react';\n\nimport MembershipProgramTable from 'components/MembershipProgramTable';\n\nexport default function MembershipPrograms() {\n return ();\n}\n","\nimport React from 'react';\n\nimport MembershipTable from 'components/MembershipTable';\n\nexport default function Memberships() {\n return ();\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Badge from '@material-ui/core/Badge';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { request } from 'utilities/graph';\nimport { getDeliveryStaffsByCountyByIsActive, getDeliveryStaffsByIsActiveByCreatedAt } from 'graphql/queries';\nimport { AUTO_UPDATE_INTERVAL_IN_MILLISECONDS } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\n\nexport default function DeliveryStaffBadge({ children }) {\n const [badgeContent, setBadgeContent] = useState(0);\n\n const update = async () => {\n // global.logger.debug('Update delivery staff badge content...');\n const county = cache.get('app:location');\n\n let records = [];\n if (county) {\n const params = {\n county,\n isActive: { eq: 0 },\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getDeliveryStaffsByCountyByIsActive: { items: results } } } = await request(getDeliveryStaffsByCountyByIsActive, params);\n records = results;\n } else {\n const params = {\n isActive: 0,\n limit: 10,\n sortDirection: 'DESC',\n };\n const { data: { getDeliveryStaffsByIsActiveByCreatedAt: { items: results } } } = await request(getDeliveryStaffsByIsActiveByCreatedAt, params);\n records = results;\n }\n\n setBadgeContent(records.length);\n };\n\n useEffect(() => {\n update();\n\n const interval = setInterval(update, AUTO_UPDATE_INTERVAL_IN_MILLISECONDS * 3);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n return (\n \n \n {children}\n \n );\n}\n\nDeliveryStaffBadge.propTypes = {\n children: PropTypes.element,\n};\n","import React from 'react';\n\nexport default function ApiDocs() {\n return (\n \n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport VerticalTabs from 'components/Tab/VerticalTabs';\n// import DeliveryStaffOrderTable from 'components/DeliveryStaffOrderTable';\nimport OrderTable from 'components/OrderTable';\nimport DeliveryStaffDocumentTable from 'components/DeliveryStaffDocumentTable';\n// import NotificationTable from 'components/NotificationTable';\n// import DeliveryStaffTransactionTable from 'components/DeliveryStaffTransactionTable';\n// import DeliveryStaffStatementTable from 'components/DeliveryStaffStatementTable';\nimport DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\n\nimport DeliveryStaffCard from 'components/Card/DeliveryStaffCard';\n\nconst useStyles = makeStyles((theme) => ({\n collapsibleGrid: {\n 'width': 'auto',\n 'transition': 'width 0.3s ease-in-out',\n '&.collapsed': {\n 'width': theme.spacing(3),\n 'marginRight': 16,\n },\n },\n}));\n\nexport default function DeliveryStaffDetails({ id: inId, computedMatch, isNested }) {\n const { t } = useTranslation();\n const [id, setId] = useState();\n const [tabs, setTabs] = useState([]);\n const parentRef = useRef(null);\n const [containerWidth, setContainerWidth] = useState('100%');\n const [isCardOpen, setIsCardOpen] = useState(true);\n const classes = useStyles();\n const theme = useTheme();\n const isSm = useMediaQuery(theme.breakpoints.down('sm'));\n\n useEffect(() => {\n const updateWidth = () => {\n if (parentRef.current) {\n setContainerWidth(`${parentRef.current.offsetWidth}px`);\n }\n };\n\n const resizeObserver = new ResizeObserver(updateWidth);\n\n if (parentRef.current) {\n resizeObserver.observe(parentRef.current);\n updateWidth();\n }\n\n return () => resizeObserver.disconnect();\n }, [parentRef.current]);\n\n useEffect(() => {\n if (inId) {\n setId(inId);\n } else\n if (computedMatch) {\n const { params: { id } } = computedMatch;\n setId(id);\n }\n }, [inId, computedMatch]);\n\n useEffect(() => {\n if (!id) return;\n\n const tabs = [\n // {\n // label: '基本資料',\n // component: ,\n // },\n {\n label: '資料檔案',\n component: ,\n },\n // {\n // label: t('送餐紀錄'),\n // component: ,\n // },\n {\n label: '訂單紀錄',\n component: ,\n },\n {\n label: t('送餐關懷'),\n component: ,\n },\n // {\n // label: '通知紀錄',\n // component: ,\n // },\n // {\n // label: '交易紀錄',\n // component: ,\n // },\n // {\n // label: '結算紀錄',\n // component: ,\n // },\n ];\n setTabs(tabs);\n }, [id]);\n\n if (!id) {\n return null;\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nDeliveryStaffDetails.propTypes = {\n id: PropTypes.string,\n computedMatch: PropTypes.object,\n isNested: PropTypes.bool,\n};\n","const deliveryStaffOrderItems = /* GraphQL */ `\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n deliveryResult\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n favorite\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n isActive\n county\n clientId\n name\n }\n elderDementiaSurvey {\n items {\n id\n questionId\n response\n date\n dementiaQuestionnaire {\n items {\n id\n category\n type\n question\n }\n nextToken\n }\n }\n nextToken\n }\n issue {\n items {\n id\n priority\n status\n reportedBy\n county\n type\n summary\n description\n orderId\n createdAt\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n`;\n\nexport const getDeliveryStaffOrdersByClientByDate = /* GraphQL */ `\n query GetDeliveryStaffOrdersByClientByDate(\n $clientId: ID\n $deliveryBy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByClientByDate(\n clientId: $clientId\n deliveryBy: $deliveryBy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${deliveryStaffOrderItems}\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport moment from 'moment-timezone';\nimport ReactToPrint from 'react-to-print';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport { Storage } from 'aws-amplify';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { makeStyles } from '@material-ui/core/styles';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { Semaphore } from 'async-mutex';\nimport {\n getDeliveryStaffOrdersByClientByDate,\n} from './queries';\nimport QueryGenerator from 'components/QueryGenerator';\nimport DeliveryStaffOrderDiaryCard from 'views/Admin/DeliveryDiary/DeliveryStaffOrderDiaryCard';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { request } from 'utilities/graph';\nimport { useCache } from 'CacheProvider';\n\n// const pastThreeDays = moment().tz(TIME_ZONE).add(-3, 'days').startOf('day').format('YYYY-MM-DD');\nconst today = moment().tz(TIME_ZONE).endOf('day').format('YYYY-MM-DD');\n\nlet componentRef;\n\nconst DEFAULT_IMAGE_URL = '/images/default_delivery_diary.png';\nconst INFINITE_DATA_SHOW_PER_REQUEST = 12;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(2),\n width: '100%',\n },\n}));\n\nexport default function DeliveryDiary({\n organizationId,\n}) {\n const classes = useStyles();\n const { t } = useTranslation();\n const [data, setData] = useState([]);\n const [showedData, setShowedData] = useState([]);\n const [hideNames, setHideNames] = useState(false);\n const [showTransferOnly, setShowTransferOnly] = useState(false);\n const [showNotAtHome, setShowNotAtHome] = useState(false);\n const [showFavorite, setShowFavorite] = useState(false);\n const [showIssue, setShowIssue] = useState(false);\n const [filteredData, setFilteredData] = useState([]);\n const [itemCount, setItemCount] = useState(0);\n const [orderCount, setOrderCount] = useState(0);\n const [allDataInVisitorMode, setAllDataInVisitorMode] = useState(false);\n const { selectedUserGroupParams } = useCache();\n const { organizationData } = selectedUserGroupParams;\n\n const facilityOptions = useMemo(() => {\n if (organizationData && organizationData.clients && organizationData.clients.items) {\n return organizationData.clients.items.map(({ client }) => (\n { value: client.id, label: client.name }\n ));\n }\n return [];\n }, [organizationData]);\n\n useEffect(() => {\n let newFilteredData = data;\n if (showTransferOnly) {\n newFilteredData = newFilteredData.filter((data) => data.checkListTransfer ||\n (data.order && (data.order.category === '送物資' || data.order.category === '送餐和物資')));\n }\n if (showNotAtHome) {\n newFilteredData = newFilteredData.filter(({ deliveryResult }) => deliveryResult === 'leftThere' || deliveryResult === 'receivedByRelative');\n }\n if (showFavorite) {\n newFilteredData = newFilteredData.filter(({ favorite }) => !!favorite);\n }\n if (showIssue) {\n newFilteredData = newFilteredData.filter(({ hasIssue }) => hasIssue);\n }\n setFilteredData(newFilteredData);\n setShowedData([...newFilteredData.filter((x, index) => index < INFINITE_DATA_SHOW_PER_REQUEST)]);\n }, [data, showTransferOnly, showNotAtHome, showFavorite, showIssue]);\n\n const indexes = [\n {\n name: 'getDeliveryStaffOrdersByClientByDate',\n label: '按客戶查詢',\n partitionKey: 'clientId',\n sortKey: 'deliveryBy',\n fields: [\n {\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: facilityOptions,\n },\n {\n label: '狀態',\n key: 'status',\n type: 'select',\n disabled: true,\n options: [{ value: 'completed', label: t('完成 (送餐日誌)') }],\n },\n {\n label: `${t('送餐')}時間`,\n key: 'deliveryBy',\n type: 'datetime',\n },\n ],\n operation: getDeliveryStaffOrdersByClientByDate,\n },\n ];\n\n const handleUpdate = async (items) => {\n setItemCount(items.length);\n setOrderCount(0);\n const s = new Semaphore(10);\n\n const updatedItems = await Promise.all(items.map((deliveryStaffOrder) =>\n s.runExclusive(async () => {\n if (!deliveryStaffOrder.order) {\n try {\n const { data: { getOrder: order } } = await request( /* GraphQL */ `\n query GetOrder($id: ID!) {\n getOrder(id: $id) {\n county\n elder {\n name\n nickname\n }\n }\n }\n `, { id: deliveryStaffOrder.orderId });\n deliveryStaffOrder.order = order;\n } catch (e) {\n console.log(e);\n }\n }\n\n deliveryStaffOrder.photoS3Keys = deliveryStaffOrder.photoS3Keys || [];\n\n if (deliveryStaffOrder.photoS3Keys[0] && deliveryStaffOrder.thumbnail !== DEFAULT_IMAGE_URL) {\n deliveryStaffOrder.thumbnail = await Storage.get(deliveryStaffOrder.photoS3Keys[0]);\n } else {\n deliveryStaffOrder.thumbnail = DEFAULT_IMAGE_URL;\n }\n let visitorMode = false;\n if (organizationData?.clients?.items && items.length > 0) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === deliveryStaffOrder.clientId);\n if (clientParams && clientParams.visitorMode) {\n visitorMode = true;\n }\n }\n setOrderCount((prevCounter) => prevCounter + 1);\n deliveryStaffOrder.visitorMode = visitorMode;\n return deliveryStaffOrder;\n }),\n ));\n const allData = updatedItems.filter((x) => x);\n setAllDataInVisitorMode(allData.every(({ visitorMode }) => visitorMode));\n setData([...allData]);\n };\n\n const queryDefaultParams = {\n status: 'completed',\n clientId: facilityOptions.length && facilityOptions[0].value,\n deliveryBy: {\n from: today,\n to: today,\n },\n };\n\n return (\n {\n global.logger.debug('next', args);\n if (showedData.length === filteredData.length) return;\n setShowedData([...filteredData.filter((x, index) => index < showedData.length + INFINITE_DATA_SHOW_PER_REQUEST)]);\n }}\n height='calc(100vh - 116px)' // 64px appbar + 52px footer\n hasMore={showedData.length < filteredData.length}\n loader={\n

\n

載入中...

\n

}\n endMessage={\n

\n

\n }\n >\n \n \n \n \n {(data.length > 0) &&\n \n {orderCount !== itemCount &&\n \n {`下載資料(${orderCount}/${itemCount})`}\n }\n {!allDataInVisitorMode &&\n {\n setHideNames(e.target.checked);\n }}\n name={'hideNames'}\n color=\"primary\"\n />\n }\n label=\"隱藏姓名\"\n />}\n {\n setShowTransferOnly(e.target.checked);\n }}\n name={'showTransferOnly'}\n color=\"primary\"\n />\n }\n label=\"只顯示轉贈愛心物資\"\n />\n {\n setShowNotAtHome(e.target.checked);\n }}\n name={'showNotAtHome'}\n color=\"primary\"\n />\n }\n label=\"只顯示個案未遇\"\n />\n <>\n {\n setShowFavorite(e.target.checked);\n }}\n name={'showFavorite'}\n color=\"primary\"\n />\n }\n label=\"只顯示收藏\"\n />\n {\n setShowIssue(e.target.checked);\n }}\n name={'showIssue'}\n color=\"primary\"\n />\n }\n label=\"只顯示追蹤\"\n />\n \n {\n // NOTE: could just as easily return . Do NOT pass an `onClick` prop\n // to the root node of the returned component as it will be overwritten.\n return ;\n }}\n content={() => {\n const printContents = componentRef.cloneNode(true);\n const noPrintElements = printContents.getElementsByClassName('no-print');\n Array.from(noPrintElements).forEach((element) => element.remove());\n return printContents;\n }}\n />\n }\n componentRef = el }>\n {showedData.map((item, index)=>(\n \n {\n // const newData = data.map((item) => item.id === newDeliveryStaffOrder.id ? newDeliveryStaffOrder : item);\n // setData(newData);\n const index = data.findIndex((item) => item.id === newDeliveryStaffOrder.id);\n if (index !== -1) {\n data[index] = newDeliveryStaffOrder;\n // 這個方式setData不會造成重新render,避免畫面閃爍的問題\n setData(data);\n }\n }}\n />\n {(index + 1) % 6 === 0 && index + 1 !== showedData.length &&
}\n \n ))}\n \n \n \n );\n}\n\nDeliveryDiary.propTypes = {\n deliveryStaffId: PropTypes.string,\n elderId: PropTypes.string,\n clientId: PropTypes.string,\n organizationId: PropTypes.string,\n};\n","import React from 'react';\nimport i18n from 'i18next';\nimport MotorcycleIcon from '@material-ui/icons/Motorcycle';\nimport PeopleIcon from '@material-ui/icons/People';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder';\nimport TodayIcon from '@material-ui/icons/Today';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\nimport GroupIcon from '@material-ui/icons/Group';\n// import PersonIcon from '@material-ui/icons/Person';\nimport LockIcon from '@material-ui/icons/Lock';\n\nimport FacilityClientTable from 'components/FacilityClientTable';\nimport ElderTable from 'components/ElderTable';\nimport ElderDetails from 'components/ElderDetails';\nimport RestaurantDetails from 'components/RestaurantDetails';\nimport Order from 'views/Admin/Order/Order';\nimport TodayOrders from 'views/Admin/TodayOrders/TodayOrders';\nimport Dashboard from 'views/OrgAdmin/Dashboard/Dashboard';\n\n// custom\nimport DeliveryStaffTable from './components/DeliveryStaffTable';\nimport DeliveryStaffDetails from './components/DeliveryStaffDetails';\nimport DeliveryDiary from 'views/OrgAdmin/DeliveryDiary/DeliveryDiary';\nimport cache from 'utilities/cache';\nimport Users from 'views/Admin/Users/Users';\n\nexport default [\n {\n title: i18n.t('總覽'),\n icon: DashboardIcon,\n paths: [{ path: '/dashboard', exact: true }],\n component: Dashboard,\n },\n {\n title: i18n.t('今日訂單'),\n icon: TodayIcon,\n paths: [{ path: '/todayOrders', exact: true }],\n component: TodayOrders,\n },\n {\n title: '機構',\n icon: GroupIcon,\n paths: [{ path: '/facilities', exact: true }],\n component: () => ,\n },\n // 先不開放客戶\n // {\n // title: '客戶',\n // icon: PersonIcon,\n // paths: [{ path: '/clients', exact: true }],\n // component: () => ,\n // },\n {\n title: i18n.t('送餐大使'),\n icon: MotorcycleIcon,\n paths: [{ path: '/deliveryStaffs', exact: true }],\n component: DeliveryStaffTable,\n },\n {\n title: `${i18n.t('送餐大使')}頁面`,\n paths: [{ path: '/deliveryStaff/:id', exact: true }],\n component: DeliveryStaffDetails,\n hideFromMenu: true,\n },\n {\n title: i18n.t('送餐對象'),\n icon: PeopleIcon,\n paths: [{ path: '/elders', exact: true }],\n component: ElderTable,\n },\n {\n title: `${i18n.t('送餐對象')}頁面`,\n paths: [{ path: '/elder/:id', exact: true }],\n component: ElderDetails,\n hideFromMenu: true,\n },\n {\n title: `${i18n.t('餐廳')}頁面`,\n paths: [{ path: '/restaurant/:id', exact: true }],\n component: RestaurantDetails,\n hideFromMenu: true,\n },\n {\n title: '訂單頁面',\n icon: ListAltIcon,\n paths: [{ path: '/order/:id', exact: true }],\n component: Order,\n hideFromMenu: true,\n },\n {\n title: i18n.t('送餐關懷'),\n icon: FavoriteBorderIcon,\n paths: [{ path: '/deliveryDiary', exact: true }],\n component(...args) {\n return ;\n },\n },\n {\n title: '用戶',\n icon: LockIcon,\n paths: [{ path: '/users', exact: true }],\n component(...args) {\n return ;\n },\n },\n];\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport DataTable from 'components/Table/DataTable';\nimport {\n getDeliveryStaffsByClientIdByIsActive,\n} from 'graphql/queries';\nimport { formatAddress } from 'utilities/format';\nimport UserAvatar from 'components/UserAvatar';\nimport cache from 'utilities/cache';\nimport { useCache } from 'CacheProvider';\nimport { getClientIdSchema } from 'forms/schemas';\n\nexport default function DeliveryStaffTable({\n title = i18n.t('送餐大使'),\n description = '',\n organizationId: inOrganizationId,\n clientId: inClientId,\n ...props\n}) {\n const { t } = useTranslation();\n const [listQueries, setListQueries] = useState();\n const { selectedUserGroupParams } = useCache();\n const [clientOptions, setClientOptions] = useState();\n\n const organizationId = inOrganizationId || cache.get('app:organizationId');\n const clientId = inClientId || cache.get('app:facilityId');\n\n useEffect(() => {\n (async () => {\n const [\n clientOptions,\n ] = await Promise.all([\n getClientIdSchema(null, '所屬機構', true),\n ]);\n setClientOptions(clientOptions);\n })();\n }, []);\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'clientId',\n label: '機構',\n options: {\n filter: true,\n sort: true,\n customBodyRender(clientId) {\n if (clientOptions) {\n return (clientOptions.find(({ id }) => id === clientId) || {}).name || '';\n }\n return '';\n },\n },\n },\n {\n name: 'name',\n label: '名字',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender(name, tableMeta) {\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n return name[0] + `姓${t('送餐大使')}`;\n }\n }\n return name;\n },\n },\n },\n {\n name: 'username',\n label: '頭像',\n options: {\n filter: false,\n sort: false,\n customBodyRender(username) {\n return (\n \n );\n },\n },\n },\n {\n name: 'phoneNumber',\n label: '電話',\n options: {\n filter: false,\n sort: true,\n customBodyRender(phone, tableMeta) {\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n const prefix = phone.slice(0, 3);\n const maskedPart = phone.slice(3).replace(/./g, '*');\n return prefix + maskedPart;\n }\n }\n return phone;\n },\n },\n },\n {\n name: 'email',\n label: 'Email',\n options: {\n filter: false,\n sort: true,\n customBodyRender: (email, tableMeta) => {\n let value = email;\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n const prefix = email.slice(0, 3);\n const maskedPart = email.slice(3).replace(/./g, '*');\n value = prefix + maskedPart;\n }\n }\n return (\n
\n {value}\n
\n );\n },\n },\n },\n {\n name: 'address',\n label: '地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: (address, tableMeta) => {\n let value = formatAddress(address);\n const clientId = tableMeta.rowData[1];\n const { organizationData } = selectedUserGroupParams;\n if (organizationData?.clients?.items) {\n const clientParams = organizationData?.clients?.items.find((data) => data.clientId === clientId);\n if (clientParams && clientParams.visitorMode) {\n const prefix = value.slice(0, 7);\n const maskedPart = value.slice(7).replace(/./g, '*');\n value = prefix + maskedPart;\n }\n }\n return value;\n },\n },\n },\n ];\n\n useEffect(() => {\n if (organizationId) {\n const { organizationClientIds } = selectedUserGroupParams;\n\n setListQueries(organizationClientIds.map((clientId) => {\n return {\n name: getDeliveryStaffsByClientIdByIsActive,\n params: {\n clientId,\n isActive: { eq: 1 },\n },\n };\n }));\n } else\n if (clientId) {\n setListQueries([{\n name: getDeliveryStaffsByClientIdByIsActive,\n params: {\n clientId,\n isActive: { eq: 1 },\n },\n }]);\n }\n }, [organizationId, clientId]);\n\n return (\n \n \n \n );\n}\n\nDeliveryStaffTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n organizationId: PropTypes.string,\n clientId: PropTypes.string,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DataTable from 'components/Table/DataTable';\nimport TagChip from 'components/TagChip';\nimport { sortBy } from 'utilities/sorting';\nimport IconButton from '@material-ui/core/IconButton';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nconst formatTags = (tags) => {\n if (!tags || tags.length === 0) {\n return '';\n }\n\n return (\n \n {tags\n .map((tag) => ({ label: tag, category: '送餐對象', subcategory: '飲食' }))\n .sort(sortBy('name'))\n .map((tag, index)=>(\n \n ))}\n );\n};\n\nfunction EldersTags({\n elders,\n removeTags,\n showElders = false,\n showEldersWithTag = false,\n}) {\n if (!elders || elders.length === 0) {\n return <>;\n }\n\n return (\n \n {elders.map((elder) => {\n let elderName = elder.name;\n if (Number.isInteger(elder.deliveryOrder)) {\n elderName += ` (${elder.deliveryOrder + 1})`;\n }\n const filteredTags = elder.tags.items\n .map(({ tag }) => tag)\n .filter(({ subcategory }) => subcategory === '飲食')\n .filter(({ label }) => !removeTags.includes(label))\n .sort(sortBy('label'));\n if (showElders) {\n return
\n {elderName}\n
;\n }\n if (showEldersWithTag && filteredTags.length === 0) {\n return <>;\n }\n return
\n {elderName}\n {filteredTags\n .map((tag, index)=>(\n \n ))}\n
;\n })}\n
);\n}\n\nEldersTags.propTypes = {\n elders: PropTypes.array,\n removeTags: PropTypes.array,\n showElders: PropTypes.bool,\n showEldersWithTag: PropTypes.bool,\n};\n\nconst defaultColumns = [\n {\n name: 'index',\n label: '順序',\n options: {\n display: true,\n filter: false,\n sort: true,\n customBodyRender: (value) => value + 1,\n },\n },\n {\n name: 'restaurantName',\n label: '餐廳',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'mealItemName',\n label: '餐點',\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n { // Note: 飲食標籤需要在第三個位置,因為後面的欄位會依賴這個欄位\n name: 'tags',\n label: '飲食標籤',\n options: {\n display: true,\n filter: false,\n sort: false,\n customBodyRender: formatTags,\n },\n },\n];\n\nexport default function MealStatisticsTable({\n description,\n data: inData,\n onRowUp,\n onRowDown,\n onRowEdit,\n onRowDelete,\n onCellClick,\n onRefresh,\n showElders = false,\n showEldersAndTags = false,\n showEldersWithTag = false,\n ...props\n}) {\n const [data, setData] = useState([]);\n const [columns, setColumns] = useState(defaultColumns);\n const [filterList, setFilterList] = useState([]);\n\n const actionButtons = {\n name: 'index',\n label: ' ',\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(index, tableMeta) {\n const tags = tableMeta.rowData[3];\n if (!tags || tags.length === 0) {\n return null;\n }\n return (\n <>\n \n {\n onRowUp && onRowUp(index);\n }}\n >\n {}\n \n \n \n {\n onRowDown && onRowDown(index);\n }}\n >\n {}\n \n \n \n {\n onRowEdit && onRowEdit(index);\n }}\n >\n {}\n \n \n \n {\n onRowDelete && onRowDelete(index);\n }}\n >\n {}\n \n \n \n );\n },\n },\n };\n\n const options = {\n expandableRows: false,\n isRowExpandable: () => false,\n onTableChange: (action, tableState) => {\n if (action === 'filterChange') {\n setFilterList(tableState.filterList);\n }\n },\n };\n\n useEffect(() => {\n const newData = [];\n const newColumns = [...defaultColumns];\n const restaurantFilter = filterList[1] || [];\n const mealFilter = filterList[2] || [];\n const total = inData.reduce((sum, row) => {\n let needToCount = true;\n if (restaurantFilter.length !== 0 && !restaurantFilter.includes(row.restaurantName)) {\n needToCount = false;\n }\n if (mealFilter.length !== 0 && !mealFilter.includes(row.mealItemName)) {\n needToCount = false;\n }\n if (needToCount) {\n return sum + row.total || 0;\n } else {\n return sum;\n }\n }, 0);\n\n if (inData?.length !== 0) {\n newColumns.push({\n name: 'total',\n label: `數量 (${total})`,\n options: {\n display: 'always',\n filter: false,\n sort: true,\n customBodyRender: (value, tableMeta) => (\n
{\n onCellClick && onCellClick({ orderIds: inData[tableMeta.rowData[0]].orderIds || [] });\n }}>\n {value}\n
\n ),\n },\n });\n inData[0].deliveryStaffMealCountList.forEach(({ id, name }) => {\n const getCellInfo = (rowIndex) => {\n const { orderIds } = inData[rowIndex].deliveryStaffMealCountList.find((item) => item.id === id);\n return {\n orderIds,\n };\n };\n const deliveryStaffTotal = inData.reduce((sum, row) => {\n let needToCount = true;\n if (restaurantFilter.length !== 0 && !restaurantFilter.includes(row.restaurantName)) {\n needToCount = false;\n }\n if (mealFilter.length !== 0 && !mealFilter.includes(row.mealItemName)) {\n needToCount = false;\n }\n if (needToCount) {\n return sum + (row.deliveryStaffMealCountList.find((item) => item.id === id) || {}).count || 0;\n } else {\n return sum;\n }\n }, 0);\n newColumns.push({\n name: id,\n label: `${name} (${deliveryStaffTotal})`,\n options: {\n display: 'always',\n filter: false,\n sort: true,\n customBodyRender: (value, tableMeta) => {\n const removeTags = tableMeta.rowData[3] || [];\n return (\n
{\n onCellClick && onCellClick(getCellInfo(tableMeta.rowData[0]));\n }}>\n {value.count}
\n {(showElders || showEldersAndTags || showEldersWithTag) &&\n \n }\n
\n );\n },\n },\n });\n });\n inData.forEach(({ index, restaurantName, mealItemName, tags, deliveryStaffMealCountList, total }) => {\n const row = {\n index,\n restaurantName,\n mealItemName,\n tags,\n total,\n };\n deliveryStaffMealCountList.forEach(({ id, count, elders }) => {\n Object.assign(row, { [id]: { count, elders } });\n });\n newData.push(row);\n });\n }\n setData(newData);\n setColumns(newColumns);\n setColumns([...newColumns, actionButtons]);\n }, [inData, filterList, showElders, showEldersAndTags, showEldersWithTag]);\n\n const customDownloadData = (columns, data) => {\n const tagIndex = columns.findIndex(({ name }) => name === 'tags');\n\n const isUUID = (str) => {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(str);\n };\n columns.forEach(({ name }, index) => {\n if (isUUID(name) || name === 'N/A') { // 'N/A' 是未指定送餐大使\n data.forEach((value) => {\n let removeTags = [];\n if (tagIndex !== -1) {\n removeTags = value.data[tagIndex];\n }\n if ((!showElders && !showEldersAndTags && !showEldersWithTag) || !value.data[index].elders || value.data[index].elders.length === 0) {\n value.data[index] = value.data[index].count;\n } else {\n value.data[index] = value.data[index].count + '\\n' +\n value.data[index].elders.map((elder) => {\n let elderName = elder.name;\n if (Number.isInteger(elder.deliveryOrder)) {\n elderName += ` (${elder.deliveryOrder + 1})`;\n }\n const filteredTags = elder.tags.items\n .map(({ tag }) => tag)\n .filter(({ subcategory }) => subcategory === '飲食')\n .filter(({ label }) => !removeTags.includes(label))\n .sort(sortBy('label'));\n\n if (showElders) {\n return elderName;\n }\n if (showEldersWithTag && filteredTags.length === 0) {\n return;\n }\n if (filteredTags.length === 0) {\n return elderName;\n }\n return `${elderName} - ${filteredTags\n .map((tag) => tag.label)\n .join('、')}`;\n }).filter((value) => value !== undefined).join('\\n');\n }\n });\n }\n });\n if (tagIndex !== -1) {\n data.forEach((value) => {\n if (value?.data[tagIndex]) {\n value.data[tagIndex] = value.data[tagIndex].join('、');\n }\n return value;\n });\n }\n return data;\n };\n\n return (\n \n );\n}\n\nMealStatisticsTable.propTypes = {\n description: PropTypes.string,\n data: PropTypes.array,\n onRowUp: PropTypes.func,\n onRowDown: PropTypes.func,\n onRowEdit: PropTypes.func,\n onRowDelete: PropTypes.func,\n onCellClick: PropTypes.func,\n onRefresh: PropTypes.func,\n showElders: PropTypes.bool,\n showEldersAndTags: PropTypes.bool,\n showEldersWithTag: PropTypes.bool,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport AutoSelect from 'forms/AdminBulkOrderForm/AutoSelect';\nimport Chip from '@material-ui/core/Chip';\nimport { getRestaurantMealsByRestaurantByIsActive } from 'forms/AdminBulkOrderForm/queries';\nimport { getRestaurantIdSchema } from 'forms/schemas';\nimport { asyncListAll } from 'utilities/graph';\nimport cache from 'utilities/cache';\n\nexport default function RestaurantMealTagSelect({ onUpdate, tagOptions, mode='add', data: inData }) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [restaurantOptions, setRestaurantOptions] = useState([]);\n const [restaurantMealOptions, setRestaurantMealOptions] = useState({});\n const [item, setItem] = useState({ mealItemName: '', tags: [] });\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n const clientId = cache.get('app:facilityId');\n const restaurantIds = await getRestaurantIdSchema(null, null, clientId, false, false);\n setRestaurantOptions(restaurantIds.enum.map((id, index) => ({\n id,\n name: restaurantIds.enumNames[index],\n })));\n setIsLoading(false);\n })();\n }, []);\n\n useEffect(() => {\n setItem({\n ...item,\n tags: [],\n });\n }, [tagOptions]);\n\n useEffect(() => {\n if (inData?.restaurantId) {\n (async () => {\n const mealOptions = await asyncListAll(\n getRestaurantMealsByRestaurantByIsActive, { restaurantId: inData?.restaurantId });\n restaurantMealOptions[inData?.restaurantId] = mealOptions.sort((a, b) => a.name > b.name ? 1 : -1);\n setItem(inData);\n setRestaurantMealOptions({ ...restaurantMealOptions });\n })();\n }\n }, [inData]);\n\n return (\n \n \n {\n if (!value) return;\n const newRestaurantId = value.id;\n if (newRestaurantId && (!restaurantMealOptions[newRestaurantId])) {\n const mealOptions = await asyncListAll(\n getRestaurantMealsByRestaurantByIsActive, { restaurantId: newRestaurantId });\n restaurantMealOptions[newRestaurantId] = mealOptions.sort((a, b) => a.name > b.name ? 1 : -1);\n setRestaurantMealOptions({ ...restaurantMealOptions });\n }\n setItem({\n ...item,\n restaurantId: value.id,\n restaurantName: value.name,\n mealItemName: '',\n });\n }}\n getOptionLabel={(option) => option.name}\n renderInput={(params) => (\n \n {isLoading && }\n {params.InputProps.endAdornment}\n \n ),\n }}\n InputLabelProps={{\n shrink: true,\n }}\n label={t('餐廳')}\n variant=\"standard\"\n />\n )}\n noOptionsText='沒有符合所輸入的選項'\n />\n \n \n name)}\n values={restaurantMealOptions[item.restaurantId] && restaurantMealOptions[item.restaurantId].map(({ id }) => id)}\n required={false}\n freeSolo\n value={item.mealItemName}\n label={`${t('餐點')}名稱`}\n onChange={(value)=>{\n const restaruantMeal = restaurantMealOptions[item.restaurantId].find(({ id }) => id === value);\n if (restaruantMeal) {\n const { name } = restaruantMeal;\n setItem({\n ...item,\n mealItemName: name,\n });\n } else {\n setItem({\n ...item,\n mealItemName: value,\n });\n }\n }}\n />\n \n \n label)}\n values={tagOptions && tagOptions.map(({ id }) => id)}\n defaultValue={[]}\n value={item.tags}\n disableCloseOnSelect\n renderTags={(value, getTagProps) =>\n value.map((option, index) => (\n \n ))\n }\n renderInput={(params) => (\n \n )}\n onChange={(event, values) => {\n setItem({\n ...item,\n tags: values,\n });\n }}\n fullWidth\n noOptionsText='沒有符合所輸入的選項'\n />\n \n \n {\n onUpdate && onUpdate(item);\n }}\n fullWidth\n >\n {mode === 'add' ? '新增統計項目' : '修改統計項目'}\n \n \n );\n}\n\nRestaurantMealTagSelect.propTypes = {\n tagOptions: PropTypes.array,\n onUpdate: PropTypes.func,\n mode: PropTypes.string,\n data: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CreateNewFolderOutlinedIcon from '@material-ui/icons/CreateNewFolderOutlined';\nimport FolderOpenIcon from '@material-ui/icons/FolderOpen';\nimport SaveIcon from '@material-ui/icons/Save';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { updateFacilitySettings, createFacilitySettings, updateClient } from 'graphql/mutations';\nimport { request } from 'utilities/graph';\nimport cache from 'utilities/cache';\nimport { getClient } from 'graphql/queries';\nimport moment from 'moment-timezone';\nimport { toastr } from 'react-redux-toastr';\nimport { sortBy } from 'utilities/sorting';\n\nconst useStyles = makeStyles((theme) => ({\n toolbar: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n buttonGroup: {\n display: 'flex',\n gap: theme.spacing(2),\n },\n button: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n icon: {\n fontSize: 24,\n },\n label: {\n fontSize: '0.8rem',\n marginTop: theme.spacing(0.5),\n },\n settingName: {\n marginLeft: 36,\n width: '300px',\n },\n}));\n\nexport default function MealStatisticsSettingsToolbar({ onUpdate, restaurantMealTagList = [], dirty }) {\n const [mealStatisticsSettingOptions, setMealStatisticsSettingOptions] = useState([]);\n const [settingName, setSettingName] = useState('');\n const [originalSettingName, setOriginalSettingName] = useState('');\n const [client, setClient] = useState();\n const [settingAnchorEl, setSettingAnchorEl] = useState();\n const classes = useStyles();\n\n const getClientFacilitySettings = async (loadInitSetting=false) => {\n const facilityId = cache.get('app:facilityId');\n if (facilityId) {\n const { data: { getClient: data } } = await request(getClient, { id: facilityId });\n if (data?.facilitySettings?.mealStatisticsSettings) {\n setMealStatisticsSettingOptions(data.facilitySettings.mealStatisticsSettings);\n if (loadInitSetting) {\n const initialSetting = cache.get('app:mealStatistics:setting');\n const settingIndex = data.facilitySettings.mealStatisticsSettings.findIndex((({ name }) => name === initialSetting));\n if (settingIndex !== -1) {\n const setting = data.facilitySettings.mealStatisticsSettings[settingIndex];\n setSettingName(setting.name);\n setOriginalSettingName(setting.name);\n onUpdate && onUpdate(setting.mealStatisticsSettingsItems);\n } else {\n cache.remove('app:mealStatistics:setting');\n }\n }\n }\n setClient(data);\n }\n };\n\n useEffect(() => {\n (async () => {\n await getClientFacilitySettings(true);\n })();\n }, []);\n\n const handleNewSetting = () => {\n let newSetting = true;\n if (dirty) {\n if (!window.confirm('有尚未儲存的變更,確定要使用新設定?')) {\n newSetting = false;\n }\n }\n if (newSetting) {\n setSettingName('');\n setOriginalSettingName('');\n cache.remove('app:mealStatistics:setting');\n onUpdate && onUpdate([]);\n }\n };\n\n const handleOpenSetting = (event) => {\n setSettingAnchorEl(event.currentTarget);\n };\n\n const onSettingChange = (setting) => {\n let loadSetting = true;\n if (dirty) {\n if (!window.confirm('有尚未儲存的變更,確定要開啟設定?')) {\n loadSetting = false;\n }\n }\n if (loadSetting) {\n setSettingName(setting.name);\n setOriginalSettingName(setting.name);\n cache.set('app:mealStatistics:setting', setting.name);\n onUpdate && onUpdate(setting.mealStatisticsSettingsItems);\n }\n };\n\n const handleSave = async () => {\n if (!client) return;\n const newMealStatisticsSettings = {\n name: settingName,\n mealStatisticsSettingsItems: restaurantMealTagList,\n };\n\n const { facilitySettings = {} } = client;\n if (facilitySettings.id) {\n if (facilitySettings.mealStatisticsSettings) {\n const settingIndex = facilitySettings.mealStatisticsSettings.findIndex(({ name }) => name === settingName);\n if (settingIndex === -1) {\n facilitySettings.mealStatisticsSettings.push(newMealStatisticsSettings);\n } else {\n if (!window.confirm(`確定覆蓋${settingName}原有設定?`)) {\n return;\n }\n facilitySettings.mealStatisticsSettings[settingIndex] = newMealStatisticsSettings;\n }\n } else {\n facilitySettings.mealStatisticsSettings = [newMealStatisticsSettings];\n }\n await request(updateFacilitySettings, { input: facilitySettings });\n } else { // TODO: test...\n const now = moment().toISOString();\n const userName = cache.get('app:userName');\n const newFacilitySettings = {\n mealStatisticsSettings: [newMealStatisticsSettings],\n createdAt: now,\n createdBy: userName,\n updatedAt: now,\n updatedBy: userName,\n };\n const { data: { createFacilitySettings: { id: facilitySettingsId } } } =\n await request(createFacilitySettings, { input: newFacilitySettings });\n await request(updateClient, { input: {\n id: client.id,\n type: client.type,\n isActive: client.isActive,\n county: client.county,\n name: client.name,\n address: client.address,\n email: client.email,\n usersLimit: client.usersLimit,\n eldersLimit: client.eldersLimit,\n createdAt: client.createdAt,\n createdBy: client.createdBy,\n updatedAt: now,\n updatedBy: userName,\n facilitySettingsId: facilitySettingsId,\n } });\n }\n await getClientFacilitySettings();\n onUpdate && onUpdate(restaurantMealTagList); // clear dirty status\n toastr.info(`設定${settingName}已儲存`);\n setOriginalSettingName(settingName);\n cache.set('app:mealStatistics:setting', settingName);\n };\n\n const handleDelete = async () => {\n const { facilitySettings = {} } = client;\n if (facilitySettings.id) {\n if (facilitySettings.mealStatisticsSettings) {\n const settingIndex = facilitySettings.mealStatisticsSettings.findIndex(({ name }) => name === settingName);\n if (settingIndex !== -1) {\n if (window.confirm(`確定刪除設定${settingName}?`)) {\n facilitySettings.mealStatisticsSettings.splice(settingIndex, 1);\n await request(updateFacilitySettings, { input: facilitySettings });\n await getClientFacilitySettings();\n toastr.info(`設定${settingName}已刪除`);\n setSettingName('');\n setOriginalSettingName('');\n cache.remove('app:mealStatistics:setting');\n onUpdate && onUpdate([]); // clear dirty status\n }\n }\n }\n }\n };\n\n return (\n \n
\n
\n \n \n \n 新設定\n
\n
\n \n \n \n 開啟設定\n
\n setSettingAnchorEl(null)}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n >\n {mealStatisticsSettingOptions.sort(sortBy('name')).map((item) => {\n return (\n {\n onSettingChange(item);\n setSettingAnchorEl(null);\n }}\n disabled={item.name === originalSettingName}\n >\n {item.name}\n \n );\n })}\n \n
\n \n \n \n 儲存設定\n
\n
\n name === settingName)}>\n \n \n 刪除設定\n
\n
\n setSettingName(e.target.value)}\n placeholder='請輸入統計設定的名稱'\n />\n
\n );\n}\n\nMealStatisticsSettingsToolbar.propTypes = {\n onUpdate: PropTypes.func,\n restaurantMealTagList: PropTypes.array,\n dirty: PropTypes.bool,\n};\n","import moment from 'moment-timezone';\nimport {\n getOrdersByClientByDate,\n} from './queries';\nimport { asyncListAllAndUpdateLastItem } from 'utilities/graph';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\n\nexport function getStartEndByPeriodName(inPeriod) {\n const [period, startBaseline, endBaseline, exactStartDate, exactEndDate] = inPeriod.split('/');\n if (exactStartDate && exactEndDate) {\n const start = moment(exactStartDate).tz(TIME_ZONE).startOf('day');\n const end = moment(exactEndDate).tz(TIME_ZONE).startOf('day');\n return {\n start: start.toISOString(),\n end: end.toISOString(),\n startFormat: start.format('YYYY-MM-DD'),\n endFormat: end.format('YYYY-MM-DD'),\n };\n }\n const startBaseNumber = parseInt(startBaseline || '0');\n const endBaseNumber = parseInt(endBaseline || '0');\n const start = moment().add(startBaseNumber, `${period}s`).tz(TIME_ZONE).startOf(period);\n const end = moment().add(endBaseNumber, `${period}s`).tz(TIME_ZONE).endOf(period);\n return {\n start: start.toISOString(),\n end: end.toISOString(),\n prevStart: moment().tz(TIME_ZONE).add(-1 + startBaseNumber, `${period}s`).startOf(period).toISOString(),\n prevEnd: moment().tz(TIME_ZONE).add(-1 + endBaseNumber, `${period}s`).endOf(period).toISOString(),\n startFormat: start.format('YYYY-MM-DD'),\n endFormat: end.format('YYYY-MM-DD'),\n };\n}\n\nexport const getOrders = async (clientId, start, end, onUpdateLastItem) => {\n return asyncListAllAndUpdateLastItem(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [start, end],\n },\n limit: 1000,\n }, onUpdateLastItem);\n};\n","export const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n deliveryGroupId\n deliveryGroupSortOrder\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n createdAt\n elder {\n id\n name\n tags {\n items {\n id\n tag {\n id\n category\n subcategory\n color\n label\n }\n }\n nextToken\n }\n }\n restaurant {\n id\n name\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getElderDeliveryGroupsByClientByStatus = /* GraphQL */ `\n query GetElderDeliveryGroupsByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderDeliveryGroupFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getElderDeliveryGroupsByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n elderId\n deliveryGroupId\n clientId\n status\n sortOrder\n deliveryGroup {\n name\n }\n }\n nextToken\n }\n }\n`;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport RestaurantMealTagSelect from './RestaurantMealTagSelect';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(3),\n paddingTop: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}));\n\nconst CustomDialogTitle = ({ children, onClose, ...other }) => {\n const classes = useStyles();\n return (\n \n {children}\n {onClose ? (\n \n \n \n ) : null}\n \n );\n};\n\nCustomDialogTitle.propTypes = {\n children: PropTypes.node,\n onClose: PropTypes.func,\n};\n\nexport default function RestaurantMealTagSelectDialog({\n onClose,\n open,\n tagOptions,\n data: inData,\n onUpdate,\n}) {\n const classes = useStyles();\n\n useEffect(() => {\n }, []);\n\n const handleClose = async (e, reason) => {\n if (reason === 'backdropClick') return;\n onClose && onClose();\n };\n\n return (\n \n \n \n 修改統計項目\n \n \n {\n onUpdate && onUpdate(value);\n handleClose();\n }}\n />\n \n \n \n );\n}\n\nRestaurantMealTagSelectDialog.propTypes = {\n onClose: PropTypes.func,\n open: PropTypes.bool,\n tagOptions: PropTypes.array,\n data: PropTypes.object,\n onUpdate: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport Typography from '@material-ui/core/Typography';\nimport { Colors } from '@silvergatedelivery/constants';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Loading from 'components/Loading';\nimport DateRangeSelector from 'components/DateRangeSelector';\nimport MealStatisticsTable from './components/MealStatisticsTable';\nimport RestaurantMealTagSelect from './components/RestaurantMealTagSelect';\nimport MealStatisticsSettingsToolbar from './components/MealStatisticsSettingsToolbar';\nimport { getDeliveryStaffIdSchema } from 'forms/schemas';\nimport {\n getOrders,\n getStartEndByPeriodName,\n} from './helpers';\nimport { asyncListAll } from 'utilities/graph';\nimport cache from 'utilities/cache';\nimport RestaurantMealTagSelectDialog from './components/RestaurantMealTagSelectDialog';\nimport OrderTable from 'components/OrderTable';\nimport { sortOrdersByDeliveryGroups } from 'utilities/sorting';\nimport { getElderDeliveryGroupsByClientByStatus } from './queries';\n\nconst mealSlotOptions = [{\n label: '午餐',\n value: 'lunch',\n}, {\n label: '晚餐',\n value: 'dinner',\n}];\n\nconst periodOptions = [{\n label: '本日',\n value: 'day',\n}, {\n label: '昨日',\n value: 'day/-1/-1',\n}, {\n label: '明日',\n value: 'day/1/1',\n}];\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n backgroundColor: Colors.background.light,\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n filterContainer: {\n padding: theme.spacing(2),\n marginBottom: 12,\n },\n buttonGroup: {\n 'display': 'flex',\n 'flexDirection': 'column',\n 'alignItems': 'center',\n '& > *': {\n margin: theme.spacing(1),\n },\n 'marginLeft': 36,\n },\n}));\n\nexport default function MealStatistics({ clientId: inClientId }) {\n const classes = useStyles();\n const [data, setData] = useState([]);\n const [period, setPeriod] = useState('day'); // day, week, month, year\n const [isLoading, setIsLoading] = useState(false);\n const [startDate, setStartDate] = useState();\n const [endDate, setEndDate] = useState();\n const [progressDate, setProgressDate] = useState('');\n const [mealSlots, setMealSlots] = useState([]);\n const [deliveryStaffs, setDeliveryStaffs] = useState([]);\n const [orders, setOrders] = useState([]);\n // const [restaurantMealOptions, setRestaurantMealOptions] = useState([]);\n const [tagOptions, setTagOptions] = useState([]);\n const [restaurantMealTagList, setRestaurantMealTagList] = useState([]);\n const [dirty, setDirty] = useState(false);\n const [showEditDialog, setShowEditDialog] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [displayOrderIds, setDisplayOrderIds] = useState([]);\n const [lastUpdatedAt, setLastUpdatedAt] = useState();\n const [showElders, setShowElders] = useState(false);\n const [showEldersAndTags, setShowEldersAndTags] = useState(false);\n const [showEldersWithTag, setShowEldersWithTag] = useState(false);\n const [showDeliveryOrderOption, setShowDeliveryOrderOption] = useState(false);\n\n const clientId = inClientId || cache.get('app:facilityId');\n\n const setCustomPeriod = ({ startDate, endDate }) => {\n setPeriod(`month/0/0/${startDate}/${endDate}`);\n };\n\n const processOrders = (orders, allDeliveryStaffs) => {\n const data = [];\n const orderDeliveryStaffList = [];\n const showDeliveryOrder = showDeliveryOrderOption && mealSlots.length === 1 && startDate === endDate;\n orders.forEach(({ deliveryStaffId }) => {\n if (deliveryStaffId) {\n if (orderDeliveryStaffList.findIndex((orderDeliveryStaff) => orderDeliveryStaff.id === deliveryStaffId) === -1) {\n const deliveryStaff = allDeliveryStaffs.find(({ id }) => id === deliveryStaffId);\n if (deliveryStaff) {\n orderDeliveryStaffList.push(deliveryStaff);\n } else {\n orderDeliveryStaffList.push({\n id: deliveryStaffId,\n name: '已停用或停止合作的大使',\n });\n }\n }\n } else {\n if (orderDeliveryStaffList.findIndex((orderDeliveryStaff) => orderDeliveryStaff.id === 'N/A') === -1) {\n orderDeliveryStaffList.push({\n id: 'N/A',\n name: '未指定送餐大使',\n });\n }\n }\n });\n let rowIndex = 0;\n restaurantMealTagList.forEach(({ restaurantId, restaurantName, mealItemName, tags }) => {\n const deliveryStaffMealCountList = orderDeliveryStaffList.map(({ name, id }) => ({\n id,\n name,\n count: 0,\n orderIds: [],\n elders: [],\n }));\n const row = {\n index: rowIndex,\n restaurantId: restaurantId,\n restaurantName: restaurantName,\n mealItemName: mealItemName,\n tags,\n deliveryStaffMealCountList,\n total: 0,\n orderIds: [],\n };\n rowIndex += 1;\n data.push(row);\n });\n orders.forEach((order) => {\n order.mealItems.forEach((mealItem) => {\n const index = data.findIndex(({ restaurantId, mealItemName, tags }) => {\n let tagMatched = true;\n if (tags && tags.length !== 0) {\n if (order.elder?.tags?.items) {\n const elderTags = order.elder?.tags?.items.filter(({ tag }) => tag.subcategory === '飲食').map(({ tag }) => tag.label);\n if (!tags.every((tag) => elderTags.includes(tag))) {\n tagMatched = false;\n }\n }\n }\n return restaurantId === order.restaurantId && mealItem.name === mealItemName && tagMatched;\n });\n if (index === -1) {\n const deliveryStaffMealCountList = orderDeliveryStaffList.map(({ name, id }) => ({\n id,\n name,\n count: 0,\n orderIds: [],\n elders: [],\n }));\n const row = {\n index: rowIndex,\n restaurantId: order.restaurantId,\n restaurantName: order.restaurant.name,\n mealItemName: mealItem.name,\n deliveryStaffMealCountList,\n total: mealItem.quantity,\n orderIds: [],\n };\n const deliveryStaffIndex = row.deliveryStaffMealCountList.findIndex(({ id }) => {\n return order.deliveryStaffId ? id === order.deliveryStaffId : id === 'N/A';\n });\n row.deliveryStaffMealCountList[deliveryStaffIndex].count += mealItem.quantity;\n if (!row.orderIds.includes(order.id)) {\n row.orderIds.push(order.id);\n }\n if (!row.deliveryStaffMealCountList[deliveryStaffIndex].orderIds.includes(order.id)) {\n row.deliveryStaffMealCountList[deliveryStaffIndex].orderIds.push(order.id);\n if (order.elder) {\n if (!row.deliveryStaffMealCountList[deliveryStaffIndex].elders.some(({ id }) => id === order.elder.id)) {\n row.deliveryStaffMealCountList[deliveryStaffIndex].elders.push({\n ...order.elder, deliveryOrder: showDeliveryOrder && order.deliveryOrder,\n });\n }\n }\n }\n rowIndex += 1;\n data.push(row);\n } else {\n const row = data[index];\n const deliveryStaffIndex = row.deliveryStaffMealCountList.findIndex(({ id }) => {\n return order.deliveryStaffId ? id === order.deliveryStaffId : id === 'N/A';\n });\n row.total += mealItem.quantity;\n row.deliveryStaffMealCountList[deliveryStaffIndex].count += mealItem.quantity;\n if (!row.orderIds.includes(order.id)) {\n row.orderIds.push(order.id);\n }\n if (!row.deliveryStaffMealCountList[deliveryStaffIndex].orderIds.includes(order.id)) {\n row.deliveryStaffMealCountList[deliveryStaffIndex].orderIds.push(order.id);\n if (order.elder) {\n if (!row.deliveryStaffMealCountList[deliveryStaffIndex].elders.some(({ id }) => id === order.elder.id)) {\n row.deliveryStaffMealCountList[deliveryStaffIndex].elders.push({\n ...order.elder, deliveryOrder: showDeliveryOrder && order.deliveryOrder,\n });\n }\n }\n }\n }\n });\n });\n const dataWithTag = data.slice(0, restaurantMealTagList.length);\n const dataWithoutTag = data.slice(restaurantMealTagList.length).sort((a, b) => {\n if (a.restaurantName === b.restaurantName) {\n return a.mealItemName > b.mealItemName ? 1 : -1;\n }\n return a.restaurantName > b.restaurantName ? 1 : -1;\n });\n rowIndex = restaurantMealTagList.length;\n dataWithoutTag.forEach((row) => {\n row.index = rowIndex;\n rowIndex += 1;\n });\n setData([...dataWithTag, ...dataWithoutTag]);\n };\n\n useEffect(() => {\n if (!clientId) return;\n\n (async () => {\n setIsLoading(true);\n\n const {\n startFormat,\n endFormat,\n } = getStartEndByPeriodName(period);\n\n setStartDate(startFormat);\n setEndDate(endFormat);\n\n const onUpdateLastItem = (item, nextToken) => {\n if (nextToken) {\n if (item) {\n setProgressDate(item.date);\n }\n } else {\n setProgressDate('');\n }\n };\n\n const elderDeliveryGroups = await asyncListAll(getElderDeliveryGroupsByClientByStatus, {\n clientId: clientId,\n status: { eq: '使用中' },\n limit: 1000,\n });\n\n let orders = (await getOrders(clientId, startFormat, endFormat, onUpdateLastItem))\n .filter(({ status }) => status !== 'cancelled');\n orders = sortOrdersByDeliveryGroups(orders, elderDeliveryGroups);\n\n let allDeliveryStaffs = deliveryStaffs;\n if (deliveryStaffs.length === 0) {\n // TODO: 有可能會少掉已經停用的大使\n allDeliveryStaffs = await getDeliveryStaffIdSchema(null, null, clientId,\n true, true, true, true, false);\n setDeliveryStaffs(allDeliveryStaffs);\n }\n\n const tagOptions = [];\n orders.forEach(({ elder }) => {\n if (elder?.tags?.items) {\n elder?.tags?.items.forEach(({ tag }) => {\n if (tag.subcategory === '飲食') {\n if (tagOptions.findIndex(({ id }) => id === tag.id) === -1) {\n tagOptions.push({\n id: tag.id,\n label: tag.label,\n });\n }\n }\n });\n }\n });\n setOrders(orders);\n // setRestaurantMealOptions(restaurantMealOptions);\n setTagOptions(tagOptions);\n setIsLoading(false);\n })();\n }, [period, clientId, lastUpdatedAt]);\n\n useEffect(() => {\n if (mealSlots.length === 0 || mealSlots.length === 2) {\n processOrders(orders, deliveryStaffs);\n } else {\n const filteredOrders = orders.filter(({ mealSlot }) => mealSlots[0] === mealSlot);\n processOrders(filteredOrders, deliveryStaffs);\n }\n }, [mealSlots, orders, deliveryStaffs, restaurantMealTagList, showDeliveryOrderOption]);\n\n const onAddRestaurantMealTag = (value) => {\n setRestaurantMealTagList([...restaurantMealTagList, value]);\n setDirty(true);\n };\n\n const onUpdateRestaurantMealTag = (value) => {\n setRestaurantMealTagList(value);\n setDirty(false);\n };\n\n const onRowUp = (index) => {\n if (index > 0 && index < restaurantMealTagList.length) {\n [restaurantMealTagList[index - 1], restaurantMealTagList[index]] = [restaurantMealTagList[index], restaurantMealTagList[index - 1]];\n setRestaurantMealTagList([...restaurantMealTagList]);\n setDirty(true);\n }\n };\n\n const onRowDown = (index) => {\n if (index >= 0 && index < restaurantMealTagList.length - 1) {\n [restaurantMealTagList[index], restaurantMealTagList[index + 1]] = [restaurantMealTagList[index + 1], restaurantMealTagList[index]];\n setRestaurantMealTagList([...restaurantMealTagList]);\n setDirty(true);\n }\n };\n\n const onRowEdit = (value) => {\n setSelectedIndex(value);\n setShowEditDialog(true);\n };\n\n const onRowDelete = (index) => {\n if (window.confirm('確認刪除該項目?')) {\n const newRestaurantMealTagList = restaurantMealTagList.filter((_, i) => i !== index);\n setRestaurantMealTagList(newRestaurantMealTagList);\n setDirty(true);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n
\n \n {mealSlotOptions.map((item, index)=>(\n {\n if (mealSlots.includes(item.value)) {\n const index = mealSlots.indexOf(item.value);\n mealSlots.splice(index, 1);\n setMealSlots([...mealSlots]);\n } else {\n mealSlots.push(item.value);\n setMealSlots([...mealSlots]);\n }\n }}\n >\n {item.label}\n \n ))}\n \n
\n
\n \n {periodOptions.map((item, index)=>(\n setPeriod(item.value)}\n >\n {item.label}\n \n ))}\n \n
\n
\n {\n setShowElders(e.target.checked);\n if (e.target.checked) {\n if (showEldersWithTag) {\n setShowEldersWithTag(false);\n }\n if (showEldersAndTags) {\n setShowEldersAndTags(false);\n }\n }\n }}\n name={'showElders'}\n color=\"primary\"\n />\n }\n label=\"顯示所有送餐對象\"\n />\n
\n
\n {\n setShowEldersAndTags(e.target.checked);\n if (e.target.checked) {\n setShowEldersWithTag(false);\n if (showElders) {\n setShowElders(false);\n }\n if (showEldersWithTag) {\n setShowEldersWithTag(false);\n }\n }\n }}\n name={'showEldersAndTags'}\n color=\"primary\"\n />\n }\n label=\"顯示所有飲食標籤與送餐對象\"\n />\n
\n
\n {\n setShowEldersWithTag(e.target.checked);\n if (e.target.checked) {\n if (showElders) {\n setShowElders(false);\n }\n if (showEldersAndTags) {\n setShowEldersAndTags(false);\n }\n }\n }}\n name={'showEldersWithTag'}\n color=\"primary\"\n />\n }\n label=\"顯示有飲食標籤的送餐對象\"\n />\n
\n {mealSlots.length === 1 && startDate === endDate && (\n
\n setShowDeliveryOrderOption(e.target.checked)}\n name={'showSortDeliveryOrderOption'}\n color=\"primary\"\n />\n }\n label=\"顯示送餐順序\"\n />\n
\n )}\n
\n \n \n \n
\n
\n
\n
\n \n {isLoading &&\n <>\n \n \n {progressDate && `讀取進度:${progressDate},請稍候...`}\n \n }\n {!isLoading &&\n \n setDisplayOrderIds(value?.orderIds || [])}\n onRefresh={() => {\n setLastUpdatedAt(Date.now());\n }}\n showElders={showElders}\n showEldersAndTags={showEldersAndTags}\n showEldersWithTag={showEldersWithTag}\n />\n \n }\n {displayOrderIds.length !== 0 &&\n \n \n \n }\n \n {\n setShowEditDialog(false);\n }}\n onUpdate={(value) => {\n restaurantMealTagList[selectedIndex] = value;\n setRestaurantMealTagList([...restaurantMealTagList]);\n setDirty(true);\n }}\n />\n
\n );\n}\n\nMealStatistics.propTypes = {\n clientId: PropTypes.string,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport shortuuid from 'short-uuid';\nimport {\n TIME_ZONE,\n orderStatus,\n cancellationReasons,\n} from '@silvergatedelivery/constants';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport DataTable from 'components/Table/DataTable';\nimport OrderDialog from 'components/Order/OrderDialog';\nimport {\n getOrdersByClientByDate,\n} from 'graphql/queries';\nimport OrderStatusChip from 'components/OrderStatusChip';\nimport NestedTableContainer from 'components/Table/NestedTableContainer';\nimport Order from 'components/Order/Order';\nimport LinkButton from 'components/Table/LinkButton';\nimport AdminOrderEditButton from 'forms/AdminOrderForm/AdminOrderEditButton';\nimport cache from 'utilities/cache';\nimport UpdateOrderToCompletedButton from 'components/Order/UpdateOrderToCompletedButton';\nimport UpdateOrderToCancelledButton from 'components/Order/UpdateOrderToCancelledButton';\nimport UpdateOrderDeliveryStaffButton from 'components/Order/UpdateOrderDeliveryStaffButton';\nimport UpdateOrderRestaurantButton from 'components/Order/UpdateOrderRestaurantButton';\nimport UpdateOrderTimeButton from 'components/Order/UpdateOrderTimeButton';\nimport UpdateOrderLinkGroupEldersButton from 'components/Order/UpdateOrderLinkGroupEldersButton';\nimport ResetCancelledOrderButton from 'components/Order/ResetCancelledOrderButton';\nimport { getTranslatedOrderStatus, getTranslatedMealSlots } from 'utilities/translate';\nimport { formatAddress, formatAddressLatLng } from 'utilities/format';\nimport deliveryStaffFeeCalculationMethod from '@silvergatedelivery/constants/src/deliveryStaffFeeCalculationMethod';\nimport { getDeliveryStaffIdSchema } from 'forms/schemas';\n\n// const lastWeek = moment().tz(TIME_ZONE).add(-7, 'days').format('YYYY-MM-DD');\nconst todayDate = moment().tz(TIME_ZONE).format('YYYY-MM-DD');\n// const nextWeek = moment().tz(TIME_ZONE).add(7, 'days').format('YYYY-MM-DD');\n\nexport default function OrderTable({\n title = '訂單',\n description,\n queryStatus,\n ...props\n}) {\n const { t } = useTranslation();\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [deliveryStaffOptions, setDeliveryStaffOptions] = useState();\n const ordersSelected = useRef([]);\n\n const clientName = cache.get('app:name');\n const clientId = cache.get('app:facilityId');\n let defaultQueryOrderStatus = queryStatus || cache.get('app:query:orderStatus') || 'cancelled';\n if (defaultQueryOrderStatus === 'undefined') {\n defaultQueryOrderStatus = undefined;\n }\n\n const customToolbarSelect = ({ onUpdate }) =>\n \n \n \n \n \n \n \n \n ;\n\n const options = {\n expandableRows: true,\n isRowExpandable: () => true,\n renderExpandableRow(rowData) {\n const id = rowData[0];\n return (\n \n \n \n );\n },\n selectableRows: 'multiple',\n isRowSelectable: () => true,\n };\n const translatedMealSlots = getTranslatedMealSlots();\n const columns = [\n {\n name: 'id',\n label: '編號',\n isTemplate: true,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: t('取餐編號'),\n options: {\n filter: false,\n sort: true,\n customBodyRender(value) {\n return shortuuid().fromUUID(value).slice(-6);\n },\n },\n },\n {\n name: 'referenceId',\n label: '整合編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender(value) {\n return (value || '').split('-')[1] || '';\n },\n },\n },\n {\n name: 'county',\n label: '縣市',\n options: {\n // filterList: usePreFilter ? [cache.get('app:location')].filter((x) => x) : [],\n filter: true,\n sort: true,\n },\n },\n {\n name: 'tier',\n label: '目前層級',\n options: {\n filter: true,\n sort: true,\n display: false,\n },\n },\n {\n name: 'category',\n label: '類別',\n options: {\n filter: true,\n sort: true,\n display: false,\n },\n },\n {\n name: 'elderId',\n label: `${t('送餐對象')}編號`,\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elder.name',\n label: t('送餐對象'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'elder.address',\n label: '送餐地址',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender(value) {\n return formatAddress(value);\n },\n sortCompare(order) {\n return (obj1, obj2) => {\n const addr1 = formatAddress(obj1.data);\n const addr2 = formatAddress(obj2.data);\n if (addr1 === addr2) {\n return (obj1.rowData[0] + obj1.rowData[1] > obj2.rowData[0] + obj2.rowData[1] ? 1 : -1) * (order === 'asc' ? 1 : -1);\n }\n return (addr1 > addr2 ? 1 : -1) * (order === 'asc' ? 1 : -1);\n };\n },\n },\n },\n {\n name: 'elder.address',\n label: '送餐地址經緯度',\n options: {\n display: false,\n filter: false,\n sort: true,\n customBodyRender: formatAddressLatLng,\n },\n },\n {\n name: 'restaurant.name',\n label: t('餐廳'),\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffId',\n label: t('送餐大使'),\n options: {\n filter: false,\n sort: true,\n customBodyRender(deliveryStaffId) {\n if (deliveryStaffOptions) {\n const index = deliveryStaffOptions.enum.findIndex((id) => id === deliveryStaffId);\n if (index !== -1) {\n return deliveryStaffOptions.enumNames[index];\n }\n }\n return '';\n },\n },\n },\n {\n name: 'date',\n label: '日期',\n edit: {\n type: 'text',\n },\n options: {\n display: true,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'deliveryBy',\n label: '時間',\n type: 'time',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'mealSlot',\n label: '時段',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender(value) {\n return translatedMealSlots.find((item) => item.value === value).label;\n },\n },\n },\n {\n name: 'status',\n label: '狀態',\n edit: {\n type: 'text',\n },\n options: {\n filter: true,\n sort: true,\n customBodyRender: (value) => {\n return (\n \n );\n },\n filterOptions: {\n renderValue: (v) => (orderStatus.find(({ value }) => value === v) || {}).label,\n },\n customFilterListOptions: {\n render: (v) => (orderStatus.find(({ value }) => value === v) || {}).label,\n },\n },\n },\n {\n name: 'cancellationReason',\n label: '訂單取消原因',\n options: {\n display: false,\n filter: true,\n sort: true,\n customBodyRender: (value) => {\n const reason = cancellationReasons.find((reason) => reason.value === value);\n if (reason) {\n return reason.label;\n }\n return '';\n },\n },\n },\n {\n name: 'cancellationNote',\n label: '訂單取消備註',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'direction.distance',\n label: '距離',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'noteForDelivery',\n label: `${t('送餐')}備註`,\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'noteForMeal',\n label: `${t('餐點')}備註`,\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'note',\n label: '備註',\n options: {\n display: false,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'mealItems',\n label: t('餐點'),\n options: {\n filter: false,\n sort: true,\n customBodyRender: (mealItems) => {\n return mealItems.map(({ name, quantity }) => `${name} x${quantity}`).join(', ');\n },\n },\n },\n {\n name: 'totalCost',\n label: '餐點總進價',\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'total',\n label: `${t('餐點')}總金額`,\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffFee',\n label: t('送餐費用'),\n type: 'currency',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'deliveryStaffFeeCalculationMethod',\n label: '送餐費用計算方法',\n options: {\n filter: false,\n sort: true,\n display: false,\n customBodyRender: (method) => {\n return (deliveryStaffFeeCalculationMethod.find(({ value }) => value === method) || {}).label;\n },\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n {\n name: 'id',\n label: ' ',\n options: {\n display: true,\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(id) {\n return (\n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getOrdersByClientByDate',\n label: `按${t('送餐')}時間查詢`,\n partitionKey: 'clientId',\n sortKey: 'date',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n size: 6,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n comparisonOperator: 'ne',\n options: [\n { value: 'cancelled', label: '排除取消的訂單' },\n { value: undefined, label: '全部' }],\n size: 6,\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }],\n operation: getOrdersByClientByDate,\n },\n {\n name: 'getOrdersByClientByDate',\n label: '按狀態查詢',\n partitionKey: 'clientId',\n sortKey: 'date',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n size: 6,\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: [{ value: undefined, label: '全部' }, ...getTranslatedOrderStatus()],\n size: 6,\n }, {\n label: `${t('送餐')}時間`,\n key: 'date',\n type: 'date',\n }],\n operation: getOrdersByClientByDate,\n },\n ]);\n setQueryParams({\n date: {\n from: todayDate,\n to: todayDate,\n },\n clientId,\n status: defaultQueryOrderStatus,\n });\n }, []);\n\n useEffect(() => {\n (async () => {\n const clientId = cache.get('app:facilityId');\n const deliveryStaffOptions = await getDeliveryStaffIdSchema(null, null, clientId, true, true);\n setDeliveryStaffOptions(deliveryStaffOptions);\n })();\n }, []);\n\n const onDataSelectionChange = (dataSelected) => {\n ordersSelected.current = dataSelected;\n };\n\n const onParamChange = (params) => {\n if (params.status !== defaultQueryOrderStatus) {\n cache.set('app:query:orderStatus', params.status);\n }\n };\n\n if (!indexes || !queryParams) return null;\n\n return (\n \n \n );\n}\n\nOrderTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n clientId: PropTypes.string,\n elderId: PropTypes.string,\n deliveryStaffId: PropTypes.string,\n restaurantId: PropTypes.string,\n defaultIndex: PropTypes.number,\n queryStatus: PropTypes.string,\n};\n","const uiSchema = {\n 'status': {\n 'ui:width': '40%',\n },\n 'category': {\n 'ui:width': '60%',\n },\n};\n\nexport default uiSchema;\n","import React, { useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport { v1 as uuidv1 } from 'uuid';\nimport DataForm from 'forms/DataForm';\nimport { request } from 'utilities/graph';\nimport {\n createForm,\n updateForm,\n} from 'graphql/mutations';\nimport uiSchema from './uiSchema';\nimport FileUploader from './FileUploader';\nimport cache from 'utilities/cache';\nimport { toastr } from 'react-redux-toastr';\nimport moment from 'moment-timezone';\n\nexport default function FormForm({ formData: inFormData, onComplete, ...props }) {\n // load here for translation purpose\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n const [currentFileS3Key, setCurrentFileS3Key] = useState();\n const [newFileS3Key, setNewFileS3Key] = useState();\n const clientId = cache.get('app:facilityId');\n\n const createFunc = async (data) => {\n if (!newFileS3Key) {\n toastr.error('請選擇要上傳的檔案');\n throw new Error('abort');\n }\n\n data.id = uuidv1();\n data.clientId = clientId;\n data.fileS3Key = newFileS3Key;\n\n await request(createForm, { input: data });\n\n await onComplete(data);\n };\n\n const updateFunc = async (data) => {\n if (!newFileS3Key) {\n toastr.error('請選擇要上傳的檔案');\n throw new Error('abort');\n }\n\n data.fileS3Key = newFileS3Key;\n\n await request(updateForm, { input: data });\n\n await onComplete(data);\n };\n\n useEffect(() => {\n if (inFormData && inFormData.id) {\n setCurrentFileS3Key(inFormData.fileS3Key);\n setNewFileS3Key(inFormData.fileS3Key);\n }\n }, [inFormData]);\n\n const now = moment().toISOString();\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n\nFormForm.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","import React from 'react';\nimport EditButton from 'forms/components/EditButton';\nimport FormForm from './FormForm';\n\nexport default function FormEditButton({ ...props }) {\n return (\n );\n}\n","export const getEldersByClientByStatus = /* GraphQL */ `\n query GetEldersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n identificationCardId\n serviceCode\n sortOrder\n noteForDelivery\n noteForMeal\n note\n noteOther\n preferDeliveryTimes\n isAllowedToEnterHome\n otherSocialServices\n isDisadvantaged\n relationshipToClient\n govQualifiedCount\n govQualifiedPrice\n outOfPocket\n feeCollectMethod\n disadvantagedTypes\n disadvantagedTypesHistory {\n approvedDate\n disadvantagedTypes\n }\n disabilityLevel\n cmsLevel\n caseNumber\n supervisorId\n linkGroupName\n fixedDeliveryStaffFee\n paymentBankIndex\n defaultDeliveryStaffId\n paymentMethod\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Board from 'react-trello';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport moment from 'moment';\nimport { sortOrder } from 'components/Schedule/helpers';\nimport { Colors } from '@silvergatedelivery/constants';\nimport { formatTime } from 'utilities/format';\nimport OrderDialog from 'components/Order/OrderDialog';\nimport LinkButton from 'components/Table/LinkButton';\nimport { orderStatus } from '@silvergatedelivery/constants';\n\nconst CARD_WIDTH = 250;\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: CARD_WIDTH,\n backgroundColor: Colors.highlight,\n color: Colors.dark,\n padding: 8,\n marginBottom: 12,\n },\n cardTitle: {\n fontWeight: 'bold',\n fontSize: 18,\n color: 'white',\n },\n cardDescription: {\n fontSize: 16,\n lineHeight: '24px',\n },\n cardIssueDescription: {\n fontSize: 14,\n color: Colors.raised,\n },\n}));\n\nfunction Card({ title, metadata: order, deliveryStaffName='' }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const { color } = orderStatus.find(({ value }) => value === order.status);\n return (\n \n \n \n {title}\n \n
\n \n
\n \n
\n \n \n {t('餐廳')}:{order.restaurant.name}
\n 大使:{deliveryStaffName}\n
\n \n );\n}\n\nCard.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n metadata: PropTypes.any,\n deliveryStaffName: PropTypes.string,\n};\n\nexport default function BoardView({\n orders = [],\n dates = [],\n deliveryStaffOptions = [],\n}) {\n const classes = useStyles();\n const [lanes, setLanes] = useState();\n\n useEffect(() => {\n const today = moment().format('YYYY-MM-DD');\n const data = [\n ...dates.map((date) => {\n const matchedOrders = orders\n .filter((order) => order.date === date)\n .sort(sortOrder);\n\n return {\n id: date,\n title: moment(date).format('MM-DD dddd'),\n label: `${matchedOrders.length}`,\n cards: matchedOrders.map((order) => {\n let deliveryStaffName;\n if (order.deliveryStaffId) {\n deliveryStaffName = (deliveryStaffOptions.find(({ value }) => value === order.deliveryStaffId) || {}).label;\n }\n return {\n id: order.id,\n title: `${formatTime(order.deliveryBy)} ${order.elder.name}`,\n description: `${order.restaurant.name}`,\n metadata: order,\n deliveryStaffName,\n };\n }),\n editLaneTitle: false,\n disallowAddingCard: true,\n hideCardDeleteIcon: true,\n droppable: false,\n style: {\n color: '#fff',\n backgroundColor: today === date ? '#4169E1' : '#708090',\n minWidth: CARD_WIDTH + 10,\n width: CARD_WIDTH + 10,\n height: 'calc(100vh - 220px)',\n },\n };\n }),\n ];\n setLanes(data);\n }, [orders]);\n\n if (!lanes) return null;\n\n return (\n \n {orders.length > 0 &&\n \n {\n return ;\n },\n }}\n />\n }\n );\n}\n\nBoardView.propTypes = {\n orders: PropTypes.array,\n dates: PropTypes.array,\n deliveryStaffOptions: PropTypes.array,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport TextField from '@material-ui/core/TextField';\nimport { DebounceInput } from 'react-debounce-input';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport {\n TIME_ZONE,\n} from '@silvergatedelivery/constants';\nimport { sortBy } from 'utilities/sorting';\nimport BoardView from './BoardView';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: '#fff',\n width: '100%',\n },\n app: {\n position: 'relative',\n height: '100%',\n overflow: 'hidden',\n },\n centerContent: {\n width: '100%',\n height: '100%',\n transition: 'width 0.3s ease-in-out',\n overflow: 'auto',\n },\n}));\n\nconst matchText = (a = '', b = '') => {\n return `${a}`.toLowerCase().includes(`${b}`.toLowerCase());\n};\n\nconst today = moment();\nconst weekDates = Array.from({ length: 7 }, (_, i) =>\n today.clone().add(i, 'days').format('YYYY-MM-DD'),\n);\n\nexport default function ScheduleBoard({ orders, onDateChange, deliveryStaffOptions=[] }) {\n const classes = useStyles();\n const searchRef = useRef(null);\n const [filteredOrders, setFilteredOrders] = useState([]);\n const [searchText, setSearchText] = useState('');\n const dates = useRef(weekDates);\n const displayDays = useRef(7);\n\n useEffect(() => {\n onDateChange({\n startStr: moment(dates.current[0]).tz(TIME_ZONE).toISOString(),\n endStr: moment(dates.current[dates.current.length - 1]).tz(TIME_ZONE).toISOString(),\n });\n }, []);\n\n useEffect(() => {\n const filteredOrders = orders\n .filter((({ elder, restaurant, client, deliveryStaff = {} }) => {\n return matchText(elder.name, searchText) ||\n matchText(restaurant.name, searchText) ||\n matchText(client.name, searchText) ||\n matchText((deliveryStaff ? deliveryStaff.name : ''), searchText);\n }))\n .sort(sortBy('deliveryBy'));\n setFilteredOrders(filteredOrders);\n }, [orders, searchText]);\n\n return (\n \n \n \n \n {\n setSearchText(e.target.value);\n }}\n element={TextField}\n id={`search-text`}\n label=\"\"\n value={searchText}\n type={'text'}\n placeholder=\"搜尋\"\n variant=\"outlined\"\n margin=\"dense\"\n fullWidth\n style={{ marginLeft: 8 }}\n // disabled={isLoading}\n inputRef={searchRef}\n />\n \n \n \n \n {\n const base = moment(dates.current[0]).add(-3, 'days');\n const weekDates = Array.from({ length: displayDays.current }, (_, i) =>\n base.clone().add(i, 'days').format('YYYY-MM-DD'),\n );\n onDateChange({\n startStr: moment(weekDates[0]).tz(TIME_ZONE).toISOString(),\n endStr: moment(weekDates[weekDates.length - 1]).tz(TIME_ZONE).toISOString(),\n });\n dates.current = weekDates;\n }}\n >\n 往前3天\n \n {\n const base = moment(dates.current[0]).add(3, 'days');\n const weekDates = Array.from({ length: displayDays.current }, (_, i) =>\n base.clone().add(i, 'days').format('YYYY-MM-DD'),\n );\n onDateChange({\n startStr: moment(weekDates[0]).tz(TIME_ZONE).toISOString(),\n endStr: moment(weekDates[weekDates.length - 1]).tz(TIME_ZONE).toISOString(),\n });\n dates.current = weekDates;\n }}\n >\n 往後3天\n \n {\n displayDays.current = 7;\n const base = moment(dates.current[0]);\n const weekDates = Array.from({ length: displayDays.current }, (_, i) =>\n base.clone().add(i, 'days').format('YYYY-MM-DD'),\n );\n onDateChange({\n startStr: moment(weekDates[0]).tz(TIME_ZONE).toISOString(),\n endStr: moment(weekDates[weekDates.length - 1]).tz(TIME_ZONE).toISOString(),\n });\n dates.current = weekDates;\n }}\n >\n 顯示7天\n \n {\n displayDays.current = 14;\n const base = moment(dates.current[0]);\n const weekDates = Array.from({ length: displayDays.current }, (_, i) =>\n base.clone().add(i, 'days').format('YYYY-MM-DD'),\n );\n onDateChange({\n startStr: moment(weekDates[0]).tz(TIME_ZONE).toISOString(),\n endStr: moment(weekDates[weekDates.length - 1]).tz(TIME_ZONE).toISOString(),\n });\n dates.current = weekDates;\n }}\n >\n 顯示14天\n \n \n \n \n \n { filteredOrders && filteredOrders.length !== 0 &&\n
\n
\n \n
\n
}\n
\n
);\n}\n\nScheduleBoard.propTypes = {\n orders: PropTypes.array.isRequired,\n onDateChange: PropTypes.func.isRequired,\n deliveryStaffOptions: PropTypes.array,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport Chip from '@material-ui/core/Chip';\nimport Button from '@material-ui/core/Button';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport moment from 'moment';\n\nimport { asyncListAll } from 'utilities/graph';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport {\n getOrdersByClientByDate,\n getDeliveryStaffsByClientIdByIsActive,\n getEldersByClient,\n getElderDeliveryGroupsByClientByStatus,\n} from 'graphql/queries';\nimport { sortBy, sortOrdersByDeliveryGroups } from 'utilities/sorting';\nimport ScheduleCalendar from 'components/Schedule/ScheduleCalendar';\nimport ScheduleBoard from 'views/ScheduleBoard';\nimport OrderStatusChip from 'components/OrderStatusChip';\nimport AdminOrderEditButton from 'forms/AdminOrderForm/AdminOrderEditButton';\nimport cache from 'utilities/cache';\nimport { getTranslatedOrderStatus, getTranslatedMealSlots } from 'utilities/translate';\nimport Loading from 'components/Loading';\nimport { cancellationReasons } from '@silvergatedelivery/constants';\nimport { processShareOrder } from 'views/Admin/Reports/CountyPrsReport/workbooks/helpers';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n chip: {\n margin: 2,\n },\n}));\n\nconst DATE_FORMAT = 'YYYY-MM-DD';\n\nconst getDates = (from, to) => {\n const dates = [moment(to).tz(TIME_ZONE).format(DATE_FORMAT)];\n\n while (dates[0] > from) {\n const prev = moment(dates[0]).tz(TIME_ZONE).add(-1, 'day').format(DATE_FORMAT);\n dates.unshift(prev);\n }\n return dates;\n};\n\nconst defaultTargetOrderStatus = [\n 'waitingForDeliveryStaff',\n 'reMatchingDeliveryStaff',\n 'ready',\n 'readyForPickup',\n 'delivering',\n 'delivered',\n 'completed',\n];\nconst getDisplayMode = () => cache.get('app:facility:schedule:displayMode') || 'calendar';\nconst getTargetOrderStatus = () => cache.get('app:facility:schedule:targetOrderStatus') || defaultTargetOrderStatus;\nconst getTargetDeliveryStaffIds = () => cache.get('app:facility:schedule:targetDeliveryStaffIds') || [];\nconst getTargetElderIds = () => cache.get('app:facility:schedule:targetElderIds') || [];\nconst getTargetMealSlots = () => cache.get('app:facility:schedule:targetMealSlots') || ['lunch', 'dinner'];\n\nconst orderScheduleCheckRules = [{\n value: 'duplicated',\n label: '餐點重複',\n}, {\n value: 'beyondPlan',\n label: '非送餐週期內的餐點',\n}, {\n value: 'missing',\n label: '缺少送餐週期內的餐點',\n}];\n\nexport default function Schedule() {\n const classes = useStyles();\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [mode, setMode] = useState(getDisplayMode);\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [targetOrderStatus, setTargetOrderStatus] = useState(getTargetOrderStatus);\n const [targetDeliveryStaffIds, setTargetDeliveryStaffIds] = useState(getTargetDeliveryStaffIds);\n const [targetElderIds, setTargetElderIds] = useState(getTargetElderIds);\n const [targetMealSlots, setTargetMealSlots] = useState(getTargetMealSlots);\n const [filteredOrders, setFilteredOrders] = useState([]);\n const [deliveryStaffOptions, setDeliveryStaffOptions] = useState([]);\n const [elderOptions, setElderOptions] = useState([]);\n const [dateInfo, setDateInfo] = useState();\n const orderMappings = useRef({});\n const [ordersInDates, setOrdersInDates] = useState([]);\n const [elders, setElders] = useState([]);\n const [targetOrderCheckRules, setTargetOrderCheckRules] = useState([]);\n\n const clientId = cache.get('app:facilityId');\n\n const onDateChange = (newDateInfo) => {\n const newFromDate = moment(newDateInfo.startStr).tz(TIME_ZONE).format(DATE_FORMAT);\n const newToDate = moment(newDateInfo.endStr).tz(TIME_ZONE).format(DATE_FORMAT);\n\n const { fromDate, toDate } = dateInfo || {};\n\n if (newFromDate !== fromDate || newToDate !== toDate) {\n setDateInfo({\n fromDate: newFromDate,\n toDate: newToDate,\n dates: getDates(newFromDate, newToDate),\n });\n }\n };\n\n useEffect(() => {\n if (!dateInfo) return;\n if (elders.length === 0) {\n return;\n }\n\n (async () => {\n setIsLoading(true);\n let orders = [];\n const { dates } = dateInfo;\n\n const queryPromsies = [];\n const asyncListAllWrapper = async (queryName, params) => {\n const key = JSON.stringify(params);\n\n if (orderMappings.current[key]) {\n // global.logger.debug(`${key} exists, use cache data`);\n return orderMappings.current[key];\n }\n\n const data = await asyncListAll(queryName, params);\n orderMappings.current[key] = data;\n\n return data;\n };\n\n dates.forEach((date) => {\n const params = {\n clientId,\n date: {\n eq: date,\n },\n };\n queryPromsies.push(asyncListAllWrapper(getOrdersByClientByDate, params));\n });\n\n const [results, elderDeliveryGroups] = await Promise.all([\n Promise.all(queryPromsies),\n asyncListAll(getElderDeliveryGroupsByClientByStatus, {\n clientId: clientId,\n status: { eq: '使用中' },\n limit: 1000,\n }),\n ]);\n\n results.forEach((items) => {\n processShareOrder(elders, items);\n const sortedItems = sortOrdersByDeliveryGroups(items, elderDeliveryGroups);\n orders = [...orders, ...sortedItems];\n });\n\n setOrdersInDates(orders);\n\n setIsLoading(false);\n })();\n }, [lastUpdatedAt, clientId, dateInfo, elders]);\n\n useEffect(() => {\n if (ordersInDates.length === 0) {\n return;\n }\n\n const inTargetOrderStatus = (status, cancellationReason) => {\n return targetOrderStatus.some((statusAndReason) => {\n const [targetStatus, reason] = statusAndReason.split('-');\n if (status === 'cancelled' && targetStatus === 'cancelled') {\n return (!reason && !cancellationReason) || (cancellationReason === reason);\n }\n return targetStatus === status;\n });\n };\n\n (async () => {\n setFilteredOrders(ordersInDates.filter((item) => {\n let shouldRender = true;\n if (targetOrderStatus.length > 0 && !inTargetOrderStatus(item.status, item.cancellationReason)) {\n shouldRender = false;\n }\n if (targetMealSlots.length > 0 && !targetMealSlots.includes(item.mealSlot)) {\n shouldRender = false;\n }\n if (targetDeliveryStaffIds.length > 0 && !targetDeliveryStaffIds.includes(item.deliveryStaffId)) {\n shouldRender = false;\n }\n\n if (targetElderIds.length > 0 && !targetElderIds.includes(item.elderId)) {\n shouldRender = false;\n }\n\n return shouldRender;\n }));\n })();\n }, [ordersInDates, targetOrderStatus, targetMealSlots, targetElderIds, targetDeliveryStaffIds]);\n\n\n useEffect(() => {\n (async () => {\n const [deliveryStaffs, elders] = await Promise.all([\n asyncListAll(getDeliveryStaffsByClientIdByIsActive, {\n clientId,\n isActive: { eq: 1 },\n }),\n asyncListAll(getEldersByClient, { clientId }),\n ]);\n\n setDeliveryStaffOptions([\n { label: '尚無指派', value: null },\n ...deliveryStaffs.map(({ id, name }) => {\n return {\n label: name,\n value: id,\n };\n }).sort(sortBy('label'))]);\n const targetDeliveryStaffIdsInCache = cache.get('app:facility:schedule:targetDeliveryStaffIds') || [];\n const newTargetDeliveryStaffIds = targetDeliveryStaffIdsInCache.filter(\n (deliveryStaffId) => deliveryStaffs.some(({ id }) => id === deliveryStaffId));\n setTargetDeliveryStaffIds(newTargetDeliveryStaffIds);\n cache.set('app:facility:schedule:targetDeliveryStaffIds', newTargetDeliveryStaffIds);\n setElderOptions([\n ...elders.map(({ id, name }) => {\n return {\n label: name,\n value: id,\n };\n }).sort(sortBy('label'))]);\n const targetElderIdsInCache = cache.get('app:facility:schedule:targetElderIds') || [];\n const newTargetElderIds = targetElderIdsInCache.filter(\n (elderId) => elders.some(({ id }) => id === elderId));\n setTargetElderIds(newTargetElderIds);\n setElders(elders);\n cache.set('app:facility:schedule:targetElderIds', newTargetElderIds);\n })();\n }, [clientId]);\n\n const renderStatusChipValue = (selected) => (\n
\n {selected.map((value) => {\n const [status, reason] = value.split('-');\n return ();\n })}\n
\n );\n const translatedMealSlots = getTranslatedMealSlots();\n const renderMealSlotValue = (selected) => (\n
\n {selected.map((value, index) => {\n return (item.value === value).label}\n />);\n })}\n
\n );\n\n const renderOrderCheckValue = (selected) => (\n
\n {selected.map((value, index) => {\n return (item.value === value).label}\n />);\n })}\n
\n );\n\n return (\n
\n \n \n \n \n {\n setFilteredOrders([]);\n setMode('calendar');\n cache.set('app:facility:schedule:displayMode', 'calendar');\n }}\n >\n 日曆模式\n \n {\n setFilteredOrders([]);\n setMode('board');\n cache.set('app:facility:schedule:displayMode', 'board');\n }}\n >\n 看板模式\n \n \n \n \n 狀態\n {\n setTargetOrderStatus(event.target.value);\n cache.set('app:facility:schedule:targetOrderStatus', event.target.value);\n }}\n input={}\n renderValue={renderStatusChipValue}\n disabled={isLoading || targetOrderCheckRules.length > 0}\n >\n {getTranslatedOrderStatus().map((item) => (\n \n -1} />\n {item.label}\n \n ))}\n {cancellationReasons.map(({ label, value }) => {\n const cancellationReasonItem = `cancelled-${value}`;\n return (\n \n -1} />\n 取消 - {label}\n \n );\n })}\n \n \n \n {`${t('午餐')}/${t('晚餐')}`}\n {\n setTargetMealSlots(event.target.value);\n cache.set('app:facility:schedule:targetMealSlots', event.target.value);\n }}\n input={}\n renderValue={renderMealSlotValue}\n disabled={isLoading}\n >\n {translatedMealSlots.map((item) => (\n \n -1} />\n {item.label}\n \n ))}\n \n \n \n value)}\n value={targetDeliveryStaffIds}\n getOptionLabel={(option) => {\n const deliveryStaff = deliveryStaffOptions.find(({ value }) => value === option) || {};\n return deliveryStaff.label;\n }}\n filterSelectedOptions\n onChange={(event, newValue) => {\n setTargetDeliveryStaffIds(newValue);\n cache.set('app:facility:schedule:targetDeliveryStaffIds', newValue);\n }}\n renderInput={(params) => (\n \n )}\n disabled={isLoading || targetOrderCheckRules.length > 0}\n />\n \n \n value)}\n value={targetElderIds}\n getOptionLabel={(option) => {\n const elder = elderOptions.find(({ value }) => value === option) || {};\n return elder.label;\n }}\n filterSelectedOptions\n onChange={(event, newValue) => {\n setTargetElderIds(newValue);\n cache.set('app:facility:schedule:targetElderIds', newValue);\n }}\n renderInput={(params) => (\n \n )}\n disabled={isLoading}\n />\n \n \n {'檢查三十天內的訂單'}\n {\n setTargetOrderCheckRules(event.target.value);\n if (event.target.value.length > 0) {\n const arraysHaveSameElements = (arr1, arr2) => {\n if (arr1.length !== arr2.length) return false;\n const sortedArr1 = arr1.slice().sort();\n const sortedArr2 = arr2.slice().sort();\n for (let i = 0; i < sortedArr1.length; i++) {\n if (sortedArr1[i] !== sortedArr2[i]) return false;\n }\n return true;\n };\n\n if (!arraysHaveSameElements(targetOrderStatus, defaultTargetOrderStatus)) {\n setTargetOrderStatus(defaultTargetOrderStatus);\n cache.set('app:facility:schedule:targetOrderStatus', defaultTargetOrderStatus);\n }\n if (targetDeliveryStaffIds.length > 0) {\n setTargetDeliveryStaffIds([]);\n cache.set('app:facility:schedule:targetDeliveryStaffIds', []);\n }\n }\n }}\n input={}\n renderValue={renderOrderCheckValue}\n disabled={isLoading}\n >\n {orderScheduleCheckRules.map((item) => (\n \n -1} />\n {item.label}\n \n ))}\n \n \n {\n orderMappings.current = {};\n setLastUpdatedAt(Date.now());\n }}\n disabled={isLoading}\n >\n \n 重新整理\n \n {\n orderMappings.current = {};\n setLastUpdatedAt(Date.now());\n }}\n disabled={isLoading}\n />\n {isLoading && }\n \n {mode === 'calendar' ?\n \n targetElderIds.includes(id))}\n onDateChange={onDateChange}\n orderCheckRules={targetOrderCheckRules}\n checkLunch={targetMealSlots.length === 0 || targetMealSlots.includes('lunch')}\n checkDinner={targetMealSlots.length === 0 || targetMealSlots.includes('dinner')}\n />\n :\n \n \n }\n \n
\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport Chip from '@material-ui/core/Chip';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport Countdown from 'react-countdown';\n\nimport { request } from 'utilities/graph';\nimport {\n getIssuesByClientByCreatedAt,\n} from 'graphql/queries';\nimport {\n Colors,\n issueStatus,\n AUTO_UPDATE_INTERVAL_IN_MILLISECONDS,\n} from '@silvergatedelivery/constants';\nimport { sortBy } from 'utilities/sorting';\nimport { formatDatetimeFromNow } from 'utilities/format';\n// TODO: move to common components\nimport Issue from 'views/Admin/IssueCenter/components/Issue';\nimport cache from 'utilities/cache';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: '#fff',\n },\n listContainer: {\n position: 'relative',\n overflow: 'auto',\n overflowX: 'hidden',\n maxHeight: 'calc(100vh - 116px)',\n paddingRight: 8,\n paddingLeft: 8,\n },\n list: {\n width: '100%',\n backgroundColor: theme.palette.background.paper,\n // position: 'relative',\n // overflow: 'auto',\n // maxHeight: 'calc(100vh - 200px)',\n },\n chip: {\n border: '1px solid #cecece',\n borderRadius: 3,\n padding: 1,\n display: 'inline-block',\n marginRight: 6,\n marginBottom: 6,\n },\n issueContainer: {\n position: 'relative',\n overflow: 'auto',\n maxHeight: 'calc(100vh - 116px)',\n },\n selected: {\n borderLeft: `6px solid ${Colors.primary}`,\n paddingLeft: 10,\n },\n selectChips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n selectChip: {\n margin: 2,\n },\n filters: {\n padding: theme.spacing(2),\n },\n formControl: {\n marginBottom: theme.spacing(1),\n },\n}));\n\nexport default function IssueCenter() {\n const classes = useStyles();\n const [issues, setIssues] = useState([]);\n const [selectedIssue, setSelectedIssue] = useState();\n const [query, setQuery] = useState({\n status: ['pending', 'processing'],\n });\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [isLoading, setIsLoading] = useState(false);\n const [hasLoadAdmins, setHasLoadAdmins] = useState(false);\n const [hasMore, setHasMore] = useState(false);\n const [nextToken, setNextToken] = useState();\n const ITEMS_PER_PAGE = 20;\n\n const clientId = cache.get('app:facilityId');\n\n const renderChipValue = (selected) => (\n
\n {selected.map((value) => {\n const matchedStatus = issueStatus.find((item) => item.value === value);\n const label = matchedStatus ? matchedStatus.label : value;\n const backgroundColor = matchedStatus ? matchedStatus.color : undefined;\n const color = backgroundColor ? '#fff' : undefined;\n\n return ();\n })}\n
\n );\n\n const updateQuery = (key, value) => {\n query[key] = value;\n setQuery({ ...query });\n };\n\n useEffect(() => {\n if (hasLoadAdmins) return;\n (async () => {\n setHasLoadAdmins(true);\n })();\n }, [hasLoadAdmins]);\n\n const fetchIssues = async (isRefresh = false) => {\n try {\n if (isLoading) return;\n setIsLoading(true);\n const { status } = query;\n let newData = [];\n let newNextToken;\n let newIssuesFetchedCount = 0;\n\n if (status.length > 0) {\n const currentToken = isRefresh ? null : nextToken;\n do {\n const params = {\n clientId,\n filter: {\n or: status.map((item) => ({ status: { eq: item } })),\n },\n limit: ITEMS_PER_PAGE,\n sortDirection: 'DESC',\n nextToken: newNextToken || currentToken,\n };\n const { data: { getIssuesByClientByCreatedAt: { items, nextToken: nextTokenFromServer } } } = await request(getIssuesByClientByCreatedAt, params);\n newNextToken = nextTokenFromServer;\n if (items) {\n newData = [...newData, ...items];\n newIssuesFetchedCount += items.length;\n }\n } while (newNextToken && newIssuesFetchedCount < ITEMS_PER_PAGE);\n setNextToken(newNextToken);\n setHasMore(!!newNextToken);\n } else {\n setNextToken();\n setHasMore(false);\n }\n\n newData = newData.sort(sortBy('createdAt', true));\n\n if (isRefresh) {\n setIssues(newData);\n setSelectedIssue(newData[0]);\n } else {\n setIssues((prev) => [...prev, ...newData]);\n }\n } catch (e) {\n global.logger.debug(e);\n setNextToken();\n setHasMore(false);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n if (!query) return;\n fetchIssues(true);\n }, [query, lastUpdatedAt, clientId]);\n\n return (\n \n \n \n \n 距離下次自動更新:\n {!isLoading &&\n setLastUpdatedAt(Date.now())}\n />}\n setLastUpdatedAt(Date.now())}>\n \n \n \n \n 狀態\n updateQuery('status', event.target.value)}\n input={}\n renderValue={renderChipValue}\n disabled={isLoading}\n >\n {issueStatus.map((item) => (\n \n -1} />\n \n \n ))}\n \n \n \n \n {\n return fetchIssues(false);\n }}\n style={{ overflow: 'visible' }}\n hasMore={hasMore}\n loader={載入中...}\n endMessage={{isLoading ? '載入中...' : '沒有更多資料了'}}\n scrollableTarget=\"issueList\"\n scrollThreshold={0.8}\n >\n {issues.map((issue, index) => (\n {\n global.logger.debug(issue);\n setSelectedIssue(issue);\n }}\n disabled={isLoading}\n className={selectedIssue && selectedIssue.id === issue.id ? classes.selected : ''}\n >\n \n {issue.summary !== issue.type && (\n \n {issue.summary}\n \n )}\n \n {issue.description}\n \n \n \n \n \n 更新於 {formatDatetimeFromNow(issue.updatedAt)}\n \n \n 通報於 {formatDatetimeFromNow(issue.createdAt)}\n \n \n \n ))}\n \n \n \n \n setLastUpdatedAt(Date.now())}\n />\n \n \n );\n}\n\nfunction IssueChips({ issue }) {\n const classes = useStyles();\n const { label: statusLabel, color: statusColor } = issueStatus.find(({ value }) => value === issue.status);\n return (\n \n {statusLabel}\n {issue.type}\n {issue.assignee && {issue.assignee}}\n );\n}\n\nIssueChips.propTypes = {\n issue: PropTypes.object.isRequired,\n};\n","import React, { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport FacilitySettingsForm from 'forms/FacilitySettingsForm/FacilitySettingsForm';\nimport { request } from 'utilities/graph';\nimport { getClient } from 'graphql/queries';\nimport cache from 'utilities/cache';\nimport Loading from 'components/Loading';\nimport { toastr } from 'react-redux-toastr';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: theme.spacing(2),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n\nexport default function FacilitySettings() {\n const classes = useStyles();\n const [client, setClient] = useState();\n const facilityId = cache.get('app:facilityId');\n\n useEffect(() => {\n (async () => {\n if (facilityId) {\n const { data: { getClient: data } } = await request(getClient, { id: facilityId });\n setClient(data);\n }\n })();\n }, []);\n\n if (!client) {\n return ();\n }\n\n\n return (\n \n \n \n {\n toastr.info('帳號設定已更新');\n }}\n />\n \n \n \n );\n}\n","import React from 'react';\nimport i18n from 'i18next';\nimport MotorcycleIcon from '@material-ui/icons/Motorcycle';\nimport PeopleIcon from '@material-ui/icons/People';\nimport RestaurantIcon from '@material-ui/icons/Restaurant';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport LibraryAddIcon from '@material-ui/icons/LibraryAdd';\nimport EventNoteIcon from '@material-ui/icons/EventNote';\nimport FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport SmsFailedIcon from '@material-ui/icons/SmsFailed';\nimport TodayIcon from '@material-ui/icons/Today';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\n// import AssignmentIndIcon from '@material-ui/icons/AssignmentInd';\nimport EmojiFoodBeverageIcon from '@material-ui/icons/EmojiFoodBeverage';\nimport FormatListNumberedIcon from '@material-ui/icons/FormatListNumbered';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedIn';\nimport RemoveFromQueueIcon from '@material-ui/icons/RemoveFromQueue';\nimport EmojiPeopleIcon from '@material-ui/icons/EmojiPeople';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport BarChartIcon from '@material-ui/icons/BarChart';\nimport ElderTable from 'components/ElderTable';\nimport ElderDetails from 'components/ElderDetails';\nimport RestaurantTable from 'components/RestaurantTable';\nimport RestaurantDetails from 'components/RestaurantDetails';\nimport Order from 'views/Admin/Order/Order';\nimport IssueCenterBadge from 'components/IssueCenterBadge';\nimport OrderBadge from 'components/OrderBadge';\nimport AbandonedOrderBadge from 'components/AbandonedOrderBadge';\nimport TodayOrders from 'views/Admin/TodayOrders/TodayOrders';\n// import RestaurantOwnerTable from 'components/RestaurantOwnerTable';\n// import RestaurantOwnerDetails from 'components/RestaurantOwnerDetails';\nimport RestaurantMeals from 'views/Admin/RestaurantMeals/RestaurantMeals';\nimport Dashboard from 'views/FacilityAdmin/Dashboard/Dashboard';\nimport MealStatistics from 'views/FacilityAdmin/MealStatistics/MealStatistics';\nimport Reports from 'views/Admin/Reports/Reports';\nimport AuditTrailTable from 'components/AuditTrailTable';\nimport SocialWorkerDiaryTable from 'components/SocialWorkerDiaryTable';\n\n// custom\nimport DeliveryStaffTable from './components/DeliveryStaffTable';\nimport DeliveryStaffDetails from './components/DeliveryStaffDetails';\nimport OrderTable from './components/OrderTable';\nimport RecurringOrderTable from 'components/RecurringOrderTable';\nimport FormTable from './components/Forms/FormTable';\nimport Schedule from './components/Schedule';\nimport DeliveryDiary from 'views/Admin/DeliveryDiary/DeliveryDiary';\nimport IssueCenter from './components/IssueCenter';\nimport FacilitySettings from './components/FacilitySettings';\nimport ElderDeliveryGroupBoard from 'components/DeliveryGroup/ElderDeliveryGroupBoard';\nimport cache from 'utilities/cache';\n// import ApiDocs from 'views/Admin/ApiDocs/ApiDocs';\n\nexport default [\n {\n title: i18n.t('總覽'),\n icon: DashboardIcon,\n paths: [{ path: '/dashboard', exact: true }],\n component: Dashboard,\n },\n {\n title: i18n.t('今日訂單'),\n icon: TodayIcon,\n paths: [{ path: '/todayOrders', exact: true }],\n component: TodayOrders,\n },\n {\n title: i18n.t('送餐大使'),\n icon: MotorcycleIcon,\n paths: [{ path: '/deliveryStaffs', exact: true }],\n component: DeliveryStaffTable,\n },\n {\n title: `${i18n.t('送餐大使')}頁面`,\n paths: [{ path: '/deliveryStaff/:id', exact: true }],\n component: DeliveryStaffDetails,\n hideFromMenu: true,\n },\n {\n title: i18n.t('送餐對象'),\n icon: PeopleIcon,\n paths: [{ path: '/elders', exact: true }],\n component: ElderTable,\n },\n {\n title: `${i18n.t('送餐對象')}頁面`,\n paths: [{ path: '/elder/:id', exact: true }],\n component: ElderDetails,\n hideFromMenu: true,\n },\n {\n title: i18n.t('送餐群組'),\n icon: FormatListNumberedIcon,\n paths: [{ path: '/deliveryGroupBoard', exact: true }],\n component: ElderDeliveryGroupBoard,\n },\n {\n title: i18n.t('餐廳'),\n icon: RestaurantIcon,\n paths: [{ path: '/restaurants', exact: true }],\n component: RestaurantTable,\n },\n {\n title: `${i18n.t('餐廳')}頁面`,\n paths: [{ path: '/restaurant/:id', exact: true }],\n component: RestaurantDetails,\n hideFromMenu: true,\n },\n // {\n // title: '餐廳負責人',\n // icon: AssignmentIndIcon,\n // paths: [{ path: '/restaurantOwners', exact: true }],\n // component: RestaurantOwnerTable,\n // },\n // {\n // title: '餐廳負責人頁面',\n // paths: [{ path: '/restaurantOwner/:id', exact: true }],\n // component: RestaurantOwnerDetails,\n // hideFromMenu: true,\n // },\n {\n title: i18n.t('餐點'),\n icon: EmojiFoodBeverageIcon,\n paths: [{ path: '/restaurantMeals', exact: true }],\n component: RestaurantMeals,\n },\n {\n title: '訂單',\n icon: ListAltIcon,\n paths: [{ path: '/orders', exact: true }],\n component: OrderTable,\n },\n {\n title: '餐點統計',\n icon: BarChartIcon,\n paths: [{ path: '/mealStatistics', exact: true }],\n component: MealStatistics,\n demoOnly: false,\n },\n {\n title: '週期性排單',\n icon: LibraryAddIcon,\n paths: [{ path: '/recurringOrders', exact: true }],\n component: RecurringOrderTable,\n },\n {\n title: '訂單頁面',\n icon: ListAltIcon,\n paths: [{ path: '/order/:id', exact: true }],\n component: Order,\n hideFromMenu: true,\n },\n {\n title: i18n.t('行程表'),\n icon: EventNoteIcon,\n paths: [{ path: '/schedule', exact: true }],\n component: Schedule,\n },\n {\n title: i18n.t('送餐關懷'),\n icon: FavoriteBorderIcon,\n paths: [{ path: '/deliveryDiary', exact: true }],\n component(...args) {\n return ;\n },\n },\n {\n title: '社工日誌',\n icon: EmojiPeopleIcon,\n paths: [{ path: '/socialWorkerDiary', exact: true }],\n component: SocialWorkerDiaryTable,\n },\n {\n title: '應變中心',\n icon: ErrorIcon,\n paths: [{ path: '/issueCenter', exact: true }],\n component: IssueCenter,\n badge: IssueCenterBadge,\n },\n {\n title: '新訂單',\n icon: ListAltIcon,\n paths: [{ path: '/newOrders', exact: true }],\n component: () => ,\n badge: OrderBadge,\n },\n {\n title: '棄單',\n icon: SmsFailedIcon,\n paths: [{ path: '/abandonedOrders', exact: true }],\n component: () => ,\n badge: AbandonedOrderBadge,\n },\n {\n title: '報表',\n icon: AssessmentIcon,\n paths: [{ path: '/reports', exact: true }],\n component: Reports,\n },\n {\n title: '表單',\n icon: AssignmentTurnedInIcon,\n paths: [{ path: '/forms', exact: true }],\n component: FormTable,\n },\n {\n title: '使用紀錄',\n icon: RemoveFromQueueIcon,\n paths: [{ path: '/auditTrails', exact: true }],\n component: AuditTrailTable,\n },\n {\n title: '帳號設定',\n icon: SettingsIcon,\n paths: [{ path: '/settings', exact: true }],\n component: FacilitySettings,\n },\n];\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport FormDialog from 'components/FormDialog';\nimport DataTable from 'components/Table/DataTable';\nimport { getFormsByClientByStatus } from 'graphql/queries';\nimport FormEditButton from './FormEditButton';\nimport cache from 'utilities/cache';\nimport { download } from 'utilities/file';\nimport { Storage } from 'aws-amplify';\nimport { toastr } from 'react-redux-toastr';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useTheme } from '@material-ui/core/styles';\nimport { useCache } from 'CacheProvider';\nimport { asyncListAll } from 'utilities/graph';\nimport { PDFDocument } from 'pdf-lib';\nimport fontkit from 'pdf-fontkit'; // https://github.com/Hopding/pdf-lib/issues/494#issuecomment-695818400\nimport PdfViewer from './PdfViewer';\nimport { getEldersByClientByStatus } from './queries';\nimport { getFormFieldsValueMapping } from './utils';\n\nexport default function FormTable({\n title = '表單',\n description,\n ...props\n}) {\n const [indexes, setIndexes] = useState();\n const [queryParams, setQueryParams] = useState();\n const [openPreview, setOpenPreview] = useState(false);\n const [selectedFileName, setSelectedFileName] = useState('');\n const [selectedFileS3Key, setSelectedFileS3Key] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const { isAdmin } = useCache();\n\n const clientName = cache.get('app:name');\n const clientId = cache.get('app:facilityId');\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\n\n const fileDownload = async (fileS3Key, name) => {\n try {\n const url = await Storage.get(fileS3Key);\n const fileResponse = await fetch(url);\n if (!fileResponse.ok) {\n throw new Error('下載檔案失敗');\n }\n const blob = await fileResponse.blob();\n download(`${name}.pdf`, blob);\n } catch (e) {\n console.error(e.message);\n toastr.error(e.message);\n }\n };\n\n const fileDownloadWithElders = async (fileS3Key, name, isDisadvantaged='true') => {\n setIsLoading(true);\n let fontBytes;\n let allElders;\n try {\n const [\n elders,\n response,\n ] = await Promise.all([\n asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n filter: { isDisadvantaged: { eq: isDisadvantaged ? 1 : 0 } },\n limit: 1000,\n }),\n fetch('/fonts/NotoSansTC-Regular.ttf'),\n ]);\n if (!response.ok) {\n throw new Error(`Failed to fetch font: ${response.status} ${response.statusText}`);\n }\n fontBytes = await response.arrayBuffer();\n allElders = elders;\n } catch (e) {\n console.error(e);\n toastr.error('檔案下載失敗,請檢查網路連線後再重新嘗試');\n setIsLoading(false);\n return;\n }\n\n try {\n const fileUrl = await Storage.get(fileS3Key);\n const existingPdfBytes = await fetch(fileUrl).then((res) => res.arrayBuffer());\n const mergedPdfDoc = await PDFDocument.create();\n\n await Promise.all(allElders.sort((a, b) => a.name > b.name ? 1 : -1).map(async (elder) => {\n const pdfDoc = await PDFDocument.load(existingPdfBytes);\n const form = pdfDoc.getForm();\n pdfDoc.registerFontkit(fontkit);\n const font = await pdfDoc.embedFont(fontBytes, { subset: true });\n // https://github.com/Hopding/pdf-lib/issues/1152 workaround: WinAnsi cannot encode....\n const rawUpdateFieldAppearances = form.updateFieldAppearances.bind(form);\n form.updateFieldAppearances = function() {\n return rawUpdateFieldAppearances(font);\n };\n\n const formFieldsValueMapping = getFormFieldsValueMapping(elder);\n formFieldsValueMapping.forEach(({ fieldName, value }) => {\n try {\n const field = form.getTextField(fieldName);\n if (field) {\n field.setText(value || '');\n }\n } catch (e) {\n // An error will be thrown if no field exists with the provided name, or if the field exists but is not a text field.\n // console.log(e);\n }\n });\n\n const pdfBytes = await pdfDoc.save();\n const filledPdfDoc = await PDFDocument.load(pdfBytes);\n const copiedPages = await mergedPdfDoc.copyPages(filledPdfDoc, filledPdfDoc.getPageIndices());\n copiedPages.forEach((page) => mergedPdfDoc.addPage(page));\n }));\n\n const pdfBytes2 = await mergedPdfDoc.save();\n\n const blob = new Blob([pdfBytes2], { type: 'application/pdf' });\n download(`${name}.pdf`, blob);\n } catch (e) {\n console.error(e.message);\n toastr.error(e.message);\n setIsLoading(false);\n return;\n }\n\n setIsLoading(false);\n };\n\n const openFilePreview = (fileS3Key, name) => {\n setSelectedFileName(name);\n setSelectedFileS3Key(fileS3Key);\n setOpenPreview(true);\n };\n\n const columns = [\n {\n name: 'id',\n label: '編號',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'name',\n label: '表單名稱',\n options: {\n display: true,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'fileS3Key',\n label: 'fileS3Key',\n options: {\n display: 'excluded',\n filter: false,\n sort: false,\n },\n },\n {\n name: 'category',\n label: '類別',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'subcategory',\n label: '子類別',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n },\n {\n name: 'status',\n label: '狀態',\n options: {\n display: false,\n filter: true,\n sort: true,\n },\n hideInOrgMode: true,\n },\n {\n name: 'note',\n label: '備註',\n options: {\n display: true,\n filter: false,\n sort: false,\n },\n },\n {\n name: 'createdBy',\n label: '創立者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedBy',\n label: '更新者',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'createdAt',\n label: '創立於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'updatedAt',\n label: '更新於',\n type: 'datetime',\n options: {\n display: false,\n filter: false,\n sort: true,\n },\n },\n {\n name: 'fileS3Key',\n label: ' ',\n options: {\n display: 'always',\n filter: false,\n sort: false,\n download: false,\n print: false,\n customBodyRender(fileS3Key, tableMeta) {\n const name = tableMeta.rowData[1];\n return (\n \n \n \n {\n await fileDownload(fileS3Key, name);\n }}\n disabled={isLoading}\n >\n {}\n \n 空白表單\n \n \n \n \n {\n await fileDownloadWithElders(fileS3Key, name);\n }}\n disabled={isLoading}\n >\n {}\n \n 弱勢長輩\n \n \n \n \n {\n await fileDownloadWithElders(fileS3Key, name, false);\n }}\n disabled={isLoading}\n >\n {}\n \n 自費戶\n \n \n \n \n {\n openFilePreview(fileS3Key, name);\n }}\n disabled={isLoading}\n >\n \n \n 檢視\n \n \n \n );\n },\n },\n },\n ];\n\n useEffect(() => {\n setIndexes([\n {\n name: 'getFormsByClientByStatus',\n label: '按狀態查詢',\n partitionKey: 'clientId',\n sortKey: 'status',\n fields: [{\n label: '機構',\n key: 'clientId',\n type: 'select',\n options: [{ value: clientId, label: clientName }],\n }, {\n label: '狀態',\n key: 'status',\n type: 'select',\n options: ['使用中', '已停用'].map((item) => {\n return { value: item, label: item };\n }),\n }],\n operation: getFormsByClientByStatus,\n },\n ]);\n setQueryParams({\n clientId,\n status: '使用中',\n });\n }, []);\n\n\n if (!indexes || !queryParams) return null;\n\n return (\n \n \n {openPreview &&\n {\n setSelectedFileName('');\n setSelectedFileS3Key('');\n setOpenPreview(false);\n }}\n fullScreen={fullScreen}\n >\n \n }\n );\n}\n\nFormTable.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n};\n","const orderItems = /* GraphQL */ `\n items {\n id\n clientId\n restaurantId\n elderId\n date\n mealSlot\n deliveryBy\n status\n county\n countyOpenStatus\n isTemporarilyLocked\n category\n transactionId\n deliveryGroupId\n deliveryGroupSortOrder\n isAudited\n nextStatusCheckAt\n issuePriority\n issueSummary\n deliveryStaffId\n deliveryStaffOrderId\n deliveryStaffFee\n tier\n tierExpiredAt\n noteForDelivery\n noteForMeal\n note\n mealItems {\n name\n quantity\n price\n cost\n note\n }\n totalCost\n total\n quantity\n subtotal\n discount\n discountCode\n discountDetails\n extraFee\n platformFee\n paymentMethod\n direction {\n startAddress\n startLocation {\n lat\n lng\n }\n endAddress\n endLocation {\n lat\n lng\n }\n distance\n duration\n distanceInMeters\n durationInSeconds\n overviewPolyline\n bounds {\n northeast {\n lat\n lng\n }\n southwest {\n lat\n lng\n }\n }\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n restaurant {\n name\n }\n }\n`;\n\nexport const getOrdersByClientByDate = /* GraphQL */ `\n query GetOrdersByClientByDate(\n $clientId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByClientByDate(\n clientId: $clientId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${orderItems}\n nextToken\n }\n }\n`;\n\nexport const getOrdersByIndividualByDate = /* GraphQL */ `\n query GetOrdersByIndividualByDate(\n $individualId: ID\n $date: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrdersByIndividualByDate(\n individualId: $individualId\n date: $date\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n ${orderItems}\n nextToken\n }\n }\n`;\n\nexport const getDeliveryStaffOrdersByOrder = /* GraphQL */ `\n query GetDeliveryStaffOrdersByOrder(\n $orderId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelDeliveryStaffOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getDeliveryStaffOrdersByOrder(\n orderId: $orderId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n deliveryStaffId\n orderId\n clientId\n elderId\n status\n county\n category\n deliveryBy\n mealSlot\n distanceInKilometer\n timeInMilliseconds\n deliveryAcceptedAt\n deliveryStartedAt\n deliveryDeliveredAt\n deliveryCompletedAt\n deliveryAbandonedAt\n deliveryAbandonedReason\n deliveryPositionUpdatedAt\n deliveryStaffFee\n diary\n checkListIsComplete\n checkListReminder\n checkListTransfer\n checkListChat\n photoS3Keys\n notes\n isPublished\n publishedUrl\n blogId\n deliveryStaff {\n id\n username\n name\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n\nexport const getOrderEventsByOrderByCreatedAt = /* GraphQL */ `\n query GetOrderEventsByOrderByCreatedAt(\n $orderId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOrderEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getOrderEventsByOrderByCreatedAt(\n orderId: $orderId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n orderId\n content\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Card from '@material-ui/core/Card';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport moment from 'moment';\nimport shortuuid from 'short-uuid';\n\nimport { formatTime, formatDatetime, formatNote } from 'utilities/format';\nimport UserAvatar from 'components/UserAvatar';\n\nimport {\n getDeliveryStaffOrdersByOrder,\n getOrderEventsByOrderByCreatedAt,\n} from './queries';\nimport { sortBy } from 'utilities/sorting';\nimport { asyncListAll } from 'utilities/graph';\nimport OrderEventCard from 'components/Order/OrderEventCard';\nimport DeliveryStaffOrderPhoto from 'components/DeliveryStaffOrderPhoto';\n\nconst useStyles = makeStyles((theme) => ({\n bold: {\n fontWeight: 'bold',\n },\n}));\n\nexport default function OrderCard({ order = {} }) {\n const classes = useStyles();\n const { t } = useTranslation();\n const [deliveryStaffOrder, setDeliveryStaffOrder] = useState();\n const [orderEvents, setOrderEvents] = useState([]);\n const [lastUpdatedAt, setLastUpdatedAt] = useState(Date.now());\n const [mealsTotal, setMealsTotal] = useState(0);\n\n const { deliveryBy, deliveryStaffFee, extraFee = 0, platformFee = 0 } = order;\n\n useEffect(() => {\n (async () => {\n const [\n deliveryStaffOrders,\n orderEvents,\n ] = await Promise.all([\n asyncListAll(getDeliveryStaffOrdersByOrder, { orderId: order.id }),\n asyncListAll(getOrderEventsByOrderByCreatedAt, { orderId: order.id }),\n ]);\n global.logger.debug({ deliveryStaffOrders, orderEvents });\n setDeliveryStaffOrder(deliveryStaffOrders.sort(sortBy('createdAt', true))[0]);\n setOrderEvents(orderEvents);\n // order 裡面沒有子女應付送餐費用, 先用全部費用減去餐費計算\n setMealsTotal(order.mealItems.reduce((pre, { price }) => {\n return pre + price;\n }, 0));\n })();\n }, [order, lastUpdatedAt]);\n\n return (\n \n \n setLastUpdatedAt(Date.now())}>\n \n {formatDatetime(deliveryBy, { hour: false, minute: false })}\n \n \n {formatTime(deliveryBy)} - {formatTime(moment(deliveryBy).add('59', 'minutes'))}\n \n \n {`${t('餐點')}送達時段`}\n \n \n \n \n \n \n \n \n 訂購內容\n \n \n 編號 {shortuuid().fromUUID(order.id).slice(-6)}\n \n \n {order.mealItems.map(({ name, quantity, price }, index)=>(\n \n \n {name} x{quantity}\n \n \n ${price}\n \n \n ))}\n \n \n 送餐費用\n \n \n ${deliveryStaffFee + extraFee + platformFee}\n \n \n \n \n 訂單總金額: ${mealsTotal + deliveryStaffFee + extraFee + platformFee}\n \n \n \n \n \n {t('送餐大使')}\n \n {deliveryStaffOrder ?\n :\n \n 未指派\n }\n \n {deliveryStaffOrder && deliveryStaffOrder.status === 'completed' && deliveryStaffOrder.photoS3Keys &&\n \n \n {t('送餐關懷')}\n \n
\n \n
\n \n {formatNote(deliveryStaffOrder.diary || '無')}\n \n
}\n
\n
\n );\n}\n\nOrderCard.propTypes = {\n order: PropTypes.object,\n};\n","import ListAltIcon from '@material-ui/icons/ListAlt';\nimport MyOrders from './MyOrders/MyOrders';\n\nexport default [\n {\n title: '我的訂單',\n icon: ListAltIcon,\n paths: [{ path: '/myOrders', exact: true }],\n component: MyOrders,\n },\n];\n","import React, { useState, useEffect } from 'react';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport {\n getOrdersByClientByDate, getOrdersByIndividualByDate,\n} from './queries';\nimport OrderCard from './OrderCard';\nimport { asyncListAll } from 'utilities/graph';\nimport cache from 'utilities/cache';\nimport DateRangeSelector from 'components/DateRangeSelector';\nimport moment from 'moment-timezone';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { sortBy } from 'utilities/sorting';\n\nexport default function MyOrders() {\n const [orders, setOrders] = useState([]);\n const [startDate, setStartDate] = useState();\n const [endDate, setEndDate] = useState();\n\n useEffect(() => {\n const lastWeek = moment().tz(TIME_ZONE).add(-7, 'days').format('YYYY-MM-DD');\n const nextWeek = moment().tz(TIME_ZONE).add(7, 'days').format('YYYY-MM-DD');\n setStartDate(lastWeek);\n setEndDate(nextWeek);\n }, []);\n\n useEffect(() => {\n if (startDate && endDate) {\n (async () => {\n const clientId = cache.get('app:clientId');\n let orders = await asyncListAll(getOrdersByIndividualByDate, {\n individualId: clientId,\n date: {\n between: [startDate, endDate],\n },\n });\n\n const oldOrders = await asyncListAll(getOrdersByClientByDate, {\n clientId,\n date: {\n between: [startDate, endDate],\n },\n });\n\n orders = orders.concat(oldOrders).sort(sortBy('deliveryBy'));\n\n global.logger.debug(orders);\n setOrders(orders.reverse());\n })();\n }\n }, [startDate, endDate]);\n\n const setCustomPeriod = ({ startDate, endDate }) => {\n setStartDate(moment(startDate).tz(TIME_ZONE).format('YYYY-MM-DD'));\n setEndDate(moment(endDate).tz(TIME_ZONE).format('YYYY-MM-DD'));\n };\n\n return (\n \n \n \n \n \n \n \n {orders.map((order, index)=>(\n \n \n \n ))}\n \n \n );\n}\n\nMyOrders.propTypes = {};\n","import { Route } from 'react-router-dom';\n\n// Icon Search\n// https://v4.mui.com/components/material-icons/#material-icons\nimport LockIcon from '@material-ui/icons/Lock';\n\nimport ProtectedRoute from 'components/ProtectedRoute';\n\nimport Tests from 'views/Admin/Tests/Tests';\nimport AppUsers from 'views/Admin/AppUsers/AppUsers';\n\nimport adminRoutes from 'views/Admin/routes';\nimport orgAdminRoutes from 'views/OrgAdmin/routes';\nimport facilityAdminRoutes from 'views/FacilityAdmin/routes';\nimport clientRoutes from 'views/Client/routes';\nimport publicRoutes from 'views/Public/routes';\n\nexport const general = publicRoutes.map((item) => {\n item.route = item.route || Route;\n item.pathPrefix = null;\n return item;\n});\n\nexport const client = clientRoutes.map((item) => {\n item.route = item.route || ProtectedRoute;\n item.roles = ['Clients'];\n item.pathPrefix = 'client';\n return item;\n});\n\nexport const deliveryStaff = [].map((item) => {\n item.route = item.route || ProtectedRoute;\n item.roles = ['DeliveryStaffs'];\n item.pathPrefix = 'delivery';\n return item;\n});\n\nexport const facilityAdmin = facilityAdminRoutes.map((item) => {\n item.route = item.route || ProtectedRoute;\n item.roles = ['FacilityAdmins'];\n item.pathPrefix = 'facility';\n return item;\n});\n\nexport const orgAdmin = orgAdminRoutes.map((item) => {\n item.route = item.route || ProtectedRoute;\n item.roles = ['OrgAdmins'];\n item.pathPrefix = 'organization';\n return item;\n});\n\nexport const admin = adminRoutes.map((item) => {\n item.route = item.route || ProtectedRoute;\n item.roles = ['Admins'];\n item.pathPrefix = 'admin';\n return item;\n});\n\nconst localTest = [\n {\n title: '測試用頁面',\n icon: LockIcon,\n paths: [\n { path: '/tests', exact: true },\n ],\n component: Tests,\n },\n {\n title: '軟體用戶',\n icon: LockIcon,\n paths: [{ path: '/appUsers', exact: true }],\n component: AppUsers,\n },\n].filter(() => process.env.NODE_ENV === 'development').map((item) => {\n item.route = item.route || ProtectedRoute;\n item.roles = ['Admins'];\n item.pathPrefix = 'local';\n return item;\n});\n\nexport const appRoutes = [\n ...general, ...admin, ...orgAdmin, ...facilityAdmin, ...deliveryStaff, ...client, ...localTest,\n].reduce((all, item) => {\n item.paths.forEach(({ path, link, exact = true }) => {\n all.push(Object.assign({\n path: item.pathPrefix ? `/${item.pathPrefix}${path}` : path,\n link,\n exact,\n }, item));\n });\n return all;\n}, []);\n","import React from 'react';\nimport Container from '@material-ui/core/Container';\n\n// import MealDateSelector from 'components/Date/MealDateSelector';\n// import OrderStatusProgress from 'components/Order/OrderStatusProgress';\n// import AdminOrderEditButton from 'forms/AdminOrderForm/AdminOrderEditButton';\n// import RestaurantEditButton from 'forms/RestaurantForm/RestaurantEditButton';\n// import RestaurantMealDialog from 'components/RestaurantMealDialog';\n// import ElderEditButton from 'forms/ElderForm/ElderEditButton';\n// import Card from 'components/Payment/Card';\n// import LinePayButton from 'components/Payment/LinePayButton';\nimport UserFormEditButton from 'forms/UserForm/UserFormEditButton';\n\nexport default function Tests() {\n return (\n \n {/* \n \n */}\n \n {/* */}\n {/* {}}\n open={true}\n /> */}\n\n {/* */}\n {/* */}\n\n {/* */}\n );\n}\n","export const chunkArray = (array, chunkSize) => {\n const chunks = [];\n let index = 0;\n\n while (index < array.length) {\n chunks.push(array.slice(index, index + chunkSize));\n index += chunkSize;\n }\n\n return chunks;\n};\n","// import cache from 'utilities/cache';\nexport default {\n set(key, value) {\n if (typeof value === 'object') {\n value = JSON.stringify(value);\n }\n localStorage.setItem(key, value);\n },\n get(key) {\n const data = localStorage.getItem(key);\n\n try {\n return JSON.parse(data);\n } catch (e) {\n return data;\n }\n },\n remove(key) {\n localStorage.removeItem(key);\n },\n purge(prefix = '') {\n const neverPurgeKeys = ['app:table', 'app:facility:schedule'];\n const keys = Object.keys(localStorage);\n const toDelete = keys.filter((x) => {\n if (prefix) {\n return x.startsWith(prefix);\n } else {\n if (neverPurgeKeys.some((neverPurgeKey) => x.startsWith(neverPurgeKey))) {\n return false;\n }\n return true;\n }\n });\n toDelete.forEach((key) => {\n localStorage.removeItem(key);\n });\n },\n reset() {\n localStorage.clear();\n },\n};\n","import React from 'react';\nimport moment from 'moment-timezone';\nimport 'moment/locale/zh-tw';\nimport p from '@mapbox/polyline';\nimport Typography from '@material-ui/core/Typography';\n\nimport { LOCALE, TIME_ZONE, genders } from '@silvergatedelivery/constants';\nimport TagChip from 'components/TagChip';\nimport { sortBy } from './sorting';\n\nexport const formatAddress = (inAddressObject = {}, options = {}) => {\n if (typeof inAddressObject === 'string') return inAddressObject;\n\n const { ignoreNote = false, includeZipCode = true, ignoreCountry = true } = options;\n const {\n country,\n county,\n district,\n street,\n zipCode,\n note,\n } = inAddressObject;\n if (!county) return null;\n const noteString = (!ignoreNote && note) ? `(${note})` : '';\n const zipCodeString = (includeZipCode && zipCode) ? `${zipCode} ` : '';\n const countryString = (country && !ignoreCountry) ? `${country} ` : '';\n return `${zipCodeString}${countryString}${county || ''}${district || ''}${street || ''}` + noteString;\n};\n\nexport const formatAddressLatLng = (inAddressObject = {}) => {\n if (typeof inAddressObject === 'string') return inAddressObject;\n\n const {\n lat,\n lng,\n } = inAddressObject;\n if (!lat || !lng) return '';\n\n return `${lat}, ${lng}`;\n};\n\n\nexport const formatBankAccount = (inBankAccount) => {\n if (typeof inBankAccount === 'string') return inBankAccount;\n const {\n name,\n number,\n } = inBankAccount || {};\n\n return `${name || ''} ${number || ''}`;\n};\n\nexport const formatGender = (inGender) => {\n if (!inGender) return '';\n\n return genders.find(({ value }) => value === inGender).label;\n};\n\nexport const formatAge = (inDatetime, base = Date.now()) => {\n if (!inDatetime) return 'N/A';\n const ageDifMs = base - new Date(inDatetime).getTime() - 86400000;\n const ageDate = new Date(ageDifMs);\n return Math.abs(ageDate.getUTCFullYear() - 1970);\n};\n\nexport const formatDatetime = (inDatetime, options = {}) => {\n if (!inDatetime) return '';\n\n const {\n year = true, day = true, weekday = true, hour = true, minute = true, second = false,\n } = options;\n\n return new Date(inDatetime).toLocaleString(LOCALE, {\n timeZone: TIME_ZONE,\n weekday: weekday ? 'long' : undefined,\n year: year ? 'numeric' : undefined,\n month: 'short',\n day: day ? 'numeric' : undefined,\n hour: hour ? '2-digit' : undefined,\n minute: minute ? '2-digit' : undefined,\n second: second ? '2-digit' : undefined,\n // hour12: false,\n });\n};\n\nexport const formatTime = (inDatetime) => {\n if (!inDatetime) return '';\n\n return new Date(inDatetime).toLocaleString(LOCALE, {\n timeZone: TIME_ZONE,\n weekday: undefined,\n year: undefined,\n month: undefined,\n day: undefined,\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n};\n\n\nexport const formatDatetimeFromNow = (inDatetime) => {\n if (!inDatetime) return '';\n\n return moment(inDatetime).tz(TIME_ZONE).locale('zh-tw').fromNow();\n};\n\nexport const formatEmergencyContact = (inEmergencyContact = {}) => {\n if (!inEmergencyContact) return null;\n const { name, relationship, phoneNumber, phoneNumber2 } = inEmergencyContact;\n if (!name) return null;\n return `${name} (${relationship}) ${phoneNumber} ${phoneNumber2 || ''}`;\n};\n\nexport const formatCenter = (inBounds = {}, string = false) => {\n const { south, west, north, east } = inBounds;\n\n const center = {\n lat: (north + south) / 2,\n lng: (east + west) / 2,\n };\n\n return string ? `${center.lat},${center.lng}` : center;\n};\n\nexport const formatPolyline = (inPolylineString, string = false) => {\n const coordinates = p.decode(inPolylineString);\n return coordinates.map((item) => {\n const [lat, lng] = item;\n return string ? `${lat},${lng}` : { lat, lng };\n });\n};\n\nexport const getStartEndForDeliveryTime = (timestamp) => {\n // +/- 30 minutes\n const start = moment(timestamp).tz(TIME_ZONE).add(-30, 'minutes').toISOString();\n const end = moment(timestamp).tz(TIME_ZONE).add(30, 'minutes').toISOString();\n\n return { start, end };\n};\n\nexport const formatDeliveryPeriod = (start, end) => {\n const startString = new Date(start).toLocaleString(LOCALE, {\n timeZone: TIME_ZONE,\n weekday: 'long',\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n const endString = new Date(end).toLocaleString(LOCALE, {\n timeZone: TIME_ZONE,\n hour: '2-digit',\n minute: '2-digit',\n });\n\n return `${startString} - ${endString}`;\n};\n\nexport const formatTags = (tags) => {\n if (!tags || !tags.items || tags.items.length === 0) {\n return '無';\n }\n return (\n \n {tags.items\n .map(({ tag }) => tag)\n .sort(sortBy('name'))\n .sort(sortBy('subcategory'))\n .sort(sortBy('category'))\n .map((tag, index)=>(\n \n ))}\n );\n};\n\nexport const formatNote = (note) => {\n if (!note) return '';\n return (\n \n {note.split('\\n').map((item, index)=>(\n \n {item}\n \n ))}\n );\n};\n\nexport const formatBirthday = (birthday) => {\n if (!birthday) return '';\n const [year, month, day] = birthday.split('-');\n const ROCYear = parseInt(year) - 1911;\n return `${ROCYear}年${month}月${day}日`;\n};\n\nexport const getDisadvantagedType = (disadvantagedTypesHistory) => {\n let type = '';\n if (disadvantagedTypesHistory) {\n const today = moment().format('YYYY-MM-DD');\n disadvantagedTypesHistory.sort(sortBy('approvedDate')).forEach(({ disadvantagedTypes, approvedDate }) => {\n if (approvedDate <= today) {\n type = disadvantagedTypes;\n } else {\n return;\n }\n });\n }\n return type;\n};\n\nexport const formatComments = (comments) => {\n if (!comments || !comments.items || comments.items.length === 0) {\n return '';\n }\n return (\n \n {comments.items.sort(sortBy('createdAt'))\n .map((comment) => (\n
\n
{comment.username} - {moment(comment.createdAt).format('YYYY-MM-DD HH:mm')}
\n
{comment.content}
\n
\n ))}\n
);\n};\n","import { API, graphqlOperation } from '@aws-amplify/api';\nimport to from 'await-to-js';\nimport { toastr } from 'react-redux-toastr';\n\nimport { apiErrorCodes } from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\n\n// const THRESHOLD = 500;\n\nconst __DEV__ = process.env.NODE_ENV === 'development';\n\n// const DEV_LOGGING = true;\n\nexport async function request(query, params, authMode) {\n // const startedAt = Date.now();\n const options = graphqlOperation(query, params);\n // https://github.com/aws-amplify/amplify-js/blob/master/packages/api/src/types/index.ts#L75\n const username = cache.get('app:username');\n options.authMode = authMode ? authMode : (username ? 'AMAZON_COGNITO_USER_POOLS' : 'API_KEY');\n\n // if (__DEV__ && DEV_LOGGING) {\n // global.logger.debug(options);\n // }\n\n const [err, res] = await to(API.graphql(options));\n\n // if (__DEV__ && DEV_LOGGING) {\n // // global.logger.debug(JSON.stringify(res, null, 2));\n\n // const time = Date.now() - startedAt;\n // const name = `${query.split('(')[0].replace(/ +/g, ' ').replace(/\\n+/g, '')}`;\n // global.logger.info(`API:${name} ${time} ms ${time>THRESHOLD?'***':''}`);\n // }\n\n if (err) {\n global.logger.error(err);\n\n const error = (err.errors ? (apiErrorCodes[err.errors[0].errorType] || err.errors[0].message) : err);\n const msg = typeof error === 'string' ? error : error.message;\n toastr.error(msg);\n\n if (__DEV__) {\n global.logger.debug(query);\n global.logger.debug(JSON.stringify(params || {}, null, 2));\n }\n throw err;\n }\n\n return res;\n}\n\nexport async function asyncListAll(operation, input = {}, allItems = [], authMode) {\n const res = await request(operation, {\n limit: 100,\n ...input,\n }, authMode);\n\n const { items, nextToken } = res.data[Object.keys(res.data)[0]];\n allItems = [...allItems, ...items];\n\n if (nextToken) {\n return asyncListAll(operation, { ...input, nextToken }, allItems);\n }\n\n return allItems;\n}\n\nexport async function asyncListAllAndUpdateLastItem(operation, input = {}, onUpdateLastItem, allItems = [], authMode) {\n const res = await request(operation, {\n limit: 100,\n ...input,\n }, authMode);\n\n const { items, nextToken } = res.data[Object.keys(res.data)[0]];\n allItems = [...allItems, ...items];\n\n onUpdateLastItem && onUpdateLastItem(items.length !== 0 ? items[items.length -1] : undefined, nextToken);\n\n if (nextToken) {\n return asyncListAllAndUpdateLastItem(operation, { ...input, nextToken }, onUpdateLastItem, allItems);\n }\n\n return allItems;\n}\n","/**\n * sort array by field\n * @param {String} inField\n * @param {Boolean} inReverse\n * @return {Function};\n */\nexport function sortBy(inField, inReverse = false) {\n return (a, b) => {\n const val = (!inReverse) ? 1 : -1;\n if ((a[inField] === b[inField])) return 0;\n return val * naturalCompare(a[inField], b[inField]);\n };\n}\n\nexport function compareObjects(obj1, obj2) {\n if (obj1 === obj2) {\n return true;\n }\n\n if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 === null || obj2 === null) {\n return false;\n }\n\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n if (!keys2.includes(key) || !compareObjects(obj1[key], obj2[key])) {\n return false;\n }\n }\n\n return true;\n}\n\n/* eslint-disable */\n/* beautify ignore:start */\n// https://github.com/litejs/natural-compare-lite/blob/master/index.js\nvar naturalCompare = function(a, b) {\n var i, codeA\n , codeB = 1\n , posA = 0\n , posB = 0\n , alphabet = String.alphabet\n\n function getCode(str, pos, code) {\n if (code) {\n for (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i;\n return +str.slice(pos - 1, i)\n }\n code = alphabet && alphabet.indexOf(str.charAt(pos))\n return code > -1 ? code + 76 : ((code = str.charCodeAt(pos) || 0), code < 45 || code > 127) ? code\n : code < 46 ? 65 // -\n : code < 48 ? code - 1\n : code < 58 ? code + 18 // 0-9\n : code < 65 ? code - 11\n : code < 91 ? code + 11 // A-Z\n : code < 97 ? code - 37\n : code < 123 ? code + 5 // a-z\n : code - 63\n }\n\n if ((a+=\"\") != (b+=\"\")) for (;codeB;) {\n codeA = getCode(a, posA++)\n codeB = getCode(b, posB++)\n\n if (codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66) {\n codeA = getCode(a, posA, posA)\n codeB = getCode(b, posB, posA = i)\n posB = i\n }\n\n if (codeA != codeB) return (codeA < codeB) ? -1 : 1\n }\n return 0\n}\n/* beautify ignore:end */\n\nexport const sortOrder = (a, b) => {\n if (a.deliveryBy > b.deliveryBy) return 1;\n if (a.deliveryBy < b.deliveryBy) return -1;\n if (a.deliveryGroupId && b.deliveryGroupId) {\n if (a.deliveryGroupId > b.deliveryGroupId) return 1;\n if (a.deliveryGroupId < b.deliveryGroupId) return -1;\n if (a.deliveryGroupSortOrder > b.deliveryGroupSortOrder) return 1;\n if (a.deliveryGroupSortOrder < b.deliveryGroupSortOrder) return -1;\n }\n if (!a.deliveryGroupId && b.deliveryGroupId) return 1;\n if (a.deliveryGroupId && !b.deliveryGroupId) return -1;\n return a.elder?.name > b.elder?.name ? 1 : -1;\n};\n\nexport const sortOrdersByDeliveryGroups = (orders, elderDeliveryGroups) => {\n const allSortedOrders = [];\n const ordersGroupedByDeliveryTime = orders.reduce((acc, item) => {\n const mealSlotKey = item.mealSlot === 'dinner' ? '2dinner' : '1lunch'; // 讓晚餐排序在午餐後面\n const key = `${item.date}-${mealSlotKey}`;\n acc[key] = acc[key] || [];\n acc[key].push(item);\n return acc;\n }, {});\n\n Object.keys(ordersGroupedByDeliveryTime).sort((a, b) => a > b ? 1 : -1).forEach((key) => {\n const orders = ordersGroupedByDeliveryTime[key];\n const ordersGroupedByDeliveryStaff = orders.reduce((acc, item) => {\n const deliveryStaffId = item.deliveryStaffId || 'none';\n acc[deliveryStaffId] = acc[deliveryStaffId] || [];\n acc[deliveryStaffId].push(item);\n return acc;\n }, {});\n const elderDeliveryGroupsList = elderDeliveryGroups.reduce((acc, item) => {\n const { deliveryGroupId } = item;\n acc[deliveryGroupId] = acc[deliveryGroupId] || [];\n acc[deliveryGroupId].push(item);\n return acc;\n }, {});\n const deliveryGroupsName = elderDeliveryGroups.reduce((acc, item) => {\n const { deliveryGroupId } = item;\n if (acc.find(({ id }) => id === deliveryGroupId)) return acc;\n acc.push({\n id: deliveryGroupId,\n name: item.deliveryGroup.name\n });\n return acc;\n }, []);\n\n Object.keys(ordersGroupedByDeliveryStaff).forEach((deliveryStaffId) => {\n const deliveryStaffOrders = ordersGroupedByDeliveryStaff[deliveryStaffId];\n let targetDeliveryGroupId;\n\n const allOrdersInElderGroup = (elderGroup) => \n deliveryStaffOrders.every(({ elderId }) => elderGroup.some((item) => item.elderId === elderId));\n\n if (deliveryStaffOrders[0].deliveryGroupId &&\n deliveryStaffOrders.every((order) => order.deliveryGroupId === deliveryStaffOrders[0].deliveryGroupId) &&\n elderDeliveryGroupsList[deliveryStaffOrders[0].deliveryGroupId] &&\n allOrdersInElderGroup(elderDeliveryGroupsList[deliveryStaffOrders[0].deliveryGroupId])\n ) {\n targetDeliveryGroupId = deliveryStaffOrders[0].deliveryGroupId;\n } else {\n const result = Object.keys(elderDeliveryGroupsList).filter((key) => allOrdersInElderGroup(elderDeliveryGroupsList[key]));\n if (result.length > 0) {\n const matchedDeliveryGroups = deliveryGroupsName\n .filter((item) => result.includes(item.id)).sort(sortBy('name'));\n targetDeliveryGroupId = matchedDeliveryGroups[0].id;\n }\n }\n if (targetDeliveryGroupId) {\n deliveryStaffOrders.forEach((order) => {\n order.deliveryGroupId = targetDeliveryGroupId;\n order.deliveryGroupSortOrder = elderDeliveryGroupsList[targetDeliveryGroupId].find((item) => item.elderId === order.elderId).sortOrder;\n });\n }\n const sortedOrders = deliveryStaffOrders.sort(sortOrder);\n if (deliveryStaffId !== 'none' && !sortedOrders.every((order) => !order.deliveryGroupId )) {\n let deliveryOrder = 0;\n let previousElderId;\n sortedOrders.forEach((order) => {\n order.deliveryOrder = deliveryOrder;\n if (previousElderId !== order.elderId) {\n deliveryOrder += 1;\n }\n previousElderId = order.elderId;\n });\n }\n allSortedOrders.push(...sortedOrders);\n });\n });\n\n return allSortedOrders;\n}","import i18n from 'i18next';\nimport { orderStatus, mealSlots } from '@silvergatedelivery/constants';\n\nexport const getTranslatedOrderStatus = () => {\n if (!i18n.isInitialized) {\n global.logger.error('i18n is not ready');\n return orderStatus;\n }\n\n return orderStatus.map((status) => {\n const newStatus = Object.assign({}, status);\n if (i18n.exists(newStatus.label)) {\n newStatus.label = i18n.t(newStatus.label);\n }\n return newStatus;\n });\n};\n\nexport const getTranslatedMealSlots = () => {\n if (!i18n.isInitialized) {\n global.logger.error('i18n is not ready');\n return mealSlots;\n }\n\n return mealSlots.map((mealSlot) => {\n const newMealSlot = Object.assign({}, mealSlot);\n if (i18n.exists(newMealSlot.label)) {\n newMealSlot.label = i18n.t(newMealSlot.label);\n }\n return newMealSlot;\n });\n};\n","const uiSchema = {\n 'surcharges': {\n 'items': {\n 'name': { 'ui:width': '50%' },\n 'price': { 'ui:width': '50%' },\n 'ui:title': '',\n },\n 'ui:options': {\n 'orderable': false,\n },\n },\n};\n\nexport default uiSchema;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport DataForm from 'forms/DataForm';\nimport uiSchema from './uiSchema';\n\nexport default function SurchargesForm(props) {\n const { default: schema } = useMemo(() => require('./schema.js'), []);\n\n return (\n \n );\n}\n\nSurchargesForm.propTypes = {\n formData: PropTypes.object,\n onChange: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useDropzone } from 'react-dropzone';\nimport { Storage } from 'aws-amplify';\nimport IconButton from '@material-ui/core/IconButton';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n imgContainer: {\n position: 'relative',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[300],\n },\n}));\nexport default function RestaurantMealGallery({\n restaurantId,\n restaurantMealId,\n s3Keys = [],\n onUpdateS3Keys,\n}) {\n const classes = useStyles();\n\n const [isLoading, setIsLoading] = useState(false);\n const [files, setFiles] = useState([]);\n\n const {\n getRootProps,\n getInputProps,\n } = useDropzone({\n async onDrop(newFiles) {\n setIsLoading(true);\n global.logger.debug('onDrop', newFiles);\n\n if (newFiles.length === 0) return;\n\n await Promise.all(newFiles.map(async (file) => {\n const s3Key = `restaurants/${restaurantId}/meals/${restaurantMealId}/${file.name}`;\n await Storage.put(s3Key, file, {\n contentType: file.type,\n });\n\n s3Keys.push(s3Key);\n files.push({\n s3Key,\n url: URL.createObjectURL(file),\n });\n }));\n\n setFiles([...files]);\n onUpdateS3Keys(s3Keys);\n setIsLoading(false);\n },\n accept: 'image/*',\n });\n\n const onRemoveFile = async (s3Key) => {\n setIsLoading(true);\n await Storage.remove(s3Key);\n const fileIndex = files.findIndex((file) => file.s3Key === s3Key);\n files.splice(fileIndex, 1);\n\n const s3KeyIndex = s3Keys.findIndex((key) => key === s3Key);\n s3Keys.splice(s3KeyIndex, 1);\n\n setFiles([...files]);\n onUpdateS3Keys(s3Keys);\n setIsLoading(false);\n };\n\n useEffect(() => {\n (async () => {\n const files = await Promise.all(s3Keys.map(async (s3Key) => {\n return {\n s3Key,\n url: await Storage.get(s3Key),\n };\n }));\n\n setFiles(files);\n })();\n }, [s3Keys]);\n\n return (\n \n \n
\n
\n \n {isLoading && }\n {!isLoading &&

點此或拖曳上傳圖片

}\n
\n
\n
\n {files.map(({ s3Key, url }, index) => (\n \n onRemoveFile(s3Key)}\n disabled={isLoading}\n >\n \n \n \"image\"\n \n ))}\n
\n );\n}\n\nRestaurantMealGallery.propTypes = {\n restaurantId: PropTypes.string,\n restaurantMealId: PropTypes.string,\n s3Keys: PropTypes.array,\n onUpdateS3Keys: PropTypes.func,\n};\n","import React, { useState, useEffect, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport AddIcon from '@material-ui/icons/Add';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport EditIcon from '@material-ui/icons/Edit';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\n\nimport { Storage } from 'aws-amplify';\nimport { v1 as uuidv1 } from 'uuid';\nimport SurchargesForm from 'forms/SurchargesForm/SurchargesForm';\nimport { request } from 'utilities/graph';\nimport {\n getRestaurantMeal,\n} from 'graphql/queries';\nimport {\n createRestaurantMeal,\n updateRestaurantMeal,\n createRestaurantMealTag,\n deleteRestaurantMealTag,\n} from 'graphql/mutations';\nimport DataJoinEditorInput from 'components/DataJoinEditor/DataJoinEditorInput';\nimport RestaurantMealGallery from './RestaurantMealGallery';\nimport cache from 'utilities/cache';\n\nconst defaultData = {\n name: '',\n description: '',\n price: 0,\n cost: 0,\n};\n\nexport default function RestaurantMealDialog({\n mode = 'add',\n open: inOpen = false,\n restaurantId,\n buttonStyle = {},\n mealItem,\n buttonSize = 'medium',\n onUpdate,\n}) {\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(inOpen);\n const [data, setData] = useState(defaultData);\n const [newTags, setNewTags] = useState([]);\n const [restaurantMealId, setRestaurantMealId] = useState();\n const [currentImageS3Keys, setCurrentImageS3Keys] = useState([]);\n const [newImageS3Keys, setNewImageS3Keys] = useState([]);\n\n const handleSubmit = async () => {\n setIsLoading(true);\n const username = cache.get('app:username');\n\n const {\n name,\n description,\n price,\n cost,\n isPublic,\n surcharges,\n } = data;\n\n const mealData = {\n id: restaurantMealId,\n restaurantId,\n isActive: 1,\n isPublic,\n name,\n description,\n price,\n cost,\n previewS3Keys: [],\n imageS3Keys: newImageS3Keys,\n surcharges,\n createdBy: username,\n updatedBy: username,\n };\n\n let savedData;\n if (mode === 'add') {\n const { data: { createRestaurantMeal: result } } = await request(createRestaurantMeal, { input: mealData });\n savedData = result;\n } else {\n const { data: { updateRestaurantMeal: result } } = await request(updateRestaurantMeal, { input: mealData });\n savedData = result;\n }\n\n global.logger.debug({ mealItem, newTags });\n\n const toCreateJoinData = [];\n const toRemoveJoinData = [];\n\n mealItem = mealItem || { tags: { items: [] } };\n mealItem.tags.items.forEach(({ id, tagId }) => {\n const matched = newTags.find(({ id }) => id === tagId);\n if (!matched) {\n toRemoveJoinData.push({ id });\n }\n });\n\n newTags.forEach(({ id }) => {\n const matched = mealItem.tags.items.find(({ tagId }) => id === tagId);\n if (!matched) {\n toCreateJoinData.push({\n restaurantMealId: savedData.id,\n tagId: id,\n createdBy: username,\n updatedBy: username,\n });\n }\n });\n\n global.logger.debug('toCreateJoinData', toCreateJoinData);\n global.logger.debug('toRemoveJoinData', toRemoveJoinData);\n\n await Promise.all([\n ...toCreateJoinData.map((item) => {\n return request(createRestaurantMealTag, { input: item });\n }),\n ...toRemoveJoinData.map((item) => {\n return request(deleteRestaurantMealTag, { input: item });\n }),\n ]);\n\n const { data: { getRestaurantMeal: returnData } } = await request(getRestaurantMeal, { id: savedData.id });\n\n returnData.imageUrl = returnData.imageS3Keys[0] ? await Storage.get(returnData.imageS3Keys[0]) : mealItem.imageUrl;\n\n onUpdate(returnData);\n\n setIsLoading(false);\n handleClose();\n };\n\n const handleClose = () => {\n reset();\n setOpen(false);\n };\n\n const reset = () => {\n setNewTags([]);\n setRestaurantMealId(undefined);\n setCurrentImageS3Keys([]);\n setNewImageS3Keys([]);\n };\n\n const title = mode === 'add' ? `新增${t('餐點')}` : `更新${t('餐點')}`;\n\n useEffect(() => {\n if (!open) return;\n\n reset();\n if (mealItem) {\n setData(mealItem);\n setNewTags(mealItem.tags.items.map(({ tag }) => tag));\n setRestaurantMealId(mealItem.id);\n setCurrentImageS3Keys(mealItem.imageS3Keys || []);\n setNewImageS3Keys(mealItem.imageS3Keys || []);\n } else {\n setData(defaultData);\n setRestaurantMealId(uuidv1());\n }\n }, [mealItem, open]);\n\n return (\n \n \n setOpen(true)}\n size={buttonSize}\n >\n {mode === 'add' ? : }\n \n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n {t('餐點')}\n \n \n {\n setData({ ...data, isPublic: !data.isPublic });\n } }\n />\n }\n label={\n {'公開可供客戶自由訂購'}\n }\n />\n\n setData({ ...data, name: e.target.value }) }\n />\n setData({ ...data, description: e.target.value }) }\n />\n setData({ ...data, price: e.target.value }) }\n onWheel={(e) => e.currentTarget.blur()}\n helperText=\"餐點總售價,包含所有額外成本裡設定之項目\"\n />\n setData({ ...data, cost: e.target.value }) }\n onWheel={(e) => e.currentTarget.blur()}\n />\n tag.label) : []}\n onChange={setNewTags}\n onUpdateOptions={()=>{}}\n disabled={isLoading}\n showHelperText={false}\n />\n {\n setData({ ...data, ...newData });\n }}\n />\n {open &&\n }\n {/* {open && } */}\n \n \n \n \n \n \n \n );\n}\n\nRestaurantMealDialog.propTypes = {\n mode: PropTypes.string,\n open: PropTypes.bool,\n restaurantId: PropTypes.string,\n buttonStyle: PropTypes.object,\n mealItem: PropTypes.object,\n buttonSize: PropTypes.string,\n onUpdate: PropTypes.func,\n};\n","import React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport moment from 'moment';\nimport { adminUpdateOrderMeal } from 'graphql/mutations';\nimport { request } from 'utilities/graph';\n\nconst useStyles = makeStyles({\n table: {\n minWidth: 500,\n },\n dateField: {\n marginTop: 16,\n marginLeft: 8,\n width: 150,\n },\n note: {\n marginTop: 16,\n marginLeft: 8,\n },\n});\n\nexport default function UpdateOrderMealDialog({\n open,\n setOpen,\n restaurantId,\n oldMeal,\n newMeal,\n}) {\n const classes = useStyles();\n const [effectiveDate, setEffectiveDate] = useState(moment().format('YYYY-MM-DD'));\n const [isLoading, setIsLoading] = useState(false);\n const [effectiveDateError, setEffectiveDateError] = useState('');\n\n const handleClose = () => {\n setEffectiveDate(moment().format('YYYY-MM-DD'));\n setEffectiveDateError('');\n setOpen(false);\n };\n\n const handleSubmit = async () => {\n setIsLoading(true);\n\n if (!window.confirm('確認要修改週期性排單和訂單嗎?')) {\n setIsLoading(false);\n throw new Error('abort');\n }\n\n const input = {\n restaurantId,\n oldMealName: oldMeal.name,\n newMealName: newMeal.name,\n newMealCost: newMeal.cost,\n newMealPrice: newMeal.price,\n newMealSurcharges: newMeal.surcharges,\n effectiveDate: effectiveDate,\n };\n\n try {\n await request(adminUpdateOrderMeal, { input });\n } catch (e) {\n console.log(e);\n }\n\n setIsLoading(false);\n handleClose();\n };\n\n const today = new Date();\n const minDate = new Date();\n minDate.setDate(today.getDate() - 10);\n const maxDate = new Date();\n maxDate.setDate(today.getDate() + 30);\n\n return (\n \n {\n if (reason === 'escapeKeyDown' || reason === 'backdropClick') return;\n handleClose();\n }}\n aria-labelledby=\"form-dialog-title\"\n >\n \n 修改週期性排單與訂單\n \n \n \n \n \n \n 項目\n 修改前\n 修改後\n \n \n \n {[\n { label: '名稱', key: 'name' },\n { label: '單價', key: 'price' },\n { label: '進價', key: 'cost' },\n ].map(({ label, key }) => (\n \n {label}\n {oldMeal[key]}\n {newMeal[key]}\n \n ))}\n {(oldMeal.surcharges?.length > 0 || newMeal.surcharges?.length > 0) && (\n \n 額外成本\n \n {oldMeal.surcharges?.map((surcharge) => `${surcharge.name} ${surcharge.price}`).join('、')}\n \n \n {newMeal.surcharges?.map((surcharge) => `${surcharge.name} ${surcharge.price}`).join('、')}\n \n )\n }\n \n
\n
\n {\n const selectedDate = moment(e.target.value, 'YYYY-MM-DD');\n const today = moment().startOf('day');\n const minDate = moment(today).subtract(10, 'days');\n const maxDate = moment(today).add(30, 'days');\n\n if (!selectedDate.isValid() || selectedDate.isBefore(minDate) || selectedDate.isAfter(maxDate)) {\n setEffectiveDateError('請選擇過去10天內至未來30天內的日期');\n } else {\n setEffectiveDateError('');\n }\n setEffectiveDate(e.target.value);\n }}\n error={!!effectiveDateError}\n helperText={effectiveDateError}\n />\n
\n \n 請注意:\n \n \n {`1. 週期性排單中若餐點名稱為『${oldMeal.name}』將被修改為新的餐點設定。`}\n \n \n {`2. 訂單中送餐時間為${effectiveDate}當天或之後,且餐點名稱為『${oldMeal.name}』將被修改為新的餐點設定。`}\n \n
\n
\n \n \n \n \n \n
\n );\n}\n\nUpdateOrderMealDialog.propTypes = {\n open: PropTypes.bool,\n setOpen: PropTypes.func,\n restaurantId: PropTypes.string,\n oldMeal: PropTypes.object,\n newMeal: PropTypes.object,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\nimport { Storage } from 'aws-amplify';\n\nimport { request } from 'utilities/graph';\nimport {\n getRestaurantMealsByRestaurantByIsActive,\n} from './RestaurantMealGrids.graph';\n\nimport { asyncListAll } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\nimport TagChip from 'components/TagChip';\nimport {\n deleteRestaurantMeal,\n deleteRestaurantMealTag,\n} from 'graphql/mutations';\nimport { compareObjects } from 'utilities/sorting';\nimport RestaurantMealDialog from './RestaurantMealDialog';\nimport UpdateOrderMealDialog from './UpdateOrderMealDialog';\n\nconst useStyles = makeStyles({\n mediaContainer: {\n position: 'relative',\n },\n media: {\n height: 150,\n opacity: 0.1,\n },\n imageContainer: {\n position: 'absolute',\n top: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n },\n img: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n },\n card: {\n height: '100%',\n },\n});\n\nexport default function RestaurantMealGrids({ restaurantId }) {\n const { t } = useTranslation();\n const classes = useStyles();\n\n const [isLoading, setIsLoading] = useState(false);\n const [meals, setMeals] = useState([]);\n const [openUpdateOrderMealDialog, setOpenUpdateOrderMealDialog] = useState(false);\n const [oldMeal, setOldMeal] = useState({});\n const [newMeal, setNewMeal] = useState({});\n\n const handleDelete = async (id, name, tags) => {\n const confirmResult = window.confirm(`確定刪除${t('餐點')} ${name} 嗎?`);\n if (!confirmResult) return;\n\n setIsLoading(true);\n await Promise.all([\n ...tags.items.map((item) => {\n return request(deleteRestaurantMealTag, { input: { id: item.id } });\n }),\n ]);\n\n await Promise.all([\n request(deleteRestaurantMeal, { input: { id } }),\n ]);\n\n const matchedIndex = meals.findIndex((meal) => meal.id === id);\n meals.splice(matchedIndex, 1);\n\n setMeals([...meals]);\n setIsLoading(false);\n };\n\n const onUpdate = (data) => {\n const matchedIndex = meals.findIndex(({ id }) => id === data.id);\n global.logger.debug(data, matchedIndex);\n\n if (matchedIndex >= 0) {\n // 餐點修改了, 確認要不要更新訂單\n const oldMeal = meals[matchedIndex];\n if (oldMeal.name !== data.name ||\n oldMeal.cost !== data.cost ||\n oldMeal.price !== data.price ||\n !compareObjects(oldMeal.surcharges, data.surcharges)\n ) {\n setOldMeal(oldMeal);\n setNewMeal(data);\n setOpenUpdateOrderMealDialog(true);\n }\n meals.splice(matchedIndex, 1, data);\n } else {\n meals.unshift(data);\n }\n setMeals([...meals]);\n };\n\n useEffect(() => {\n (async () => {\n const meals = await asyncListAll(getRestaurantMealsByRestaurantByIsActive, { restaurantId });\n\n await Promise.all(meals.map(async (meal) => {\n if (meal.imageS3Keys && meal.imageS3Keys[0]) {\n meal.imageUrl = await Storage.get(meal.imageS3Keys[0]);\n }\n }));\n\n setMeals(meals.sort(sortBy('name')));\n })();\n }, [restaurantId]);\n\n return (\n
\n \n \n {meals.length === 0 && {`尚無${t('餐點')}`}}\n {meals.map(({ id, name, isPublic, description, price, cost, tags, imageS3Keys, imageUrl, surcharges }) => (\n \n \n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n
\n \n \n \n handleDelete(id, name, tags)}\n size={'small'}\n disabled={isLoading}\n >\n \n \n \n \n {name} {isPublic ? '*' : ''}\n \n \n {description}\n \n \n 單價 ${price} 進價 ${cost || 0}\n \n {tags.items.map(({ tag }, index)=>(\n \n ))}\n \n
\n
\n ))}\n
\n \n
);\n}\n\nRestaurantMealGrids.propTypes = {\n restaurantId: PropTypes.string,\n};\n","export const getRestaurantMealsByRestaurantByIsActive = /* GraphQL */ `\n query GetRestaurantMealsByRestaurantByIsActive(\n $restaurantId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantMealFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantMealsByRestaurantByIsActive(\n restaurantId: $restaurantId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n cost\n surcharges {\n name\n price\n }\n previewS3Keys\n imageS3Keys\n tags {\n items {\n id\n restaurantMealId\n tagId\n tag {\n id\n category\n subcategory\n color\n label\n }\n }\n nextToken\n }\n createdAt\n createdBy\n updatedAt\n updatedBy\n }\n nextToken\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n// import Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\n// import { Hub } from 'aws-amplify';\n\nimport {\n listRestaurants,\n getRestaurant,\n getRestaurantsByCountyByIsActive,\n getRestaurantsByClientByIsActive,\n} from 'graphql/queries';\n\nimport LinkButton from 'components/Table/LinkButton';\nimport RestaurantMealGrids from 'components/RestaurantMealGrids';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { sortBy } from 'utilities/sorting';\nimport cache from 'utilities/cache';\n\nexport default function RestaurantMeals({ restaurantId }) {\n const [restaurants, setRestaurants] = useState([]);\n\n // const openRestaurantWindow = (restaurantId) => {\n // Hub.dispatch('winbox', { event: 'restaurant', data: { id: restaurantId } });\n // };\n\n useEffect(() => {\n (async () => {\n if (restaurantId) {\n const { data: { getRestaurant: restaurant } } = await request(getRestaurant, { id: restaurantId });\n setRestaurants([restaurant]);\n\n return;\n }\n\n const clientId = cache.get('app:facilityId');\n\n if (clientId) {\n const restaurants = await asyncListAll(getRestaurantsByClientByIsActive, { clientId });\n setRestaurants(restaurants);\n return;\n }\n\n const location = cache.get('app:location');\n\n const restaurants = location ?\n await asyncListAll(getRestaurantsByCountyByIsActive, { county: location }) :\n await asyncListAll(listRestaurants);\n\n setRestaurants(restaurants.sort(sortBy('name')));\n })();\n }, [restaurantId]);\n\n return (\n \n {restaurants.map(({ id, name })=>(\n \n {/* */}\n {name}\n \n
\n \n
\n ))}\n
);\n}\n\nRestaurantMeals.propTypes = {\n restaurantId: PropTypes.string,\n};\n","const schema = {\n 'type': 'object',\n 'required': [\n 'status', 'name', 'category',\n ],\n 'properties': {\n 'status': {\n 'type': 'string',\n 'title': '狀態',\n 'enum': ['使用中', '已停用'],\n 'enumNames': ['使用中', '已停用'],\n 'default': '使用中',\n },\n 'category': {\n 'type': 'string',\n 'title': '類別',\n 'enum': ['送餐對象'],\n 'enumNames': ['送餐對象'],\n 'default': '送餐對象',\n },\n 'name': {\n 'type': 'string',\n 'title': '名稱',\n },\n 'note': {\n 'type': ['string', 'null'],\n 'title': '備註',\n },\n },\n};\n\nexport default schema;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Auth, Hub } from 'aws-amplify';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Hidden from '@material-ui/core/Hidden';\nimport CustomAuthenticator from 'components/Auth/CustomAuthenticator';\nimport to from 'await-to-js';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n },\n img: {\n maxWidth: '100%',\n maxHeight: `calc(100vh - 116px)`,\n },\n}));\n\nexport default function LandingPage({ iosLink, androidLink, Authenticator, initialAuthState = 'signIn' }) {\n const classes = useStyles();\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [currentAuthState, setCurrentAuthState] = useState('signIn');\n const [innerHeight, setInnerHeight] = useState(window.innerHeight);\n\n let customer;\n if (window.location.hostname.toLowerCase() === 'pingtung.silvergatedelivery.com') {\n customer = 'pingtung';\n }\n\n const authListener = ({ payload: { event, data } }) => {\n switch (event) {\n case 'signIn_view':\n if (data.currentAuthState !== 'signIn') {\n setCurrentAuthState('signIn');\n }\n break;\n case 'signUp_view':\n if (data.currentAuthState !== 'signUp') {\n setCurrentAuthState('signUp');\n }\n break;\n default:\n }\n };\n\n useEffect(() => {\n (async () => {\n const [, cognitoUser] = await to(Auth.currentAuthenticatedUser({ bypassCache: true }));\n if (cognitoUser) {\n setIsLoggedIn(true);\n }\n })();\n Hub.listen('app', authListener);\n const handleResize = () => {\n setInnerHeight(window.innerHeight);\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n let titleImage = '/images/title.png';\n if (customer === 'pingtung') {\n titleImage = '/images/title_pingtung.png';\n }\n\n return (\n \n \n \n \n \"Architecture\"\n \n \n \n \n \n {(currentAuthState === 'signIn' || innerHeight > 1050) && (\n \n \"Title\"\n \n )}\n {!isLoggedIn &&\n \n {Authenticator ?\n :\n \n }\n \n }\n {(currentAuthState === 'signIn' || innerHeight > 1100) && (\n \"Connection\"\n )}\n \n \n \n );\n}\n\nLandingPage.propTypes = {\n iosLink: PropTypes.string,\n androidLink: PropTypes.string,\n Authenticator: PropTypes.func,\n initialAuthState: PropTypes.string,\n};\n","import React, { useEffect, useState } from 'react';\nimport querystring from 'query-string';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport AndroidIcon from '@material-ui/icons/Android';\nimport AppleIcon from '@material-ui/icons/Apple';\n\nexport const apps = {\n client: {\n name: '銀色大門',\n ios: 'https://apps.apple.com/app/id1574458514',\n android: 'https://play.google.com/store/apps/details?id=com.silvergatedelivery.client',\n logo: '/logos/client_logo_256.png',\n },\n deliveryStaff: {\n name: '銀色大門 - 送餐大使端',\n ios: 'https://apps.apple.com/app/id1559972257',\n android: 'https://play.google.com/store/apps/details?id=com.silvergatedelivery.driver',\n logo: '/logos/deliveryStaff_logo_256.png',\n },\n restaurant: {\n name: '銀色大門 - 餐廳端',\n ios: 'https://apps.apple.com/app/id1574537816',\n android: 'https://play.google.com/store/apps/details?id=com.silvergatedelivery.restaurant',\n logo: '/logos/restaurant_logo_256.png',\n },\n};\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(4),\n margin: theme.spacing(2),\n backgroundColor: '#fff',\n },\n}));\n\nexport default function Download() {\n const classes = useStyles();\n const [selectedApps, setSeletedApps] = useState([]);\n\n useEffect(() => {\n const { app: appName } = querystring.parse(window.location.search);\n const matched = apps[appName];\n\n global.logger.debug('navigator.userAgent', navigator.userAgent, apps, matched);\n\n if (!matched) {\n setSeletedApps(Object.values(apps));\n return;\n }\n\n if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {\n window.open(matched.ios, '_self');\n } else\n if (navigator.userAgent.match(/android|Android/i)) {\n window.open(matched.android, '_self');\n } else {\n setSeletedApps([matched]);\n }\n }, []);\n\n return (\n \n \n {selectedApps.map((app, index)=>(\n \n \n \"Logo\"\n \n\n \n }\n href={app.android}\n >\n 安卓版本下載\n \n }\n href={app.ios}\n >\n 蘋果版本下載\n \n \n \n ))}\n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport querystring from 'query-string';\nimport moment from 'moment';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport CustomAuthDialog from 'components/Auth/CustomAuthDialog';\nimport { Auth } from 'aws-amplify';\n\nimport ProcessStatusChip from 'components/ProcessStatusChip';\nimport { listDeleteMyAccountRequestByUsername } from 'graphql/queries';\nimport { createDeleteMyAccountRequest } from 'graphql/mutations';\nimport { asyncListAll, request } from 'utilities/graph';\n\nimport { apps } from '../Download';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n flex: 1,\n padding: theme.spacing(4),\n },\n}));\n\n// This link will be shown on your Google Play store listing, and should:\n// - refer to your app or developer name that is shown on your store listing\n// - prominently feature the steps that users should take to request that their account is deleted\n// - specify the types of data that are deleted or kept, and any additional retention period\n\nexport default function DeleteMyAccount() {\n const classes = useStyles();\n\n const [selectedApp, setSeletedApps] = useState(apps.client);\n const [user, setUser] = useState();\n const [reason, setReason] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [prevRequests, setPrevRequests] = useState([]);\n\n const submitDeletion = async () => {\n setIsLoading(true);\n console.log('submitDeletion');\n\n const { username } = user;\n const now = new Date().toISOString();\n\n const { data: { createDeleteMyAccountRequest: data } } = await request(createDeleteMyAccountRequest, {\n input: {\n username,\n appName: selectedApp.name,\n requestedAt: now,\n status: 'processing',\n reason,\n createdBy: username,\n updatedBy: username,\n },\n });\n\n setPrevRequests([data]);\n setIsLoading(false);\n };\n\n useEffect(() => {\n const { app: appName } = querystring.parse(window.location.search);\n const matched = apps[appName];\n\n if (matched) {\n setSeletedApps(matched);\n }\n\n (async () => {\n const user = await Auth.currentAuthenticatedUser({\n bypassCache: true,\n });\n\n if (user) {\n setUser(user);\n setReason('');\n }\n })();\n }, []);\n\n useEffect(() => {\n if (!user) return;\n\n (async () => {\n const { username } = user;\n const prevRequests = await asyncListAll(listDeleteMyAccountRequestByUsername, {\n username,\n filter: {\n appName: {\n eq: selectedApp.name,\n },\n },\n });\n setPrevRequests(prevRequests);\n })();\n }, [user, selectedApp]);\n\n return (\n \n \n \n \"Logo\"\n \n
\n \n {selectedApp.name}\n \n
\n
\n \n 銀色大門會將以下資料在30個工作天後刪除,並寄送通知至註冊的Email。\n \n \n
    \n
  • 登入資訊 帳號/密碼
  • \n
  • 個人資訊 地址/電話
  • \n
  • GPS資訊 (如果有提供)
  • \n
  • 金融資訊 (如果有提供)
  • \n
\n
\n
\n\n \n {!user &&\n (\n \n 登入確認\n \n )}\n />}\n {user && prevRequests.length === 0 &&\n \n 刪除我的帳號\n \n }\n {user && prevRequests.length > 0 &&\n prevRequests.map((req)=>(\n
\n \n 已申請刪除{selectedApp.name}帳號 ({moment(req.requestedAt).format('YYYY-MM-DD HH:mm:ss')})\n \n \n 狀態:\n \n
\n ))\n }\n
\n
\n
\n );\n}\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport Avatar from '@material-ui/core/Avatar';\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n height: 60,\n borderRadius: 10,\n margin: 8,\n },\n biLogo: {\n border: '5px solid #034E8C',\n width: 150,\n height: 150,\n padding: 10,\n backgroundColor: '#fff',\n },\n logo: {\n border: '5px solid #00913A',\n width: 150,\n height: 150,\n padding: 20,\n backgroundColor: '#fff',\n },\n}));\n\nexport default function CategorySelect({ onComplete }) {\n const { t } = useTranslation();\n const classes = useStyles();\n\n return (\n \n \n {/* */}\n \n \n \n {/* */}\n \n \n {(window.location.hostname === 'develop.silvergatedelivery.com' || window.location.hostname === 'demo.silvergatedelivery.com') &&\n \n 請注意!此為測試環境,並不會真的送出訂單喔!\n }\n \n {\n onComplete('meals');\n }}\n size=\"large\"\n className={classes.button}\n >\n {t('立即送餐')}\n \n {/* {\n onComplete('stuffs');\n }}\n size=\"large\"\n className={classes.button}\n >\n 安排宅配\n */}\n \n \n\n );\n}\n\nCategorySelect.propTypes = {\n onComplete: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport DataForm from 'forms/DataForm';\nimport Grid from '@material-ui/core/Grid';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nimport { getEldersByClientByStatus } from './queries';\nimport { asyncListAll } from 'utilities/graph';\n\nimport schema from './schema';\nimport uiSchema from './uiSchema';\nimport cache from 'utilities/cache';\n\nexport default function ElderInfo({ formData: inFormData, ...props }) {\n const [elders, setElders] = useState([]);\n const [formData, setFormData] = useState();\n const [selectedElder, setSelectedElder] = useState(null);\n\n const createFunc = async (data) => {\n global.logger.debug('createFunc data', data);\n };\n\n useEffect(() => {\n (async () => {\n const clientId = cache.get('app:clientId');\n if (!clientId) {\n setFormData(inFormData);\n return;\n }\n\n const elders = await asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n });\n\n if (inFormData && inFormData.name) {\n if (inFormData.id) {\n const selectedElderIndex = elders.findIndex(({ id }) => id === inFormData.id);\n elders[selectedElderIndex] = inFormData;\n } else {\n elders.push(inFormData);\n }\n setSelectedElder(inFormData);\n setFormData(inFormData);\n } else if (elders[0]) {\n const {\n id,\n name,\n phoneNumber,\n address,\n noteForDelivery,\n noteForMeal,\n noteForHealth,\n } = elders[0];\n setSelectedElder(elders[0]);\n setFormData({\n id,\n name,\n phoneNumber,\n address,\n noteForDelivery,\n noteForMeal,\n noteForHealth,\n });\n }\n setElders(elders);\n })();\n }, [inFormData]);\n\n if (!formData) return null;\n\n return (\n \n {elders && elders.length !== 0 &&\n \n \n {\n if (typeof newValue === 'string') {\n const existingElder = elders.find(({ name }) => name === newValue);\n if (existingElder) {\n setSelectedElder(existingElder);\n const { id, address, name, noteForDelivery, noteForMeal, noteForHealth, phoneNumber } = newValue;\n setFormData({\n id, name, address, noteForDelivery, noteForMeal, noteForHealth, phoneNumber,\n });\n } else {\n const newElder = { name: newValue };\n setElders([...elders, newElder]);\n setSelectedElder(newElder);\n setFormData(newElder);\n }\n } else if (newValue) {\n if (newValue.inputValue) {\n const newElder = { name: newValue.inputValue };\n setElders([...elders, newElder]);\n setSelectedElder(newElder);\n setFormData(newElder);\n } else {\n setSelectedElder(newValue);\n const { id, address, name, noteForDelivery, noteForMeal, noteForHealth, phoneNumber } = newValue;\n setFormData({\n id, name, address, noteForDelivery, noteForMeal, noteForHealth, phoneNumber,\n });\n }\n }\n }}\n filterOptions={(elders, params) => {\n const filtered = elders.filter(({ name }) =>\n name.toLowerCase().includes(params.inputValue.toLowerCase()),\n );\n\n if (params.inputValue !== '') {\n if (!filtered.find(({ name }) => name === params.inputValue)) {\n filtered.push({\n inputValue: params.inputValue,\n name: `新增收餐者:${params.inputValue}`,\n });\n }\n }\n\n return filtered;\n }}\n selectOnFocus\n clearOnBlur\n options={elders}\n getOptionLabel={(option) => {\n if (typeof option === 'string') {\n return option;\n }\n return option.name;\n }}\n renderOption={(elder) => elder.name}\n freeSolo\n renderInput={(params) => }\n />\n \n }\n \n \n {/*
\n {t('運送時間因實際狀況、天氣、車隊派送情形為主。')}
\n {t('運送距離上限:8公里內(以平台計算為主)')}\n
*/}\n \n
\n
\n );\n}\n\nElderInfo.propTypes = {\n data: PropTypes.object,\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n};\n","export const getEldersByClientByStatus = /* GraphQL */ `\n query GetEldersByClientByStatus(\n $clientId: ID\n $status: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelElderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getEldersByClientByStatus(\n clientId: $clientId\n status: $status\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n status\n clientId\n county\n deliveryGroupId\n sortOrder\n name\n nickname\n birthday\n gender\n phoneNumber\n phoneNumber2\n phoneNumber3\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n noteForDelivery\n noteForMeal\n noteForHealth\n }\n nextToken\n }\n }\n`;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\n\nimport FormDialog from 'components/FormDialog';\nimport TagChip from 'components/TagChip';\nimport TextField from '@material-ui/core/TextField';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Link from '@material-ui/core/Link';\n\nexport default function MealItemDialog({ restaurant, meal, onClose, quantity: inQuantity = 1 }) {\n const { t } = useTranslation();\n const [quantity, setQuantity] = useState(inQuantity);\n const [totalPrice, setTotalPrice] = useState(meal.price);\n\n const {\n name,\n imageUrls,\n price,\n tags,\n description,\n } = meal;\n const restaurantName = restaurant.name;\n\n const tagKeys = tags.items.map(({ tag: { category, subcategory, label, color = '' } }) => {\n return `${category}__${subcategory}__${label}__${color}`;\n });\n\n const handleAddMealItem = async () => {\n global.logger.debug('handleAddMealItem', meal);\n\n onClose({\n meal,\n quantity,\n });\n };\n\n return (\n onClose()}\n >\n \n \n {imageUrls && imageUrls[0] ? imageUrls.map((imageUrl) => (\n \n \n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n \n \n )) :\n \n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n \n }\n \n \n \n {name}\n \n \n ${price}\n \n \n \n \n \n \n \n \n \n \n \n 餐點標籤\n \n null}\n renderValue={(selected) => (\n
\n {selected.map((item, index) => {\n const [\n category,\n subcategory,\n label,\n color,\n ] = item.split('__');\n const tag = {\n category,\n subcategory,\n label,\n color,\n };\n return (\n \n );\n })}\n
\n )}\n >\n {tagKeys.map((item) => (\n \n {item}\n \n ))}\n \n
\n
\n \n \n \n 數量\n \n {\n const { value } = e.target;\n setQuantity(value);\n setTotalPrice(parseInt(value) * parseFloat(price));\n }}\n >\n {Array.from(Array(16).keys()).map((item) => (\n \n {item === 0 ? '移出購物車' : item}\n \n ))}\n \n \n \n \n \n {quantity === 0 ? '移出購物車' : `加入購物車 +$${totalPrice}`}\n \n \n\n\n
\n \n );\n}\n\nMealItemDialog.propTypes = {\n restaurant: PropTypes.object.isRequired,\n meal: PropTypes.object.isRequired,\n onClose: PropTypes.func.isRequired,\n quantity: PropTypes.number,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Divider from '@material-ui/core/Divider';\nimport Badge from '@material-ui/core/Badge';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TagChip from 'components/TagChip';\n\nconst useStyles = makeStyles({\n mediaContainer: {\n position: 'relative',\n },\n media: {\n height: 150,\n opacity: 0.1,\n },\n imageContainer: {\n position: 'absolute',\n top: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n },\n img: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n },\n card: {\n cursor: 'pointer',\n height: '100%',\n },\n});\n\nexport default function RestaurantMeals({ restaurant, onMealClick, filters, addedMeals = [] }) {\n const classes = useStyles();\n const [filteredMeals, setFilteredMeals] = useState([]);\n\n useEffect(() => {\n global.logger.debug('filters', filters);\n\n const filtered = restaurant.meals.filter((meal) => {\n let shouldDisplay = true;\n Object.keys(filters).forEach((key) => {\n if (key === 'text') {\n shouldDisplay = [\n meal.name, meal.description,\n meal.tagsString,\n ].some((value) => {\n return value ? value.toLowerCase().includes(filters[key]) : false;\n });\n return;\n }\n const targetValues = filters[key].filter((x) => x);\n if (targetValues.length === 0) {\n return;\n }\n global.logger.debug('key', key, targetValues);\n // compare key to subcategory\n const result = meal.tags.items.some((item) => {\n const tagItem = item[Object.keys(item)[0]];\n if (tagItem.subcategory === key) {\n return targetValues.includes(tagItem.label);\n } else {\n return false;\n }\n });\n if (!result) {\n shouldDisplay = false;\n }\n });\n\n return shouldDisplay;\n });\n\n setFilteredMeals(filtered);\n }, [filters]);\n\n if (filteredMeals.length === 0) {\n return
;\n }\n\n return \n \n {restaurant.name}\n \n \n {\n filteredMeals.map((meal) => {\n const { id, imageUrls, name, price, tags } = meal;\n const imgSrc = (imageUrls && imageUrls[0]) || '/images/meal.webp';\n const quantity = (addedMeals.find((addedMeal) => addedMeal.meal.id === id) || {}).quantity;\n return (\n \n \n \n onMealClick(meal, restaurant)}>\n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n {\n e.target.onerror = null;\n e.target.src = '/images/meal.webp';\n }}\n />\n
\n
\n \n \n \n \n {name}\n \n \n \n \n ${price}\n \n \n
\n\n {tags.items.map(({ tag }, index)=>(\n \n ))}\n \n \n
\n
\n );\n })}\n ;\n}\nRestaurantMeals.propTypes = {\n restaurant: PropTypes.object.isRequired,\n onMealClick: PropTypes.func.isRequired,\n filters: PropTypes.object,\n addedMeals: PropTypes.array,\n};\n\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\n// import { useHistory } from 'react-router-dom';\nimport { Storage } from 'aws-amplify';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport Chip from '@material-ui/core/Chip';\nimport Button from '@material-ui/core/Button';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport distance from '@turf/distance';\nimport { point } from '@turf/helpers';\n\nimport {\n counties,\n countiesGeoJson,\n} from '@silvergatedelivery/constants';\n\nimport { asyncListAll } from 'utilities/graph';\nimport {\n getRestaurantsByCountyByIsActive,\n getRestaurantMealsByRestaurantByIsActive,\n} from './queries';\nimport DataJoinEditorInput from 'components/DataJoinEditor/DataJoinEditorInput';\nimport Loading from 'components/Loading';\nimport { sortBy } from 'utilities/sorting';\nimport MealItemDialog from './MealItemDialog';\nimport cache from 'utilities/cache';\nimport RestaurantMeals from './RestaurantMeals';\nimport { compareObjects } from 'utilities/sorting';\n\nlet selectedLocations = [];\n\nconst addNeighbors = (locations) => {\n const uniqueNeighbors = new Set();\n\n locations.forEach((location) => {\n const { neighbors } = countiesGeoJson.features.find((x) => x.properties.name === location);\n neighbors.forEach((neighbor) => uniqueNeighbors.add(neighbor));\n uniqueNeighbors.add(location);\n });\n\n return [...uniqueNeighbors];\n};\n\nexport default function RestaurantMealList({ formData, onComplete, onStepBack }) {\n // const history = useHistory();\n\n const [restaurants, setRestaurants] = useState([]);\n const [meals, setMeals] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [filters, setFilters] = useState({});\n const [selectedMeal, setSelectedMeal] = useState();\n const [selectedRestaurant, setSelectedRestaurant] = useState();\n const [selectedQuantity, setSelectedQuantity] = useState(1);\n const [locations, setLocations] = useState(\n cache.get('public:menu-elder') ? [cache.get('public:menu-elder').address.county] : [counties[0]]);\n const [addedMeals, setAddedMeals] = useState([]);\n\n const handleFilter = (key) => (values) => {\n global.logger.debug({ key, values });\n\n const newFilters = {\n ...filters,\n [key]: Array.isArray(values) ? values.map(({ label }) => label) : values,\n };\n setFilters(newFilters);\n };\n\n const handleChangeCounty = async (e, values, reason) => {\n global.logger.debug('handleChangeCounty', values, reason);\n setLocations(values);\n cache.set('public:menu-locations', values);\n };\n\n const handleAddMeal = (data) => {\n if (!data) {\n return;\n }\n const { meal, quantity } = data;\n const existingAddedMealIndex = addedMeals.findIndex((addedMeal) => addedMeal.meal.id === meal.id);\n if (existingAddedMealIndex !== -1) {\n const newAddedMeals = JSON.parse(JSON.stringify(addedMeals));\n if (quantity === 0) {\n newAddedMeals.splice(existingAddedMealIndex, 1);\n } else {\n newAddedMeals[existingAddedMealIndex].quantity = quantity;\n }\n setAddedMeals(newAddedMeals);\n } else {\n setAddedMeals([...addedMeals, data]);\n }\n };\n\n const onMealClick = (meal, restaurant) => {\n global.logger.debug('handleAddMeal', meal, restaurant);\n let openMealItemDialog = false;\n if (addedMeals.length !== 0) {\n if (addedMeals[0].meal.restaurantId !== restaurant.id) {\n if (window.confirm('選擇不同餐廳的餐點會重新建立訂單')) {\n setAddedMeals([]);\n openMealItemDialog = true;\n setSelectedQuantity(1);\n } else {\n return;\n }\n } else {\n const existingAddedMeal = addedMeals.find((addedMeal) => addedMeal.meal.id === meal.id);\n openMealItemDialog = true;\n if (existingAddedMeal) {\n setSelectedQuantity(existingAddedMeal.quantity);\n } else {\n setSelectedQuantity(1);\n }\n }\n } else {\n openMealItemDialog = true;\n setSelectedQuantity(1);\n }\n\n if (openMealItemDialog) {\n setSelectedMeal(meal);\n setSelectedRestaurant(restaurant);\n }\n };\n\n useEffect(() => {\n if (locations.length === 0) {\n setRestaurants([]);\n setMeals([]);\n return;\n }\n\n (async () => {\n // 先不要用cache, 因為加入service area後, 用location判斷會出錯\n // const mealCache = cache.get('app:meal-list');\n // if (mealCache &&\n // mealCache.expiredAt > Date.now() &&\n // mealCache.locations &&\n // mealCache.locations.length === locations.length && !mealCache.locations.some((v) => locations.indexOf(v) < 0)\n // ) {\n // global.logger.debug('use cache for restaurants');\n // setRestaurants(mealCache.restaurants);\n // setMeals(mealCache.meals.sort(sortBy('updatedAt', true)));\n // return;\n // }\n\n setIsLoading(true);\n let restaurants = [];\n let meals = [];\n const { address: elderAddress } = cache.get('public:menu-elder') || {};\n const locationsAndNeighbors = addNeighbors(locations);\n\n await Promise.all(locationsAndNeighbors.map(async (county) => {\n const countyRestaurants = await asyncListAll(getRestaurantsByCountyByIsActive, {\n county,\n isActive: {\n eq: 1,\n },\n filter: {\n isPublic: {\n eq: true,\n },\n },\n });\n restaurants = [...restaurants, ...countyRestaurants];\n }));\n\n const nearbyRestaurants = restaurants.filter((restaurant) => {\n if (restaurant.serviceAreas && restaurant.serviceAreas.length !== 0) {\n if (restaurant.serviceAreas.some((area) => compareObjects(area, {\n county: elderAddress.county,\n district: elderAddress.district,\n zipCode: elderAddress.zipCode,\n }))) {\n return true;\n }\n return false;\n }\n const from = point([restaurant.address.lat, restaurant.address.lng]);\n const to = point([elderAddress.lat, elderAddress.lng]);\n const distanceInKm = distance(from, to);\n return distanceInKm <= 8; // 顯示方圓8KM之內的餐廳 // TODO: TBD\n });\n\n await Promise.all(nearbyRestaurants.map(async (restaurant) => {\n const restaurantId = restaurant.id;\n const restaurantMeals = await asyncListAll(getRestaurantMealsByRestaurantByIsActive, {\n restaurantId,\n isActive: {\n eq: 1,\n },\n filter: {\n isPublic: {\n eq: true,\n },\n },\n });\n await Promise.all(restaurantMeals.map(async (item) => {\n if (item.imageS3Keys && item.imageS3Keys[0]) {\n item.imageUrls = await Promise.all(item.imageS3Keys.map((key) => Storage.get(key)));\n }\n // item.restaurant = restaurants.find(({ id }) => id === item.restaurantId);\n item.tagsString = item.tags.items.map((item) => item.tag.label).join(', ');\n }));\n restaurant.meals = restaurantMeals.sort(sortBy('updatedAt', true));\n meals = [...meals, ...restaurantMeals];\n }));\n setRestaurants(nearbyRestaurants);\n setMeals(meals.sort(sortBy('updatedAt', true)));\n\n if (formData && formData.restaurantId) {\n const addedRestaurant = nearbyRestaurants.find(({ id }) => id === formData.restaurantId);\n const addedMeals = [];\n formData.mealItems.forEach((mealItem) => {\n const meal = addedRestaurant.meals.find(({ name }) => name === mealItem.name);\n if (meal) {\n addedMeals.push({\n meal,\n quantity: mealItem.quantity,\n });\n }\n });\n setAddedMeals(addedMeals);\n }\n setIsLoading(false);\n })();\n }, [locations]);\n\n const onSubmit = () => {\n if (addedMeals.length === 0) {\n window.alert('請選擇餐點');\n return;\n }\n const mealCount = addedMeals.reduce((pre, addedMeal) => pre + addedMeal.quantity, 0);\n if (mealCount > 15) {\n window.alert('最多可選擇15份餐點');\n return;\n }\n const { id: restaurantId, name: restaurantName } = restaurants.find(\n (restaurant) => restaurant.id === addedMeals[0].meal.restaurantId,\n );\n\n onComplete({\n mealItems: addedMeals.map(({ meal: { name, price }, quantity }) => ({\n name,\n quantity,\n unitValue: price,\n price: price * quantity,\n })),\n restaurantId,\n restaurantName,\n });\n };\n\n const onBack = () => {\n if (addedMeals && addedMeals.length > 0) {\n const { id: restaurantId, name: restaurantName } = restaurants.find(\n (restaurant) => restaurant.id === addedMeals[0].meal.restaurantId,\n );\n onStepBack({\n mealItems: addedMeals.map(({ meal: { name, price }, quantity }) => ({\n name,\n quantity,\n unitValue: price,\n price: price * quantity,\n })),\n restaurantId,\n restaurantName,\n });\n } else {\n onStepBack();\n }\n };\n\n global.logger.debug('restaurants & meals', { restaurants, meals });\n\n return (\n \n \n {/* \n \n {'餐點'}\n \n */}\n \n \n value.map((option, index) => (\n \n ))\n }\n renderInput={(params) => (\n \n )}\n onChange={(e, values, reason)=>{\n selectedLocations = values;\n if (reason === 'remove-option') {\n handleChangeCounty(e, selectedLocations);\n }\n }}\n onClose={(e, reason) => {\n global.logger.debug('onClose', reason);\n handleChangeCounty(e, selectedLocations);\n }}\n disabled={true}\n />\n \n \n {\n handleFilter('text')(e.target.value.toLowerCase());\n }}\n fullWidth\n disabled={isLoading}\n />\n \n \n {}}\n disabled={isLoading}\n showHelperText={false}\n variant=\"outlined\"\n loadOnOpen={true}\n />\n \n \n {}}\n disabled={isLoading}\n showHelperText={false}\n variant=\"outlined\"\n loadOnOpen={true}\n />\n \n \n \n {selectedMeal &&\n {\n handleAddMeal(data);\n setSelectedMeal();\n setSelectedRestaurant();\n setSelectedQuantity(1);\n }}\n />\n }\n {isLoading ? : restaurants.map((restaurant) => {\n return ;\n })}\n {!isLoading &&\n \n \n \n 重新設定地址\n \n \n 完成餐點選擇\n \n \n \n }\n {!isLoading && meals.length === 0 &&\n \n

\n 目前尚未開放此區域或是已超出配送範圍,請加入銀色大門詢問客服人員申請。
\n Line:@oqm7360u
\n

\n \n 官方Line好友連結\n \n
}\n
\n \n );\n}\n\nRestaurantMealList.propTypes = {\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n onStepBack: PropTypes.func,\n};\n","export const getRestaurantMealsByRestaurantByIsActive = /* GraphQL */ `\n query GetRestaurantMealsByRestaurantByIsActive(\n $restaurantId: ID\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantMealFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantMealsByRestaurantByIsActive(\n restaurantId: $restaurantId\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n restaurantId\n isActive\n isPublic\n name\n description\n price\n previewS3Keys\n imageS3Keys\n createdAt\n # createdBy\n updatedAt\n # updatedBy\n tags {\n items {\n tag {\n category\n subcategory\n color\n label\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getRestaurantsByCountyByIsActive = /* GraphQL */ `\n query GetRestaurantsByCountyByIsActive(\n $county: String\n $isActive: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelRestaurantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getRestaurantsByCountyByIsActive(\n county: $county\n isActive: $isActive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n # restaurantOwnerId\n isActive\n isPublic\n county\n # clientId\n category\n name\n description\n phoneNumber\n address {\n country\n county\n district\n street\n zipCode\n lat\n lng\n note\n }\n notes\n previewS3Keys\n imageS3Keys\n openingHours {\n sunday {\n startTime\n endTime\n }\n monday {\n startTime\n endTime\n }\n tuesday {\n startTime\n endTime\n }\n wednesday {\n startTime\n endTime\n }\n thursday {\n startTime\n endTime\n }\n friday {\n startTime\n endTime\n }\n saturday {\n startTime\n endTime\n }\n }\n serviceAreas {\n county\n district\n zipCode\n }\n # isAddedToPandago\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # tags {\n # items {\n # id\n # restaurantId\n # tagId\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # restaurant {\n # id\n # owner\n # restaurantOwnerId\n # isActive\n # county\n # clientId\n # category\n # name\n # description\n # phoneNumber\n # notes\n # previewS3Keys\n # imageS3Keys\n # isAddedToPandago\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # }\n # tag {\n # id\n # category\n # subcategory\n # color\n # label\n # createdAt\n # createdBy\n # updatedAt\n # updatedBy\n # }\n # }\n # nextToken\n # }\n }\n nextToken\n }\n }\n`;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport DoneIcon from '@material-ui/icons/Done';\nimport Backdrop from '@material-ui/core/Backdrop';\n\nexport default function CashButton({\n onComplete,\n disabled,\n reportLoading,\n}) {\n const [isLoading, setIsLoading] = useState(false);\n\n const handleClick = async () => {\n setIsLoading(true);\n reportLoading(true);\n try {\n onComplete({});\n } catch (e) {\n global.logger.error(e);\n } finally {\n setTimeout(() => {\n setIsLoading(false);\n reportLoading(false);\n }, 1000);\n }\n };\n\n return (\n
\n \n 確認訂單(現金付款)\n \n {isLoading && \n \n }\n \n
\n );\n}\n\nCashButton.propTypes = {\n disabled: PropTypes.bool,\n onComplete: PropTypes.func,\n redirectPath: PropTypes.string,\n reportLoading: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n// import { makeStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Link from '@material-ui/core/Link';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport { useHistory } from 'react-router-dom';\n\nimport { formatAddress } from 'utilities/format';\n// import Directions from 'components/Map/Directions';\nimport cache from 'utilities/cache';\nimport CustomAuthDialog from 'components/Auth/CustomAuthDialog';\n// import CreditCard from 'components/Payment/CreditCard';\nimport LinePayButton from 'components/Payment/LinePayButton';\nimport NewebPayButton from 'components/Payment/NewebPayButton';\nimport CashButton from 'components/Payment/CashButton';\nimport { request, asyncListAll } from 'utilities/graph';\nimport { quoteOrder, createElder, updateElder, createElderTag, clientCreateOrder, individualClientCreateOrder } from 'graphql/mutations';\nimport { getEldersByClientByStatus, getUser, getRestaurant, getRestaurantHolidayByRestaurantByYear } from 'graphql/queries';\nimport { Colors } from '@silvergatedelivery/constants';\nimport DataJoinEditorInput from 'components/DataJoinEditor/DataJoinEditorInput';\nimport moment from 'moment';\nimport InvoiceInput from './InvoiceInput';\nimport { TIME_ZONE } from '@silvergatedelivery/constants';\nimport { compareObjects } from 'utilities/sorting';\n\nconst ENABLE_PAYMENT = false; // TODO: put in client setting?\n\nconst DATE_OPTIONS = Array(14).fill('').map((i, index) => {\n return moment().add(index + 1, 'days').format('YYYY/MM/DD');\n});\n\nconst TIME_OPTIONS_LUNCH = [\n '10:00-11:00',\n '11:00-12:00',\n '12:00-13:00',\n '13:00-14:00',\n];\n\nconst TIME_OPTIONS_DINNER = [\n '16:00-17:00',\n '17:00-18:00',\n '18:00-19:00',\n];\n\nconst dayMapping = [\n 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday',\n];\n\nexport default function CompleteOrder({ onStepBack }) {\n const { t } = useTranslation();\n const history = useHistory();\n const [order, setOrder] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [agreeTerms, setAgreeTerms] = useState(false);\n const [agreeCancelInvoice, setAgreeCancelInvoice] = useState(false);\n const [invoice, setInvoice] = useState({\n type: 'individual',\n email: '',\n carrier: '',\n title: '',\n taxIdNumber: '',\n });\n const [date, setDate] = useState(DATE_OPTIONS[0]);\n const [timeSlot, setTimeSlot] = useState(TIME_OPTIONS_LUNCH[0]);\n const [restaurant, setRestaurant] = useState();\n const [restaurantHolidays, setRestaurantHolidays] = useState();\n\n const getRestaurantAndHolidays = async (restaurantId) => {\n const start = moment().tz(TIME_ZONE).year();\n const end = start + 1;\n const promises = [\n await asyncListAll(getRestaurantHolidayByRestaurantByYear, {\n restaurantId,\n year: {\n between: [start, end],\n },\n }),\n await request(getRestaurant, { id: restaurantId }),\n ];\n const [holidays, { data: { getRestaurant: restaurant } }] = await Promise.all(promises);\n setRestaurant(restaurant);\n setRestaurantHolidays(holidays);\n };\n\n const restaurantClosed = (dateToCheck) => {\n const dateItem = moment(dateToCheck).tz(TIME_ZONE);\n const date = dateItem.format('YYYY-MM-DD');\n const day = dateItem.day();\n\n if (restaurantHolidays && restaurantHolidays.length !== 0) {\n const year = dateItem.year();\n const holidays = restaurantHolidays.find(\n (restaurantHoliday) => restaurantHoliday.year === year,\n );\n if (holidays && holidays.closedDays.length !== 0) {\n if (holidays.closedDays.includes(date)) {\n return true;\n }\n }\n }\n if (restaurant && restaurant.openingHours) {\n const { openingHours } = restaurant;\n if (Object.keys(openingHours).every((key) => openingHours[key].length === 0)) {\n return false;\n }\n if (openingHours[dayMapping[day]].length === 0) {\n return true;\n }\n }\n return false;\n };\n\n const updateOrder = (toUpdateProps = {}) => {\n // global.logger.debug('updateOrder', toUpdateProps);\n\n const updatedOrder = Object.assign(order, toUpdateProps);\n\n setOrder({ ...updatedOrder });\n cache.set('public:menu-order', updatedOrder);\n\n global.logger.debug('order', updatedOrder);\n };\n\n const updateOrderDate = (newDate) => {\n const toUpdateProps = {\n date: newDate,\n deliveryBy: moment(`${newDate} ${timeSlot.split('-')[0]}`).tz(TIME_ZONE).toISOString(),\n };\n updateOrder(toUpdateProps);\n setDate(newDate);\n };\n\n const updateOrderTimeSlot = (newTimeSlot) => {\n const toUpdateProps = {\n timeSlot: newTimeSlot,\n deliveryBy: moment(`${date} ${newTimeSlot.split('-')[0]}`).tz(TIME_ZONE).toISOString(),\n };\n updateOrder(toUpdateProps);\n setTimeSlot(newTimeSlot);\n };\n\n const handleComplete = async (transaction) => {\n setIsLoading(true);\n global.logger.debug({ transaction, order, invoice });\n\n const username = cache.get('app:username');\n let clientId = cache.get('app:clientId');\n if (!clientId) {\n const { data: { getUser: existingUser } } = await request(getUser, { username });\n clientId = existingUser.clientId;\n }\n\n const { id: transactionId } = transaction;\n\n const {\n orderQuoteId,\n restaurantId,\n noteForDelivery,\n noteForMeal,\n noteForHealth,\n note,\n address,\n elderName,\n elderPhoneNumber,\n elderHealthTags,\n deliveryBy,\n mealItems,\n elderId: selectedElderId,\n mealPrice,\n } = order;\n\n let elderId = selectedElderId;\n let needCreateElder = false;\n let needUpdateElder = false;\n if (elderId) {\n const existingElders = await asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n });\n const matched = existingElders.find(({ id }) => id === elderId);\n if (matched) {\n if (!compareObjects(matched.address, address)) {\n needCreateElder = true;\n } else if (matched.name !== elderName) {\n needCreateElder = true;\n } else if (matched.noteForDelivery !== noteForDelivery ||\n matched.noteForMeal !== noteForMeal ||\n matched.noteForHealth !== noteForHealth ||\n matched.phoneNumber !== elderPhoneNumber\n ) {\n needUpdateElder = true;\n }\n } else {\n // 剛好被停用?\n needUpdateElder = true;\n }\n } else {\n needCreateElder = true;\n }\n if (needUpdateElder) {\n await request(updateElder, {\n input: {\n id: elderId,\n updatedBy: username,\n phoneNumber: elderPhoneNumber,\n noteForDelivery,\n noteForMeal,\n noteForHealth,\n },\n }, 'AMAZON_COGNITO_USER_POOLS');\n } else if (needCreateElder) {\n const { data: { createElder: { id } } } = await request(createElder, {\n input: {\n status: '使用中',\n clientId,\n county: address.county,\n createdBy: username,\n updatedBy: username,\n username: 'N/A',\n name: elderName,\n phoneNumber: elderPhoneNumber,\n address,\n noteForDelivery,\n noteForMeal,\n noteForHealth,\n note,\n isAllowedToEnterHome: 0,\n isDisadvantaged: 0,\n },\n }, 'AMAZON_COGNITO_USER_POOLS');\n\n elderId = id;\n\n // Update elder tags\n global.logger.debug('elderHealthTags', elderHealthTags);\n await Promise.all((elderHealthTags || []).map(async (tagItem) => {\n if (tagItem && tagItem.id) {\n const joinData = {\n tagId: tagItem.id,\n elderId,\n createdBy: username,\n updatedBy: username,\n };\n\n await request(createElderTag, { input: joinData });\n }\n }));\n }\n\n const getInvoiceSetting = () => {\n if (!ENABLE_PAYMENT) {\n return;\n }\n const { type, email, carrier, title, taxIdNumber } = invoice;\n return {\n type,\n email,\n carrier: (type === 'individual')? carrier : '',\n title: type === 'enterprise' ? title : '',\n taxIdNumber: type === 'enterprise' ? taxIdNumber : '',\n };\n };\n\n if (ENABLE_PAYMENT) {\n const input = {\n orders: [{\n orderQuoteId,\n transactionId,\n clientId,\n restaurantId,\n elderId,\n category: '送餐',\n deliveryDatetimes: [deliveryBy],\n noteForDelivery,\n noteForMeal,\n note,\n total: mealPrice,\n mealItems: mealItems.map((mealItem) => ({\n name: mealItem.name,\n price: mealItem.price,\n quantity: mealItem.quantity,\n })),\n invoiceSetting: getInvoiceSetting(),\n source: 'web',\n }],\n };\n const res = await request(clientCreateOrder, { input });\n global.logger.debug(res);\n } else {\n const input = {\n orders: [{\n orderQuoteId,\n restaurantId,\n elderId,\n category: '送餐',\n deliveryDatetimes: [deliveryBy],\n noteForDelivery,\n noteForMeal,\n note,\n total: mealPrice,\n mealItems: mealItems.map((mealItem) => ({\n name: mealItem.name,\n price: mealItem.price,\n quantity: mealItem.quantity,\n })),\n }],\n invoiceSetting: getInvoiceSetting(),\n transactionId: transactionId,\n individualId: clientId,\n facilityId: restaurant.clientId, // TODO\n source: 'web',\n };\n const res = await request(individualClientCreateOrder, { input });\n global.logger.debug(res);\n }\n\n cache.purge('public:menu-');\n history.push(`/client/myOrders`);\n setIsLoading(false);\n };\n\n const isLoggedIn = cache.get('app:username') ? true : false;\n useEffect(() => {\n if (isLoggedIn) {\n const email = cache.get('app:email');\n if (invoice.email === '') {\n setInvoice({\n ...invoice,\n email,\n });\n }\n }\n }, [isLoggedIn]);\n\n useEffect(() => {\n if (!order || isLoading || !restaurant) return;\n\n const { restaurantId, address } = order;\n\n if (order.errorMessage &&\n order.quoteParams &&\n order.quoteParams.addressCounty === address.county &&\n order.quoteParams.addressZipCode === address.zipCode &&\n order.quoteParams.addressDistrict === address.district &&\n order.quoteParams.addressStreet === address.street &&\n order.quoteParams.restaurantId === restaurantId\n ) {\n return;\n }\n\n if (order.distance) return;\n\n (async () => {\n setIsLoading(true);\n\n const params = {\n input: {\n clientId: restaurant.clientId, // TODO\n restaurantId,\n addressCounty: address.county,\n addressZipCode: address.zipCode,\n addressDistrict: address.district,\n addressStreet: address.street,\n },\n };\n const {\n data: {\n quoteOrder: {\n data: {\n orderQuoteId,\n code,\n distance,\n deliveryStaffFee,\n startAddress,\n endAddress,\n message,\n },\n },\n },\n } = await request(quoteOrder, params);\n\n if (code === 'SUCCESS') {\n updateOrder({\n orderQuoteId,\n distance,\n deliveryStaffFee,\n startAddress,\n endAddress,\n subTotal: order.mealPrice + deliveryStaffFee,\n errorMessage: '',\n quoteParams: {},\n });\n } else {\n global.logger.debug({ params, message });\n updateOrder({\n errorMessage: '送餐地址有誤或距離過遠,請更新後重試。',\n quoteParams: params,\n });\n }\n\n setIsLoading(false);\n })();\n }, [order, restaurant]);\n\n useEffect(() => {\n (async () => {\n const {\n id: elderId,\n name: elderName,\n phoneNumber: elderPhoneNumber,\n address,\n noteForDelivery,\n noteForMeal,\n noteForHealth,\n } = cache.get('public:menu-elder');\n const {\n restaurantId,\n mealItems,\n restaurantName,\n } = cache.get('public:menu-meals');\n const exitingOrder = cache.get('public:menu-order') || {};\n\n if (exitingOrder.restaurantId !== restaurantId ||\n exitingOrder.address.lat !== address.lat ||\n exitingOrder.address.lng !== address.lng) {\n exitingOrder.distance = undefined;\n exitingOrder.deliveryStaffFee = 0;\n }\n const mealPrice = mealItems.reduce((pre, { price }) => pre + price, 0);\n const order = {\n distance: undefined,\n deliveryFee: 0,\n startAddress: '',\n endAddress: '',\n date,\n timeSlot,\n deliveryBy: moment(`${date} ${timeSlot.split('-')[0]}`).tz(TIME_ZONE).toISOString(),\n ...exitingOrder,\n elderId,\n elderName,\n elderPhoneNumber,\n noteForDelivery,\n noteForMeal,\n noteForHealth,\n restaurantId,\n restaurantName,\n address,\n mealItems,\n mealPrice,\n subTotal: mealPrice + (exitingOrder.deliveryStaffFee || 0),\n errorMessage: '',\n };\n\n if (!order.elderName) {\n const clientId = cache.get('app:clientId');\n if (clientId) {\n const elders = await asyncListAll(getEldersByClientByStatus, {\n clientId,\n status: { eq: '使用中' },\n });\n if (elders.length > 0) {\n order.elderName = elders[0].name;\n order.elderPhoneNumber = elders[0].phoneNumber;\n }\n }\n }\n\n setOrder(order);\n if (exitingOrder.date) {\n setDate(exitingOrder.date);\n }\n if (exitingOrder.timeSlot) {\n setTimeSlot(exitingOrder.timeSlot);\n }\n\n const exitingInvoice = cache.get('public:menu-invoice');\n if (exitingInvoice) {\n setInvoice({ invoice, ...exitingInvoice });\n }\n await getRestaurantAndHolidays(restaurantId);\n })();\n }, []);\n\n const onInvoiceChange = (invoice) => {\n setInvoice(invoice);\n cache.set('public:menu-invoice', invoice);\n };\n\n if (!order) return null;\n\n // global.logger.debug('order', order);\n\n const invoiceValid = () => {\n if (invoice.type === 'individual') {\n if (invoice.email.length === 0) {\n return false;\n }\n } else if (invoice.type === 'enterprise') {\n if (invoice.email.length === 0 || invoice.title.length === 0 || invoice.taxIdNumber.length === 0) {\n return false;\n }\n }\n return true;\n };\n\n const timeInSlot = (startTime, endTime, toCheck) => {\n const toMinutes = (time) => {\n const [hours, minutes] = time.split(':').map(Number);\n return hours * 60 + minutes;\n };\n return toMinutes(toCheck) >= toMinutes(startTime) && toMinutes(toCheck) <= toMinutes(endTime);\n };\n\n const getTimeSlotOptions = (defaultTimeSlotOptions) => {\n let filteredOptions = defaultTimeSlotOptions;\n if (!restaurant || !restaurant.openingHours ||\n Object.keys(restaurant.openingHours).every((key) => restaurant.openingHours[key].length === 0)) {\n return filteredOptions;\n }\n const day = moment(date).tz(TIME_ZONE).day();\n\n if (restaurant.openingHours[dayMapping[day]].length === 0) {\n return [];\n } else {\n filteredOptions = defaultTimeSlotOptions.filter((option) => {\n const [slotStart, slotEnd] = option.split('-');\n if (restaurant.openingHours[dayMapping[day]].some((openingHours)=> {\n if (timeInSlot(openingHours.startTime, openingHours.endTime, slotStart) ||\n timeInSlot(openingHours.startTime, openingHours.endTime, slotEnd)) {\n return true;\n }\n return false;\n })) {\n return true;\n }\n return false;\n });\n }\n\n return filteredOptions;\n };\n\n const lunchTimeSlotOptions = getTimeSlotOptions(TIME_OPTIONS_LUNCH);\n const dinnerTimeSlotOptions = getTimeSlotOptions(TIME_OPTIONS_DINNER);\n\n const restaurantClosedOnDateSelected = restaurantClosed(date);\n const restaurantClosedAtTimeSlotSelected = !lunchTimeSlotOptions.includes(timeSlot) && !dinnerTimeSlotOptions.includes(timeSlot);\n\n const formDateInvalid = () => {\n if (ENABLE_PAYMENT) {\n return isLoading || !order.elderName || !order.elderPhoneNumber || !agreeTerms ||\n !agreeCancelInvoice || !invoiceValid() || restaurantClosedOnDateSelected || restaurantClosedAtTimeSlotSelected;\n }\n return isLoading || !order.elderName || !order.elderPhoneNumber || restaurantClosedOnDateSelected || restaurantClosedAtTimeSlotSelected;\n };\n\n return (\n \n {/* {order.startAddress && order.endAddress && \n \n } */}\n \n \n 訂購內容\n \n \n \n \n 送餐地址\n \n \n {formatAddress(order.address, { ignoreCountry: true, includeZipCode: false, ignoreNote: true })}\n \n \n \n \n {t('餐廳')}\n \n \n {order.restaurantName}\n \n \n \n {order.mealItems.map(({ name, price, quantity }) => (\n \n \n {name} x {quantity}\n \n \n ${price}\n \n \n ))}\n \n \n \n 商品小計\n \n \n ${order.mealPrice}\n \n \n \n \n {t('配送費用')}\n \n {order.distance ? \n {`$${order.deliveryStaffFee}`}\n : \n {'計算中'}\n }\n \n \n \n 訂單總金額\n \n \n ${order.subTotal}\n \n \n {order.errorMessage &&\n \n \n {order.errorMessage}\n \n }\n {!order.errorMessage &&\n <>\n \n \n 送餐時間\n \n \n \n \n \n 日期\n \n {\n updateOrderDate(e.target.value);\n }}\n autoFocus\n >\n {moment().format('YYYY/MM/DD')}\n {DATE_OPTIONS.map((item) => {\n const disabled = restaurantClosed(item);\n return (\n \n {disabled ? `${item} (未營業)` : item}\n \n );\n })}\n \n {restaurantClosedOnDateSelected && '請選擇餐廳營業日期'}\n \n \n \n \n \n 時段\n \n {\n updateOrderTimeSlot(e.target.value);\n }}\n >\n 午餐\n {lunchTimeSlotOptions.map((item) => (\n \n {item}\n \n ))}\n 晚餐\n {dinnerTimeSlotOptions.map((item) => (\n \n {item}\n \n ))}\n \n {restaurantClosedAtTimeSlotSelected && '請選擇餐廳營業時段'}\n \n \n \n \n 送餐資料\n \n \n \n {\n updateOrder({ elderName: e.target.value });\n const cachedElder = cache.get('public:menu-elder');\n cache.set('public:menu-elder', { ...cachedElder, name: e.target.value });\n }}\n fullWidth\n required\n error={!order.elderName}\n helperText={!order.elderName ? '必填' : ''}\n />\n \n \n {\n updateOrder({ elderPhoneNumber: e.target.value });\n const cachedElder = cache.get('public:menu-elder');\n cache.set('public:menu-elder', { ...cachedElder, phoneNumber: e.target.value });\n }}\n fullWidth\n required\n error={!order.elderPhoneNumber}\n helperText={!order.elderPhoneNumber ? '必填' : ''}\n />\n \n {ENABLE_PAYMENT &&\n updateOrder({ elderHealthTags: newTags })}\n onUpdateOptions={()=>{}}\n disabled={isLoading}\n showHelperText={false}\n freeSolo={false}\n // variant=\"outlined\"\n fullWidth\n loadOnOpen={true}\n />\n }\n {ENABLE_PAYMENT &&\n {\n updateOrder({ noteForHealth: e.target.value });\n const cachedElder = cache.get('public:menu-elder');\n cache.set('public:menu-elder', { ...cachedElder, noteForHealth: e.target.value });\n }}\n fullWidth\n multiline\n />\n }\n {ENABLE_PAYMENT &&\n {\n updateOrder({ noteForMeal: e.target.value });\n const cachedElder = cache.get('public:menu-elder');\n cache.set('public:menu-elder', { ...cachedElder, noteForMeal: e.target.value });\n }}\n fullWidth\n multiline\n />\n }\n \n {\n updateOrder({ noteForDelivery: e.target.value });\n const cachedElder = cache.get('public:menu-elder');\n cache.set('public:menu-elder', { ...cachedElder, noteForDelivery: e.target.value });\n }}\n fullWidth\n multiline\n />\n \n {isLoggedIn && ENABLE_PAYMENT && (\n <>\n \n \n \n 發票資料\n \n \n \n \n \n \n \n \n {\n setAgreeCancelInvoice(e.target.checked);\n }}\n />}\n label={\n
\n 我同意辦理退貨時由銀色大門代為處理電子發票以加速退貨退款作業\n
}\n />\n
\n {!agreeCancelInvoice && (\n \n \n 請您同意辦理退貨時由銀色大門代為處理電子發票以加速退貨退款作業\n \n \n )}\n \n {\n setAgreeTerms(e.target.checked);\n }}\n />}\n label={\n
\n 我同意\n \n 隱私權及保護政策\n \n 與\n \n 退貨退款政策\n \n
}\n />\n
\n {!agreeTerms && (\n \n \n 請您同意私權及保護政策與退貨退款政策\n \n \n )}\n
\n \n \n 付款方式\n \n \n \n \n ({\n name,\n qty: quantity,\n unit: '份',\n unitValue,\n subTotal: price,\n })),\n {\n name: '送餐費用',\n qty: 1,\n unit: '次',\n unitValue: order.deliveryStaffFee,\n subTotal: order.deliveryStaffFee,\n }],\n }}\n redirectPath={'/menu'}\n onComplete={handleComplete}\n reportLoading={(value) => {\n setIsLoading(value);\n }}\n />\n \n \n ({\n name,\n qty: quantity,\n unit: '份',\n unitValue,\n subTotal: price,\n })),\n {\n name: '送餐費用',\n qty: 1,\n unit: '次',\n unitValue: order.deliveryStaffFee,\n subTotal: order.deliveryStaffFee,\n }],\n }}\n redirectPath={'/menu'}\n clientBackPath={'/menu'}\n email={invoice.email}\n onComplete={handleComplete}\n reportLoading={(value) => {\n setIsLoading(value);\n }}\n />\n \n \n \n )}\n \n onStepBack()}\n disabled={isLoading}\n >\n \n 重新選擇餐點\n \n {\n setIsLoading(value);\n }}\n hidden\n />\n \n {!isLoggedIn && (\n \n (\n \n 登入\n \n )}\n />\n  \n (\n \n 還不是會員?點此註冊\n \n )}\n />\n \n )}\n \n }\n
\n );\n}\n\nCompleteOrder.propTypes = {\n formData: PropTypes.object,\n onComplete: PropTypes.func,\n onStepBack: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport Container from '@material-ui/core/Container';\nimport Paper from '@material-ui/core/Paper';\nimport StepButton from '@material-ui/core/StepButton';\n// import Grid from '@material-ui/core/Grid';\n\nimport CategorySelect from './CategorySelect';\nimport ElderInfo from './ElderInfo';\nimport RestaurantMealList from './RestaurantMealList';\n// import DateSelect from './DateSelect';\nimport CompleteOrder from './CompleteOrder';\nimport cache from 'utilities/cache';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n padding: 0,\n },\n button: {\n marginRight: theme.spacing(1),\n },\n instructions: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n paper: {\n // padding: theme.spacing(2),\n paddingBottom: theme.spacing(4),\n borderRadius: 0,\n },\n}));\n\nexport default function HorizontalLinearStepper() {\n const { t } = useTranslation();\n const classes = useStyles();\n const [activeStep, setActiveStep] = React.useState(0);\n const [hasInit, setHasInit] = useState(false);\n\n function getSteps() {\n return [\n {\n key: 'category',\n label: '首頁',\n component: CategorySelect,\n },\n {\n key: 'elder',\n label: '地址',\n component: ElderInfo,\n },\n {\n key: 'meals',\n label: t('餐點'),\n component: RestaurantMealList,\n },\n {\n key: 'order',\n label: '完成訂單',\n component: CompleteOrder,\n },\n ];\n }\n\n // const [skipped, setSkipped] = React.useState(new Set());\n const steps = getSteps();\n\n // const isStepSkipped = (step) => {\n // return skipped.has(step);\n // };\n\n // const handleNext = () => {\n // let newSkipped = skipped;\n // if (isStepSkipped(activeStep)) {\n // newSkipped = new Set(newSkipped.values());\n // newSkipped.delete(activeStep);\n // }\n\n // setActiveStep((prevActiveStep) => prevActiveStep + 1);\n // setSkipped(newSkipped);\n // };\n\n // const handleBack = () => {\n // setActiveStep((prevActiveStep) => prevActiveStep - 1);\n // };\n\n // const handleReset = () => {\n // setActiveStep(0);\n // };\n useEffect(() => {\n if (hasInit) return;\n\n let activeStep = 0;\n\n steps.forEach((item, index) => {\n const cacheKey = `public:menu-${item.key}`;\n const isActivatedStep = cache.get(cacheKey) ? true : false;\n if (isActivatedStep) {\n activeStep = index;\n }\n });\n\n if (activeStep > 0) {\n const nextStep = activeStep + 1 < steps.length ? activeStep + 1 : activeStep;\n setActiveStep(nextStep);\n }\n setHasInit(true);\n }, [steps, hasInit]);\n\n useEffect(() => {\n window.scrollTo({ top: 0 });\n }, [activeStep]);\n\n return (\n \n \n {steps.map(({ label }, index) => {\n const stepProps = {};\n {/* const labelProps = {}; */}\n return (\n \n {/* {label} */}\n \n {label}\n \n\n \n );\n })}\n \n \n {steps.map((item, index) => {\n if (activeStep !== index) return null;\n\n const cacheKey = `public:menu-${item.key}`;\n const formData = cache.get(cacheKey) || {};\n\n return (
\n {\n if (activeStep === index) {\n cache.set(`public:menu-${item.key}`, data);\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n }}\n onStepBack={(data) => {\n if (activeStep === index) {\n if (data) {\n cache.set(`public:menu-${item.key}`, data);\n }\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n }\n }}\n />\n
);\n })}\n
\n
\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Authenticator,\n useAuthenticator,\n CheckboxField,\n Autocomplete,\n TextField,\n} from '@aws-amplify/ui-react';\nimport Typography from '@material-ui/core/Typography';\nimport Grid from '@material-ui/core/Grid';\nimport Link from '@material-ui/core/Link';\nimport querystring from 'query-string';\nimport { Auth, Hub, I18n } from 'aws-amplify';\nimport { dict } from 'i18n/Amplify';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport {\n // Colors,\n // SHORT_NAME,\n // authErrorCodes,\n counties,\n} from '@silvergatedelivery/constants';\nimport cache from 'utilities/cache';\n\nconst useStyles = makeStyles((theme) => ({\n authenticator: {\n '& .amplify-tabs': {\n display: 'none',\n },\n },\n}));\n\nexport default function FacilityAuthenticator({\n children = ,\n initialAuthState: inAuthState,\n currentAuthState,\n}) {\n const classes = useStyles();\n const [authState, setAuthState] = useState();\n\n useEffect(() => {\n const facilityDic = JSON.parse(JSON.stringify(dict));\n facilityDic.zh['Create Account'] = '申請機構帳戶';\n facilityDic.zh['Enter your Name'] = '機構名稱';\n I18n.putVocabularies(facilityDic);\n }, []);\n\n const components = {\n SignUp: {\n FormFields() {\n const { validationErrors } = useAuthenticator();\n Hub.dispatch('app', { event: 'signUp_view', data: { currentAuthState } });\n\n return (\n \n \n {\n cache.set('app:contact', e.currentTarget.value || '');\n }}\n />\n {\n return {\n id: item,\n label: item,\n };\n })}\n placeholder=\"所在縣市\"\n onSelect={(option)=>{\n cache.set('app:location', option.id);\n }}\n />\n\n \n 我同意\n \n 隱私權及保護政策\n \n 與\n \n 會員服務條款\n \n
}\n />\n \n );\n },\n },\n };\n\n const services = {\n async validateCustomSignUp(formData) {\n if (!formData.acknowledgement) {\n return {\n acknowledgement: '您必須同意隱私權及保護政策與會員服務條款',\n };\n }\n },\n async handleSignUp(formData) {\n const {\n username,\n password,\n attributes: {\n name,\n phone_number: phoneNumber,\n },\n } = formData;\n cache.set('app:phoneNumber', phoneNumber);\n\n const email = username.toLowerCase();\n const signUpResult = await Auth.signUp({\n username: email,\n password,\n attributes: {\n name,\n email,\n },\n autoSignIn: {\n enabled: true,\n },\n });\n\n global.logger.debug('signUp', signUpResult);\n\n cache.set('app:isNewRegisteredFacilityAdmin', 'yes');\n\n return signUpResult;\n },\n };\n\n const formFields = {\n signUp: {\n username: {\n label: '電子信箱',\n isRequired: true,\n order: 1,\n },\n password: {\n label: '密碼',\n isRequired: false,\n order: 2,\n },\n confirm_password: {\n label: '確認密碼',\n order: 3,\n },\n name: {\n label: '機構名稱',\n isRequired: true,\n order: 4,\n },\n phone_number: {\n label: '機構電話',\n isRequired: true,\n order: 5,\n dialCodeList: ['+886'],\n },\n },\n };\n\n useEffect(() => {\n setAuthState(null);\n\n setTimeout(() => {\n const { state } = querystring.parse(window.location.search);\n setAuthState(state || inAuthState || 'signUp');\n });\n }, [inAuthState]);\n\n if (!authState) return null;\n\n return (\n \n \n \n 申請機構帳戶\n \n \n \n \n {() => children}\n \n \n \n );\n}\n\nFacilityAuthenticator.propTypes = {\n children: PropTypes.any,\n initialAuthState: PropTypes.string,\n currentAuthState: PropTypes.string,\n};\n","import React from 'react';\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport HomeIcon from '@material-ui/icons/Home';\nimport StorefrontIcon from '@material-ui/icons/Storefront';\n\n// import Blogs from './Blogs/Blogs';\n// import Blog from './Blogs/Blog';\nimport Download from './Download';\nimport DeleteMyAccount from './DeleteMyAccount';\nimport LandingPage from './LandingPage';\nimport Menu from './Menu/Menu';\nimport Terms from 'components/Terms';\nimport FacilitySignUp from 'views/FacilityAdmin/components/FacilitySignUp';\n\nconst source = [\n {\n title: '首頁',\n icon: HomeIcon,\n paths: [{ path: '/', exact: true }],\n component: LandingPage,\n hideFromMenu: true,\n showOnHeader: true,\n },\n {\n title: '機構訂購',\n icon: StorefrontIcon,\n paths: [{ path: '/menu', exact: true }],\n component: Menu,\n hideFromMenu: true,\n showOnHeader: true,\n },\n {\n title: '銀色大門隱私權及保護政策',\n paths: [{ path: '/privacy-policy', exact: true }],\n component: () => ,\n hideFromMenu: true,\n showOnHeader: false,\n },\n {\n title: '銀色大門會員服務條款',\n paths: [{ path: '/service-terms', exact: true }],\n component: () => ,\n hideFromMenu: true,\n showOnHeader: false,\n },\n {\n title: '退貨退款政策須知',\n paths: [{ path: '/return-policy', exact: true }],\n component: () => ,\n hideFromMenu: true,\n showOnHeader: false,\n },\n // {\n // title: '送餐關懷',\n // icon: FavoriteBorderIcon,\n // paths: [{ path: '/blogs', exact: true }],\n // component: Blogs,\n // hideFromMenu: true,\n // showOnHeader: true,\n // },\n // {\n // title: '',\n // paths: [{ path: '/blogs/:id', exact: true }],\n // component: Blog,\n // hideFromMenu: true,\n // showOnHeader: false,\n // },\n {\n title: 'APP下載',\n icon: GetAppIcon,\n paths: [{ path: '/download', exact: true }],\n component: Download,\n hideFromMenu: true,\n showOnHeader: true,\n },\n {\n title: '刪除帳號',\n icon: GetAppIcon,\n paths: [{ path: '/deleteMyAccount', exact: true }],\n component: DeleteMyAccount,\n hideFromMenu: true,\n showOnHeader: false,\n },\n {\n title: '申請機構帳戶',\n paths: [{ path: '/facilitySignUp', exact: true }],\n component: FacilitySignUp,\n hideFromMenu: true,\n showOnHeader: false,\n },\n];\n\nexport default source;\n\nexport const routes = source.reduce((all, item) => {\n item.paths.forEach(({ path, link, exact = true }) => {\n all.push(Object.assign({ path, link, exact }, item));\n });\n return all;\n}, []);\n","import React from 'react';\n\nimport LandingPage from 'views/Public/LandingPage';\nimport FacilityAuthenticator from './FacilityAuthenticator';\n\nexport default function FacilitySignUp() {\n return (\n \n );\n}\n","export default {\n Unauthorized: '抱歉,您的權限不足',\n};\n","export const NAME = '銀色大門|長照送餐管理系統';\n\nexport const SHORT_NAME = '銀色大門';\n\nexport const DRAWER_WIDTH = 180;\n\nexport const LOCALE = 'zh-TW';\n\nexport const TIME_ZONE = 'Asia/Taipei';\n\nexport const LAUNCH_DATE = '2019-12-31T16:00:00.000Z';\n\nexport const AUTO_UPDATE_INTERVAL_IN_MILLISECONDS = 5 * 60 * 1000;\n\nexport const SUPPORT_NUMBER = '+886958441885';\n\nexport const PASSWORD_MIN_LENGTH = 8;\n\nexport const MONTHS = [\n '1月',\n '2月',\n '3月',\n '4月',\n '5月',\n '6月',\n '7月',\n '8月',\n '9月',\n '10月',\n '11月',\n '12月',\n];\n\nexport const WEEKDAYS_LONG = [\n '星期日',\n '星期一',\n '星期二',\n '星期三',\n '星期四',\n '星期五',\n '星期六',\n];\n\nexport const WEEKDAYS_SHORT = ['日', '一', '二', '三', '四', '五', '六'];\n\nexport const SHOP_PREFIX = 'shop';\nexport const GROUP_ORDER_PREFIX= 'grouporder';\n\nexport const liffIds = {\n // 'c147-218-35-139-153.ngrok-free.app': '2006592741-lQyMBpKG',\n 'default': '2006592741-lQyMBpKG',\n 'shop.develop.silvergatedelivery.com': '2006592741-lQyMBpKG',\n 'shopdemo.silvergatedelivery.com': '2006592741-0AAjgGkw',\n 'shop.silvergatedelivery.com': '2006592741-NJBMVjRX',\n};\n","export default {\n UserNotFoundException: '用戶不存在',\n NotAuthorizedException: '密碼錯誤',\n InvalidParameterException: '欄位不完整或是格式錯誤',\n};\n","export default [\n {\n label: '待審核',\n value: 0,\n color: '#ff0318',\n },\n {\n label: '使用中',\n value: 1,\n color: '#00913A',\n },\n {\n label: '已停用',\n value: 2,\n color: '#363636',\n },\n];\n","export default [\n {\n label: '管理員',\n value: 'Admins',\n backendSignIn: true,\n },\n {\n label: '組織負責人',\n value: 'OrgAdmins',\n backendSignIn: true,\n },\n {\n label: '機構管理員',\n value: 'FacilityAdmins',\n backendSignIn: true,\n },\n {\n label: '送餐大使',\n value: 'DeliveryStaffs',\n backendSignIn: false,\n },\n {\n label: '餐廳負責人',\n value: 'RestaurantOwners',\n backendSignIn: false,\n },\n {\n label: '客戶',\n value: 'Clients',\n backendSignIn: true,\n },\n];\n","const primaryLight = '#68b386';\nconst primary = '#00913A';\nconst primaryDark = '#00702b';\nconst active = '#2189DC';\nconst accent = '#f8aa5d';\nconst raised = '#f05a5a';\nconst focused = '#439463';\nconst error = 'red';\n\nconst dark = '#363636';\nconst light = '#888889';\nconst light2 = '#d1d3d8';\nconst highlight = '#f7f7f7';\nconst disabled = '#e3e3e3';\n\nexport default {\n useDark: true,\n primary,\n primaryLight,\n primaryDark,\n active,\n accent,\n raised,\n focused,\n\n // text\n primaryText: dark,\n secondaryText: light,\n light,\n light2,\n dark,\n highlight,\n disabled,\n\n //\n background: {\n light: '#ebebeb',\n },\n\n tintColor: primary,\n tabIconDefault: light,\n tabIconSelected: focused,\n tabBar: primary,\n error,\n errorBackground: error,\n errorText: '#fff',\n warningBackground: accent,\n warningText: '#666804',\n noticeBackground: primary,\n noticeText: '#fff',\n};\n","export default [\n '臺北市', '新北市', '基隆市', '桃園市', '新竹市', '新竹縣', '苗栗縣',\n '臺中市', '彰化縣', '南投縣',\n '雲林縣', '嘉義市', '嘉義縣', '臺南市', '高雄市', '屏東縣',\n '宜蘭縣', '花蓮縣', '臺東縣',\n '澎湖縣', '金門縣', '連江縣',\n];\n","/* eslint-disable comma-dangle */\n// for CJS\n// module.exports = [\nexport default [\n {\n 'zipCode': '100',\n 'county': '臺北市',\n 'districts': ['中正區']\n },\n {\n 'zipCode': '103',\n 'county': '臺北市',\n 'districts': ['大同區']\n },\n {\n 'zipCode': '104',\n 'county': '臺北市',\n 'districts': ['中山區']\n },\n {\n 'zipCode': '105',\n 'county': '臺北市',\n 'districts': ['松山區']\n },\n {\n 'zipCode': '106',\n 'county': '臺北市',\n 'districts': ['大安區']\n },\n {\n 'zipCode': '108',\n 'county': '臺北市',\n 'districts': ['萬華區']\n },\n {\n 'zipCode': '110',\n 'county': '臺北市',\n 'districts': ['信義區']\n },\n {\n 'zipCode': '111',\n 'county': '臺北市',\n 'districts': ['士林區']\n },\n {\n 'zipCode': '112',\n 'county': '臺北市',\n 'districts': ['北投區']\n },\n {\n 'zipCode': '114',\n 'county': '臺北市',\n 'districts': ['內湖區']\n },\n {\n 'zipCode': '115',\n 'county': '臺北市',\n 'districts': ['南港區']\n },\n {\n 'zipCode': '116',\n 'county': '臺北市',\n 'districts': ['文山區']\n },\n {\n 'zipCode': '200',\n 'county': '基隆市',\n 'districts': ['仁愛區']\n },\n {\n 'zipCode': '201',\n 'county': '基隆市',\n 'districts': ['信義區']\n },\n {\n 'zipCode': '202',\n 'county': '基隆市',\n 'districts': ['中正區']\n },\n {\n 'zipCode': '203',\n 'county': '基隆市',\n 'districts': ['中山區']\n },\n {\n 'zipCode': '204',\n 'county': '基隆市',\n 'districts': ['安樂區']\n },\n {\n 'zipCode': '205',\n 'county': '基隆市',\n 'districts': ['暖暖區']\n },\n {\n 'zipCode': '206',\n 'county': '基隆市',\n 'districts': ['七堵區']\n },\n {\n 'zipCode': '207',\n 'county': '新北市',\n 'districts': ['萬里區']\n },\n {\n 'zipCode': '208',\n 'county': '新北市',\n 'districts': ['金山區']\n },\n {\n 'zipCode': '209',\n 'county': '連江縣',\n 'districts': ['南竿鄉']\n },\n {\n 'zipCode': '210',\n 'county': '連江縣',\n 'districts': ['北竿鄉']\n },\n {\n 'zipCode': '211',\n 'county': '連江縣',\n 'districts': ['莒光鄉']\n },\n {\n 'zipCode': '212',\n 'county': '連江縣',\n 'districts': ['東引鄉']\n },\n {\n 'zipCode': '220',\n 'county': '新北市',\n 'districts': ['板橋區']\n },\n {\n 'zipCode': '221',\n 'county': '新北市',\n 'districts': ['汐止區']\n },\n {\n 'zipCode': '222',\n 'county': '新北市',\n 'districts': ['深坑區']\n },\n {\n 'zipCode': '223',\n 'county': '新北市',\n 'districts': ['石碇區']\n },\n {\n 'zipCode': '224',\n 'county': '新北市',\n 'districts': ['瑞芳區']\n },\n {\n 'zipCode': '226',\n 'county': '新北市',\n 'districts': ['平溪區']\n },\n {\n 'zipCode': '227',\n 'county': '新北市',\n 'districts': ['雙溪區']\n },\n {\n 'zipCode': '228',\n 'county': '新北市',\n 'districts': ['貢寮區']\n },\n {\n 'zipCode': '231',\n 'county': '新北市',\n 'districts': ['新店區']\n },\n {\n 'zipCode': '232',\n 'county': '新北市',\n 'districts': ['坪林區']\n },\n {\n 'zipCode': '233',\n 'county': '新北市',\n 'districts': ['烏來區']\n },\n {\n 'zipCode': '234',\n 'county': '新北市',\n 'districts': ['永和區']\n },\n {\n 'zipCode': '235',\n 'county': '新北市',\n 'districts': ['中和區']\n },\n {\n 'zipCode': '236',\n 'county': '新北市',\n 'districts': ['土城區']\n },\n {\n 'zipCode': '237',\n 'county': '新北市',\n 'districts': ['三峽區']\n },\n {\n 'zipCode': '238',\n 'county': '新北市',\n 'districts': ['樹林區']\n },\n {\n 'zipCode': '239',\n 'county': '新北市',\n 'districts': ['鶯歌區']\n },\n {\n 'zipCode': '241',\n 'county': '新北市',\n 'districts': ['三重區']\n },\n {\n 'zipCode': '242',\n 'county': '新北市',\n 'districts': ['新莊區']\n },\n {\n 'zipCode': '243',\n 'county': '新北市',\n 'districts': ['泰山區']\n },\n {\n 'zipCode': '244',\n 'county': '新北市',\n 'districts': ['林口區']\n },\n {\n 'zipCode': '247',\n 'county': '新北市',\n 'districts': ['蘆洲區']\n },\n {\n 'zipCode': '248',\n 'county': '新北市',\n 'districts': ['五股區']\n },\n {\n 'zipCode': '249',\n 'county': '新北市',\n 'districts': ['八里區']\n },\n {\n 'zipCode': '251',\n 'county': '新北市',\n 'districts': ['淡水區']\n },\n {\n 'zipCode': '252',\n 'county': '新北市',\n 'districts': ['三芝區']\n },\n {\n 'zipCode': '253',\n 'county': '新北市',\n 'districts': ['石門區']\n },\n {\n 'zipCode': '260',\n 'county': '宜蘭縣',\n 'districts': ['宜蘭市']\n },\n {\n 'zipCode': '261',\n 'county': '宜蘭縣',\n 'districts': ['頭城鎮']\n },\n {\n 'zipCode': '262',\n 'county': '宜蘭縣',\n 'districts': ['礁溪鄉']\n },\n {\n 'zipCode': '263',\n 'county': '宜蘭縣',\n 'districts': ['壯圍鄉']\n },\n {\n 'zipCode': '264',\n 'county': '宜蘭縣',\n 'districts': ['員山鄉']\n },\n {\n 'zipCode': '265',\n 'county': '宜蘭縣',\n 'districts': ['羅東鎮']\n },\n {\n 'zipCode': '266',\n 'county': '宜蘭縣',\n 'districts': ['三星鄉']\n },\n {\n 'zipCode': '267',\n 'county': '宜蘭縣',\n 'districts': ['大同鄉']\n },\n {\n 'zipCode': '268',\n 'county': '宜蘭縣',\n 'districts': ['五結鄉']\n },\n {\n 'zipCode': '269',\n 'county': '宜蘭縣',\n 'districts': ['冬山鄉']\n },\n {\n 'zipCode': '270',\n 'county': '宜蘭縣',\n 'districts': ['蘇澳鎮']\n },\n {\n 'zipCode': '272',\n 'county': '宜蘭縣',\n 'districts': ['南澳鄉']\n },\n {\n 'zipCode': '290',\n 'county': '釣魚台',\n 'districts': ['']\n },\n {\n 'zipCode': '300',\n 'county': '新竹市',\n 'districts': ['東區', '北區', '香山區']\n },\n {\n 'zipCode': '302',\n 'county': '新竹縣',\n 'districts': ['竹北市']\n },\n {\n 'zipCode': '303',\n 'county': '新竹縣',\n 'districts': ['湖口鄉']\n },\n {\n 'zipCode': '304',\n 'county': '新竹縣',\n 'districts': ['新豐鄉']\n },\n {\n 'zipCode': '305',\n 'county': '新竹縣',\n 'districts': ['新埔鎮']\n },\n {\n 'zipCode': '306',\n 'county': '新竹縣',\n 'districts': ['關西鎮']\n },\n {\n 'zipCode': '307',\n 'county': '新竹縣',\n 'districts': ['芎林鄉']\n },\n {\n 'zipCode': '308',\n 'county': '新竹縣',\n 'districts': ['寶山鄉']\n },\n {\n 'zipCode': '310',\n 'county': '新竹縣',\n 'districts': ['竹東鎮']\n },\n {\n 'zipCode': '311',\n 'county': '新竹縣',\n 'districts': ['五峰鄉']\n },\n {\n 'zipCode': '312',\n 'county': '新竹縣',\n 'districts': ['橫山鄉']\n },\n {\n 'zipCode': '313',\n 'county': '新竹縣',\n 'districts': ['尖石鄉']\n },\n {\n 'zipCode': '314',\n 'county': '新竹縣',\n 'districts': ['北埔鄉']\n },\n {\n 'zipCode': '315',\n 'county': '新竹縣',\n 'districts': ['峨眉鄉']\n },\n {\n 'zipCode': '320',\n 'county': '桃園市',\n 'districts': ['中壢區']\n },\n {\n 'zipCode': '324',\n 'county': '桃園市',\n 'districts': ['平鎮區']\n },\n {\n 'zipCode': '325',\n 'county': '桃園市',\n 'districts': ['龍潭區']\n },\n {\n 'zipCode': '326',\n 'county': '桃園市',\n 'districts': ['楊梅區']\n },\n {\n 'zipCode': '327',\n 'county': '桃園市',\n 'districts': ['新屋區']\n },\n {\n 'zipCode': '328',\n 'county': '桃園市',\n 'districts': ['觀音區']\n },\n {\n 'zipCode': '330',\n 'county': '桃園市',\n 'districts': ['桃園區']\n },\n {\n 'zipCode': '333',\n 'county': '桃園市',\n 'districts': ['龜山區']\n },\n {\n 'zipCode': '334',\n 'county': '桃園市',\n 'districts': ['八德區']\n },\n {\n 'zipCode': '335',\n 'county': '桃園市',\n 'districts': ['大溪區']\n },\n {\n 'zipCode': '336',\n 'county': '桃園市',\n 'districts': ['復興區']\n },\n {\n 'zipCode': '337',\n 'county': '桃園市',\n 'districts': ['大園區']\n },\n {\n 'zipCode': '338',\n 'county': '桃園市',\n 'districts': ['蘆竹區']\n },\n {\n 'zipCode': '350',\n 'county': '苗栗縣',\n 'districts': ['竹南鎮']\n },\n {\n 'zipCode': '351',\n 'county': '苗栗縣',\n 'districts': ['頭份市']\n },\n {\n 'zipCode': '352',\n 'county': '苗栗縣',\n 'districts': ['三灣鄉']\n },\n {\n 'zipCode': '353',\n 'county': '苗栗縣',\n 'districts': ['南庄鄉']\n },\n {\n 'zipCode': '354',\n 'county': '苗栗縣',\n 'districts': ['獅潭鄉']\n },\n {\n 'zipCode': '356',\n 'county': '苗栗縣',\n 'districts': ['後龍鎮']\n },\n {\n 'zipCode': '357',\n 'county': '苗栗縣',\n 'districts': ['通霄鎮']\n },\n {\n 'zipCode': '358',\n 'county': '苗栗縣',\n 'districts': ['苑裡鎮']\n },\n {\n 'zipCode': '360',\n 'county': '苗栗縣',\n 'districts': ['苗栗市']\n },\n {\n 'zipCode': '361',\n 'county': '苗栗縣',\n 'districts': ['造橋鄉']\n },\n {\n 'zipCode': '362',\n 'county': '苗栗縣',\n 'districts': ['頭屋鄉']\n },\n {\n 'zipCode': '363',\n 'county': '苗栗縣',\n 'districts': ['公館鄉']\n },\n {\n 'zipCode': '364',\n 'county': '苗栗縣',\n 'districts': ['大湖鄉']\n },\n {\n 'zipCode': '365',\n 'county': '苗栗縣',\n 'districts': ['泰安鄉']\n },\n {\n 'zipCode': '366',\n 'county': '苗栗縣',\n 'districts': ['銅鑼鄉']\n },\n {\n 'zipCode': '367',\n 'county': '苗栗縣',\n 'districts': ['三義鄉']\n },\n {\n 'zipCode': '368',\n 'county': '苗栗縣',\n 'districts': ['西湖鄉']\n },\n {\n 'zipCode': '369',\n 'county': '苗栗縣',\n 'districts': ['卓蘭鎮']\n },\n {\n 'zipCode': '400',\n 'county': '臺中市',\n 'districts': ['中區']\n },\n {\n 'zipCode': '401',\n 'county': '臺中市',\n 'districts': ['東區']\n },\n {\n 'zipCode': '402',\n 'county': '臺中市',\n 'districts': ['南區']\n },\n {\n 'zipCode': '403',\n 'county': '臺中市',\n 'districts': ['西區']\n },\n {\n 'zipCode': '404',\n 'county': '臺中市',\n 'districts': ['北區']\n },\n {\n 'zipCode': '406',\n 'county': '臺中市',\n 'districts': ['北屯區']\n },\n {\n 'zipCode': '407',\n 'county': '臺中市',\n 'districts': ['西屯區']\n },\n {\n 'zipCode': '408',\n 'county': '臺中市',\n 'districts': ['南屯區']\n },\n {\n 'zipCode': '411',\n 'county': '臺中市',\n 'districts': ['太平區']\n },\n {\n 'zipCode': '412',\n 'county': '臺中市',\n 'districts': ['大里區']\n },\n {\n 'zipCode': '413',\n 'county': '臺中市',\n 'districts': ['霧峰區']\n },\n {\n 'zipCode': '414',\n 'county': '臺中市',\n 'districts': ['烏日區']\n },\n {\n 'zipCode': '420',\n 'county': '臺中市',\n 'districts': ['豐原區']\n },\n {\n 'zipCode': '421',\n 'county': '臺中市',\n 'districts': ['后里區']\n },\n {\n 'zipCode': '422',\n 'county': '臺中市',\n 'districts': ['石岡區']\n },\n {\n 'zipCode': '423',\n 'county': '臺中市',\n 'districts': ['東勢區']\n },\n {\n 'zipCode': '424',\n 'county': '臺中市',\n 'districts': ['和平區']\n },\n {\n 'zipCode': '426',\n 'county': '臺中市',\n 'districts': ['新社區']\n },\n {\n 'zipCode': '427',\n 'county': '臺中市',\n 'districts': ['潭子區']\n },\n {\n 'zipCode': '428',\n 'county': '臺中市',\n 'districts': ['大雅區']\n },\n {\n 'zipCode': '429',\n 'county': '臺中市',\n 'districts': ['神岡區']\n },\n {\n 'zipCode': '432',\n 'county': '臺中市',\n 'districts': ['大肚區']\n },\n {\n 'zipCode': '433',\n 'county': '臺中市',\n 'districts': ['沙鹿區']\n },\n {\n 'zipCode': '434',\n 'county': '臺中市',\n 'districts': ['龍井區']\n },\n {\n 'zipCode': '435',\n 'county': '臺中市',\n 'districts': ['梧棲區']\n },\n {\n 'zipCode': '436',\n 'county': '臺中市',\n 'districts': ['清水區']\n },\n {\n 'zipCode': '437',\n 'county': '臺中市',\n 'districts': ['大甲區']\n },\n {\n 'zipCode': '438',\n 'county': '臺中市',\n 'districts': ['外埔區']\n },\n {\n 'zipCode': '439',\n 'county': '臺中市',\n 'districts': ['大安區']\n },\n {\n 'zipCode': '500',\n 'county': '彰化縣',\n 'districts': ['彰化市']\n },\n {\n 'zipCode': '502',\n 'county': '彰化縣',\n 'districts': ['芬園鄉']\n },\n {\n 'zipCode': '503',\n 'county': '彰化縣',\n 'districts': ['花壇鄉']\n },\n {\n 'zipCode': '504',\n 'county': '彰化縣',\n 'districts': ['秀水鄉']\n },\n {\n 'zipCode': '505',\n 'county': '彰化縣',\n 'districts': ['鹿港鎮']\n },\n {\n 'zipCode': '506',\n 'county': '彰化縣',\n 'districts': ['福興鄉']\n },\n {\n 'zipCode': '507',\n 'county': '彰化縣',\n 'districts': ['線西鄉']\n },\n {\n 'zipCode': '508',\n 'county': '彰化縣',\n 'districts': ['和美鎮']\n },\n {\n 'zipCode': '509',\n 'county': '彰化縣',\n 'districts': ['伸港鄉']\n },\n {\n 'zipCode': '510',\n 'county': '彰化縣',\n 'districts': ['員林市']\n },\n {\n 'zipCode': '511',\n 'county': '彰化縣',\n 'districts': ['社頭鄉']\n },\n {\n 'zipCode': '512',\n 'county': '彰化縣',\n 'districts': ['永靖鄉']\n },\n {\n 'zipCode': '513',\n 'county': '彰化縣',\n 'districts': ['埔心鄉']\n },\n {\n 'zipCode': '514',\n 'county': '彰化縣',\n 'districts': ['溪湖鎮']\n },\n {\n 'zipCode': '515',\n 'county': '彰化縣',\n 'districts': ['大村鄉']\n },\n {\n 'zipCode': '516',\n 'county': '彰化縣',\n 'districts': ['埔鹽鄉']\n },\n {\n 'zipCode': '520',\n 'county': '彰化縣',\n 'districts': ['田中鎮']\n },\n {\n 'zipCode': '521',\n 'county': '彰化縣',\n 'districts': ['北斗鎮']\n },\n {\n 'zipCode': '522',\n 'county': '彰化縣',\n 'districts': ['田尾鄉']\n },\n {\n 'zipCode': '523',\n 'county': '彰化縣',\n 'districts': ['埤頭鄉']\n },\n {\n 'zipCode': '524',\n 'county': '彰化縣',\n 'districts': ['溪州鄉']\n },\n {\n 'zipCode': '525',\n 'county': '彰化縣',\n 'districts': ['竹塘鄉']\n },\n {\n 'zipCode': '526',\n 'county': '彰化縣',\n 'districts': ['二林鎮']\n },\n {\n 'zipCode': '527',\n 'county': '彰化縣',\n 'districts': ['大城鄉']\n },\n {\n 'zipCode': '528',\n 'county': '彰化縣',\n 'districts': ['芳苑鄉']\n },\n {\n 'zipCode': '530',\n 'county': '彰化縣',\n 'districts': ['二水鄉']\n },\n {\n 'zipCode': '540',\n 'county': '南投縣',\n 'districts': ['南投市']\n },\n {\n 'zipCode': '541',\n 'county': '南投縣',\n 'districts': ['中寮鄉']\n },\n {\n 'zipCode': '542',\n 'county': '南投縣',\n 'districts': ['草屯鎮']\n },\n {\n 'zipCode': '544',\n 'county': '南投縣',\n 'districts': ['國姓鄉']\n },\n {\n 'zipCode': '545',\n 'county': '南投縣',\n 'districts': ['埔里鎮']\n },\n {\n 'zipCode': '546',\n 'county': '南投縣',\n 'districts': ['仁愛鄉']\n },\n {\n 'zipCode': '551',\n 'county': '南投縣',\n 'districts': ['名間鄉']\n },\n {\n 'zipCode': '552',\n 'county': '南投縣',\n 'districts': ['集集鎮']\n },\n {\n 'zipCode': '553',\n 'county': '南投縣',\n 'districts': ['水里鄉']\n },\n {\n 'zipCode': '555',\n 'county': '南投縣',\n 'districts': ['魚池鄉']\n },\n {\n 'zipCode': '556',\n 'county': '南投縣',\n 'districts': ['信義鄉']\n },\n {\n 'zipCode': '557',\n 'county': '南投縣',\n 'districts': ['竹山鎮']\n },\n {\n 'zipCode': '558',\n 'county': '南投縣',\n 'districts': ['鹿谷鄉']\n },\n {\n 'zipCode': '600',\n 'county': '嘉義市',\n 'districts': ['東區', '西區']\n },\n {\n 'zipCode': '602',\n 'county': '嘉義縣',\n 'districts': ['番路鄉']\n },\n {\n 'zipCode': '603',\n 'county': '嘉義縣',\n 'districts': ['梅山鄉']\n },\n {\n 'zipCode': '604',\n 'county': '嘉義縣',\n 'districts': ['竹崎鄉']\n },\n {\n 'zipCode': '605',\n 'county': '嘉義縣',\n 'districts': ['阿里山鄉']\n },\n {\n 'zipCode': '606',\n 'county': '嘉義縣',\n 'districts': ['中埔鄉']\n },\n {\n 'zipCode': '607',\n 'county': '嘉義縣',\n 'districts': ['大埔鄉']\n },\n {\n 'zipCode': '608',\n 'county': '嘉義縣',\n 'districts': ['水上鄉']\n },\n {\n 'zipCode': '611',\n 'county': '嘉義縣',\n 'districts': ['鹿草鄉']\n },\n {\n 'zipCode': '612',\n 'county': '嘉義縣',\n 'districts': ['太保市']\n },\n {\n 'zipCode': '613',\n 'county': '嘉義縣',\n 'districts': ['朴子市']\n },\n {\n 'zipCode': '614',\n 'county': '嘉義縣',\n 'districts': ['東石鄉']\n },\n {\n 'zipCode': '615',\n 'county': '嘉義縣',\n 'districts': ['六腳鄉']\n },\n {\n 'zipCode': '616',\n 'county': '嘉義縣',\n 'districts': ['新港鄉']\n },\n {\n 'zipCode': '621',\n 'county': '嘉義縣',\n 'districts': ['民雄鄉']\n },\n {\n 'zipCode': '622',\n 'county': '嘉義縣',\n 'districts': ['大林鎮']\n },\n {\n 'zipCode': '623',\n 'county': '嘉義縣',\n 'districts': ['溪口鄉']\n },\n {\n 'zipCode': '624',\n 'county': '嘉義縣',\n 'districts': ['義竹鄉']\n },\n {\n 'zipCode': '625',\n 'county': '嘉義縣',\n 'districts': ['布袋鎮']\n },\n {\n 'zipCode': '630',\n 'county': '雲林縣',\n 'districts': ['斗南鎮']\n },\n {\n 'zipCode': '631',\n 'county': '雲林縣',\n 'districts': ['大埤鄉']\n },\n {\n 'zipCode': '632',\n 'county': '雲林縣',\n 'districts': ['虎尾鎮']\n },\n {\n 'zipCode': '633',\n 'county': '雲林縣',\n 'districts': ['土庫鎮']\n },\n {\n 'zipCode': '634',\n 'county': '雲林縣',\n 'districts': ['褒忠鄉']\n },\n {\n 'zipCode': '635',\n 'county': '雲林縣',\n 'districts': ['東勢鄉']\n },\n {\n 'zipCode': '636',\n 'county': '雲林縣',\n 'districts': ['臺西鄉']\n },\n {\n 'zipCode': '637',\n 'county': '雲林縣',\n 'districts': ['崙背鄉']\n },\n {\n 'zipCode': '638',\n 'county': '雲林縣',\n 'districts': ['麥寮鄉']\n },\n {\n 'zipCode': '640',\n 'county': '雲林縣',\n 'districts': ['斗六市']\n },\n {\n 'zipCode': '643',\n 'county': '雲林縣',\n 'districts': ['林內鄉']\n },\n {\n 'zipCode': '646',\n 'county': '雲林縣',\n 'districts': ['古坑鄉']\n },\n {\n 'zipCode': '647',\n 'county': '雲林縣',\n 'districts': ['莿桐鄉']\n },\n {\n 'zipCode': '648',\n 'county': '雲林縣',\n 'districts': ['西螺鎮']\n },\n {\n 'zipCode': '649',\n 'county': '雲林縣',\n 'districts': ['二崙鄉']\n },\n {\n 'zipCode': '651',\n 'county': '雲林縣',\n 'districts': ['北港鎮']\n },\n {\n 'zipCode': '652',\n 'county': '雲林縣',\n 'districts': ['水林鄉']\n },\n {\n 'zipCode': '653',\n 'county': '雲林縣',\n 'districts': ['口湖鄉']\n },\n {\n 'zipCode': '654',\n 'county': '雲林縣',\n 'districts': ['四湖鄉']\n },\n {\n 'zipCode': '655',\n 'county': '雲林縣',\n 'districts': ['元長鄉']\n },\n {\n 'zipCode': '700',\n 'county': '臺南市',\n 'districts': ['中西區']\n },\n {\n 'zipCode': '701',\n 'county': '臺南市',\n 'districts': ['東區']\n },\n {\n 'zipCode': '702',\n 'county': '臺南市',\n 'districts': ['南區']\n },\n {\n 'zipCode': '704',\n 'county': '臺南市',\n 'districts': ['北區']\n },\n {\n 'zipCode': '708',\n 'county': '臺南市',\n 'districts': ['安平區']\n },\n {\n 'zipCode': '709',\n 'county': '臺南市',\n 'districts': ['安南區']\n },\n {\n 'zipCode': '710',\n 'county': '臺南市',\n 'districts': ['永康區']\n },\n {\n 'zipCode': '711',\n 'county': '臺南市',\n 'districts': ['歸仁區']\n },\n {\n 'zipCode': '712',\n 'county': '臺南市',\n 'districts': ['新化區']\n },\n {\n 'zipCode': '713',\n 'county': '臺南市',\n 'districts': ['左鎮區']\n },\n {\n 'zipCode': '714',\n 'county': '臺南市',\n 'districts': ['玉井區']\n },\n {\n 'zipCode': '715',\n 'county': '臺南市',\n 'districts': ['楠西區']\n },\n {\n 'zipCode': '716',\n 'county': '臺南市',\n 'districts': ['南化區']\n },\n {\n 'zipCode': '717',\n 'county': '臺南市',\n 'districts': ['仁德區']\n },\n {\n 'zipCode': '718',\n 'county': '臺南市',\n 'districts': ['關廟區']\n },\n {\n 'zipCode': '719',\n 'county': '臺南市',\n 'districts': ['龍崎區']\n },\n {\n 'zipCode': '720',\n 'county': '臺南市',\n 'districts': ['官田區']\n },\n {\n 'zipCode': '721',\n 'county': '臺南市',\n 'districts': ['麻豆區']\n },\n {\n 'zipCode': '722',\n 'county': '臺南市',\n 'districts': ['佳里區']\n },\n {\n 'zipCode': '723',\n 'county': '臺南市',\n 'districts': ['西港區']\n },\n {\n 'zipCode': '724',\n 'county': '臺南市',\n 'districts': ['七股區']\n },\n {\n 'zipCode': '725',\n 'county': '臺南市',\n 'districts': ['將軍區']\n },\n {\n 'zipCode': '726',\n 'county': '臺南市',\n 'districts': ['學甲區']\n },\n {\n 'zipCode': '727',\n 'county': '臺南市',\n 'districts': ['北門區']\n },\n {\n 'zipCode': '730',\n 'county': '臺南市',\n 'districts': ['新營區']\n },\n {\n 'zipCode': '731',\n 'county': '臺南市',\n 'districts': ['後壁區']\n },\n {\n 'zipCode': '732',\n 'county': '臺南市',\n 'districts': ['白河區']\n },\n {\n 'zipCode': '733',\n 'county': '臺南市',\n 'districts': ['東山區']\n },\n {\n 'zipCode': '734',\n 'county': '臺南市',\n 'districts': ['六甲區']\n },\n {\n 'zipCode': '735',\n 'county': '臺南市',\n 'districts': ['下營區']\n },\n {\n 'zipCode': '736',\n 'county': '臺南市',\n 'districts': ['柳營區']\n },\n {\n 'zipCode': '737',\n 'county': '臺南市',\n 'districts': ['鹽水區']\n },\n {\n 'zipCode': '741',\n 'county': '臺南市',\n 'districts': ['善化區']\n },\n {\n 'zipCode': '742',\n 'county': '臺南市',\n 'districts': ['大內區']\n },\n {\n 'zipCode': '743',\n 'county': '臺南市',\n 'districts': ['山上區']\n },\n {\n 'zipCode': '744',\n 'county': '臺南市',\n 'districts': ['新市區']\n },\n {\n 'zipCode': '745',\n 'county': '臺南市',\n 'districts': ['安定區']\n },\n {\n 'zipCode': '800',\n 'county': '高雄市',\n 'districts': ['新興區']\n },\n {\n 'zipCode': '801',\n 'county': '高雄市',\n 'districts': ['前金區']\n },\n {\n 'zipCode': '802',\n 'county': '高雄市',\n 'districts': ['苓雅區']\n },\n {\n 'zipCode': '803',\n 'county': '高雄市',\n 'districts': ['鹽埕區']\n },\n {\n 'zipCode': '804',\n 'county': '高雄市',\n 'districts': ['鼓山區']\n },\n {\n 'zipCode': '805',\n 'county': '高雄市',\n 'districts': ['旗津區']\n },\n {\n 'zipCode': '806',\n 'county': '高雄市',\n 'districts': ['前鎮區']\n },\n {\n 'zipCode': '807',\n 'county': '高雄市',\n 'districts': ['三民區']\n },\n {\n 'zipCode': '811',\n 'county': '高雄市',\n 'districts': ['楠梓區']\n },\n {\n 'zipCode': '812',\n 'county': '高雄市',\n 'districts': ['小港區']\n },\n {\n 'zipCode': '813',\n 'county': '高雄市',\n 'districts': ['左營區']\n },\n {\n 'zipCode': '814',\n 'county': '高雄市',\n 'districts': ['仁武區']\n },\n {\n 'zipCode': '815',\n 'county': '高雄市',\n 'districts': ['大社區']\n },\n {\n 'zipCode': '817',\n 'county': '高雄市',\n 'districts': ['東沙群島']\n },\n {\n 'zipCode': '819',\n 'county': '高雄市',\n 'districts': ['南沙群島']\n },\n {\n 'zipCode': '820',\n 'county': '高雄市',\n 'districts': ['岡山區']\n },\n {\n 'zipCode': '821',\n 'county': '高雄市',\n 'districts': ['路竹區']\n },\n {\n 'zipCode': '822',\n 'county': '高雄市',\n 'districts': ['阿蓮區']\n },\n {\n 'zipCode': '823',\n 'county': '高雄市',\n 'districts': ['田寮區']\n },\n {\n 'zipCode': '824',\n 'county': '高雄市',\n 'districts': ['燕巢區']\n },\n {\n 'zipCode': '825',\n 'county': '高雄市',\n 'districts': ['橋頭區']\n },\n {\n 'zipCode': '826',\n 'county': '高雄市',\n 'districts': ['梓官區']\n },\n {\n 'zipCode': '827',\n 'county': '高雄市',\n 'districts': ['彌陀區']\n },\n {\n 'zipCode': '828',\n 'county': '高雄市',\n 'districts': ['永安區']\n },\n {\n 'zipCode': '829',\n 'county': '高雄市',\n 'districts': ['湖內區']\n },\n {\n 'zipCode': '830',\n 'county': '高雄市',\n 'districts': ['鳳山區']\n },\n {\n 'zipCode': '831',\n 'county': '高雄市',\n 'districts': ['大寮區']\n },\n {\n 'zipCode': '832',\n 'county': '高雄市',\n 'districts': ['林園區']\n },\n {\n 'zipCode': '833',\n 'county': '高雄市',\n 'districts': ['鳥松區']\n },\n {\n 'zipCode': '840',\n 'county': '高雄市',\n 'districts': ['大樹區']\n },\n {\n 'zipCode': '842',\n 'county': '高雄市',\n 'districts': ['旗山區']\n },\n {\n 'zipCode': '843',\n 'county': '高雄市',\n 'districts': ['美濃區']\n },\n {\n 'zipCode': '844',\n 'county': '高雄市',\n 'districts': ['六龜區']\n },\n {\n 'zipCode': '845',\n 'county': '高雄市',\n 'districts': ['內門區']\n },\n {\n 'zipCode': '846',\n 'county': '高雄市',\n 'districts': ['杉林區']\n },\n {\n 'zipCode': '847',\n 'county': '高雄市',\n 'districts': ['甲仙區']\n },\n {\n 'zipCode': '848',\n 'county': '高雄市',\n 'districts': ['桃源區']\n },\n {\n 'zipCode': '849',\n 'county': '高雄市',\n 'districts': ['那瑪夏區']\n },\n {\n 'zipCode': '851',\n 'county': '高雄市',\n 'districts': ['茂林區']\n },\n {\n 'zipCode': '852',\n 'county': '高雄市',\n 'districts': ['茄萣區']\n },\n {\n 'zipCode': '880',\n 'county': '澎湖縣',\n 'districts': ['馬公市']\n },\n {\n 'zipCode': '881',\n 'county': '澎湖縣',\n 'districts': ['西嶼鄉']\n },\n {\n 'zipCode': '882',\n 'county': '澎湖縣',\n 'districts': ['望安鄉']\n },\n {\n 'zipCode': '883',\n 'county': '澎湖縣',\n 'districts': ['七美鄉']\n },\n {\n 'zipCode': '884',\n 'county': '澎湖縣',\n 'districts': ['白沙鄉']\n },\n {\n 'zipCode': '885',\n 'county': '澎湖縣',\n 'districts': ['湖西鄉']\n },\n {\n 'zipCode': '890',\n 'county': '金門縣',\n 'districts': ['金沙鎮']\n },\n {\n 'zipCode': '891',\n 'county': '金門縣',\n 'districts': ['金湖鎮']\n },\n {\n 'zipCode': '892',\n 'county': '金門縣',\n 'districts': ['金寧鄉']\n },\n {\n 'zipCode': '893',\n 'county': '金門縣',\n 'districts': ['金城鎮']\n },\n {\n 'zipCode': '894',\n 'county': '金門縣',\n 'districts': ['烈嶼鄉']\n },\n {\n 'zipCode': '896',\n 'county': '金門縣',\n 'districts': ['烏坵鄉']\n },\n {\n 'zipCode': '900',\n 'county': '屏東縣',\n 'districts': ['屏東市']\n },\n {\n 'zipCode': '901',\n 'county': '屏東縣',\n 'districts': ['三地門鄉']\n },\n {\n 'zipCode': '902',\n 'county': '屏東縣',\n 'districts': ['霧臺鄉']\n },\n {\n 'zipCode': '903',\n 'county': '屏東縣',\n 'districts': ['瑪家鄉']\n },\n {\n 'zipCode': '904',\n 'county': '屏東縣',\n 'districts': ['九如鄉']\n },\n {\n 'zipCode': '905',\n 'county': '屏東縣',\n 'districts': ['里港鄉']\n },\n {\n 'zipCode': '906',\n 'county': '屏東縣',\n 'districts': ['高樹鄉']\n },\n {\n 'zipCode': '907',\n 'county': '屏東縣',\n 'districts': ['鹽埔鄉']\n },\n {\n 'zipCode': '908',\n 'county': '屏東縣',\n 'districts': ['長治鄉']\n },\n {\n 'zipCode': '909',\n 'county': '屏東縣',\n 'districts': ['麟洛鄉']\n },\n {\n 'zipCode': '911',\n 'county': '屏東縣',\n 'districts': ['竹田鄉']\n },\n {\n 'zipCode': '912',\n 'county': '屏東縣',\n 'districts': ['內埔鄉']\n },\n {\n 'zipCode': '913',\n 'county': '屏東縣',\n 'districts': ['萬丹鄉']\n },\n {\n 'zipCode': '920',\n 'county': '屏東縣',\n 'districts': ['潮州鎮']\n },\n {\n 'zipCode': '921',\n 'county': '屏東縣',\n 'districts': ['泰武鄉']\n },\n {\n 'zipCode': '922',\n 'county': '屏東縣',\n 'districts': ['來義鄉']\n },\n {\n 'zipCode': '923',\n 'county': '屏東縣',\n 'districts': ['萬巒鄉']\n },\n {\n 'zipCode': '924',\n 'county': '屏東縣',\n 'districts': ['崁頂鄉']\n },\n {\n 'zipCode': '925',\n 'county': '屏東縣',\n 'districts': ['新埤鄉']\n },\n {\n 'zipCode': '926',\n 'county': '屏東縣',\n 'districts': ['南州鄉']\n },\n {\n 'zipCode': '927',\n 'county': '屏東縣',\n 'districts': ['林邊鄉']\n },\n {\n 'zipCode': '928',\n 'county': '屏東縣',\n 'districts': ['東港鎮']\n },\n {\n 'zipCode': '929',\n 'county': '屏東縣',\n 'districts': ['琉球鄉']\n },\n {\n 'zipCode': '931',\n 'county': '屏東縣',\n 'districts': ['佳冬鄉']\n },\n {\n 'zipCode': '932',\n 'county': '屏東縣',\n 'districts': ['新園鄉']\n },\n {\n 'zipCode': '940',\n 'county': '屏東縣',\n 'districts': ['枋寮鄉']\n },\n {\n 'zipCode': '941',\n 'county': '屏東縣',\n 'districts': ['枋山鄉']\n },\n {\n 'zipCode': '942',\n 'county': '屏東縣',\n 'districts': ['春日鄉']\n },\n {\n 'zipCode': '943',\n 'county': '屏東縣',\n 'districts': ['獅子鄉']\n },\n {\n 'zipCode': '944',\n 'county': '屏東縣',\n 'districts': ['車城鄉']\n },\n {\n 'zipCode': '945',\n 'county': '屏東縣',\n 'districts': ['牡丹鄉']\n },\n {\n 'zipCode': '946',\n 'county': '屏東縣',\n 'districts': ['恆春鎮']\n },\n {\n 'zipCode': '947',\n 'county': '屏東縣',\n 'districts': ['滿州鄉']\n },\n {\n 'zipCode': '950',\n 'county': '臺東縣',\n 'districts': ['臺東市']\n },\n {\n 'zipCode': '951',\n 'county': '臺東縣',\n 'districts': ['綠島鄉']\n },\n {\n 'zipCode': '952',\n 'county': '臺東縣',\n 'districts': ['蘭嶼鄉']\n },\n {\n 'zipCode': '953',\n 'county': '臺東縣',\n 'districts': ['延平鄉']\n },\n {\n 'zipCode': '954',\n 'county': '臺東縣',\n 'districts': ['卑南鄉']\n },\n {\n 'zipCode': '955',\n 'county': '臺東縣',\n 'districts': ['鹿野鄉']\n },\n {\n 'zipCode': '956',\n 'county': '臺東縣',\n 'districts': ['關山鎮']\n },\n {\n 'zipCode': '957',\n 'county': '臺東縣',\n 'districts': ['海端鄉']\n },\n {\n 'zipCode': '958',\n 'county': '臺東縣',\n 'districts': ['池上鄉']\n },\n {\n 'zipCode': '959',\n 'county': '臺東縣',\n 'districts': ['東河鄉']\n },\n {\n 'zipCode': '961',\n 'county': '臺東縣',\n 'districts': ['成功鎮']\n },\n {\n 'zipCode': '962',\n 'county': '臺東縣',\n 'districts': ['長濱鄉']\n },\n {\n 'zipCode': '963',\n 'county': '臺東縣',\n 'districts': ['太麻里鄉']\n },\n {\n 'zipCode': '964',\n 'county': '臺東縣',\n 'districts': ['金峰鄉']\n },\n {\n 'zipCode': '965',\n 'county': '臺東縣',\n 'districts': ['大武鄉']\n },\n {\n 'zipCode': '966',\n 'county': '臺東縣',\n 'districts': ['達仁鄉']\n },\n {\n 'zipCode': '970',\n 'county': '花蓮縣',\n 'districts': ['花蓮市']\n },\n {\n 'zipCode': '971',\n 'county': '花蓮縣',\n 'districts': ['新城鄉']\n },\n {\n 'zipCode': '972',\n 'county': '花蓮縣',\n 'districts': ['秀林鄉']\n },\n {\n 'zipCode': '973',\n 'county': '花蓮縣',\n 'districts': ['吉安鄉']\n },\n {\n 'zipCode': '974',\n 'county': '花蓮縣',\n 'districts': ['壽豐鄉']\n },\n {\n 'zipCode': '975',\n 'county': '花蓮縣',\n 'districts': ['鳳林鎮']\n },\n {\n 'zipCode': '976',\n 'county': '花蓮縣',\n 'districts': ['光復鄉']\n },\n {\n 'zipCode': '977',\n 'county': '花蓮縣',\n 'districts': ['豐濱鄉']\n },\n {\n 'zipCode': '978',\n 'county': '花蓮縣',\n 'districts': ['瑞穗鄉']\n },\n {\n 'zipCode': '979',\n 'county': '花蓮縣',\n 'districts': ['萬榮鄉']\n },\n {\n 'zipCode': '981',\n 'county': '花蓮縣',\n 'districts': ['玉里鎮']\n },\n {\n 'zipCode': '982',\n 'county': '花蓮縣',\n 'districts': ['卓溪鄉']\n },\n {\n 'zipCode': '983',\n 'county': '花蓮縣',\n 'districts': ['富里鄉']\n }\n];\n","import Colors from './Colors';\n\nexport default [\n {\n label: '接受訂單',\n value: 'accepted',\n color: Colors.active,\n },\n {\n label: '送單中',\n value: 'delivering',\n color: Colors.active,\n },\n {\n label: '已送達',\n value: 'delivered',\n color: Colors.active,\n },\n {\n label: '已送達(超時)',\n value: 'deliveredButNotOnTime',\n color: Colors.active,\n },\n {\n label: '完成(填寫送餐日誌)',\n value: 'completed',\n color: Colors.primary,\n },\n {\n label: '系統取消',\n value: 'cancelled',\n color: Colors.dark,\n },\n {\n label: '因故無法完成',\n value: 'abandoned',\n color: Colors.dark,\n },\n];\n","export default [\n {\n label: '待審核',\n value: 0,\n color: '#ff0318',\n },\n {\n label: '使用中',\n value: 1,\n color: '#00913A',\n },\n {\n label: '已停用',\n value: 2,\n color: '#363636',\n },\n];\n","import Colors from './Colors';\n\nexport default [\n {\n label: '處理中',\n value: 'pending',\n color: Colors.primary,\n },\n {\n label: '完成',\n value: 'processed',\n color: Colors.dark,\n },\n];\n","export default [\n {\n label: '訂單',\n value: 'order',\n },\n {\n label: '月結算',\n value: 'monthlyStatement',\n },\n {\n label: '調整',\n value: 'adjustment',\n },\n {\n label: '轉入銀行帳戶',\n value: 'sell',\n },\n {\n label: '兌換成服務時數',\n value: 'socialCredits',\n },\n];\n","export default [\n {\n label: '男',\n value: 'male',\n },\n {\n label: '女',\n value: 'female',\n },\n {\n label: '其他',\n value: 'other',\n },\n];\n","export default [\n {\n label: '未處理',\n value: 'pending',\n color: '#850087',\n step: 0,\n },\n {\n label: '處理中',\n value: 'processing',\n color: '#2189DC',\n step: 1,\n },\n {\n label: '已解決',\n value: 'resolved',\n color: '#cecece',\n step: 2,\n },\n];\n","export default [\n {\n label: '午餐',\n value: 'lunch',\n },\n {\n label: '晚餐',\n value: 'dinner',\n },\n];\n","export const ORDER_CATEGORY = [\n {\n label: '送餐',\n description: '可計入核銷報表',\n },\n {\n label: '送餐和物資',\n description: '可計入核銷報表',\n },\n {\n label: '送物資',\n },\n {\n label: '藝術',\n },\n {\n label: '醫療',\n },\n {\n label: '到府服務',\n },\n {\n label: '愛心餐',\n description: '弱勢長輩的愛心餐,不計入核銷報表,收據顯示0元',\n },\n {\n label: '自費餐',\n description: '弱勢長輩的自費餐,不計入核銷報表,列入弱勢長輩收據',\n },\n];\nexport const ORDER_CATEGORY_LABEL = ORDER_CATEGORY.map(({ label }) => label);\n","// import React from 'react';\n// import CheckCircleIcon from '@material-ui/icons/CheckCircle';\n// import SearchIcon from '@material-ui/icons/Search';\n// import MotorcycleIcon from '@material-ui/icons/Motorcycle';\n// import HomeIcon from '@material-ui/icons/Home';\n// import BlockIcon from '@material-ui/icons/Block';\n// import AssignmentIcon from '@material-ui/icons/Assignment';\n\nimport Colors from './Colors';\n\nexport default [\n {\n label: '大使配對中',\n value: 'waitingForDeliveryStaff',\n color: '#cac428',\n colorText: 'yellow',\n step: 0,\n // icon: ,\n },\n {\n label: '重新配對大使中',\n value: 'reMatchingDeliveryStaff',\n color: '#ff0318',\n colorText: 'red',\n },\n {\n label: '可以出餐',\n value: 'ready',\n color: '#00913A',\n colorText: 'green',\n step: 1,\n // icon: ,\n },\n {\n label: '可以取餐',\n value: 'readyForPickup',\n color: '#cb8427',\n colorText: 'orange',\n step: 2,\n // icon: ,\n },\n {\n label: '大使送餐中',\n value: 'delivering',\n color: '#2189DC',\n colorText: 'blue',\n step: 3,\n // icon: ,\n },\n {\n label: '餐點已送達',\n value: 'delivered',\n color: '#7300ff',\n colorText: 'violet',\n step: 4,\n // icon: ,\n },\n {\n label: '完成 (送餐日誌)',\n value: 'completed',\n color: Colors.dark,\n colorText: 'black',\n step: 5,\n // icon: ,\n },\n {\n label: '取消',\n value: 'cancelled',\n color: '#cecece',\n colorText: 'grey',\n // icon: ,\n },\n];\n","export default [\n {\n label: '系統後台',\n value: 'admin',\n },\n {\n label: '手機訂單',\n value: 'app',\n },\n {\n label: '網頁訂單',\n value: 'web',\n },\n];\n","export default {\n '餐廳': {\n '食材': {\n color: '#007510',\n },\n '牙口': {\n color: '#f09400',\n },\n '疾病': {\n color: '#cc0074',\n },\n '葷素': {\n color: '#1172bf',\n },\n '特殊項目': {\n color: '#363636',\n },\n },\n '餐點': {\n '營養': {\n color: '#007510',\n },\n '食材': {\n color: '#cc0074',\n },\n },\n '送餐對象': {\n '飲食': {\n color: '#1172bf',\n },\n '健康': {\n color: '#de0012',\n },\n '居住': {\n color: '#007510',\n },\n '其他': {\n color: '#363636',\n },\n },\n};\n","import Colors from './Colors';\n\nexport default [\n {\n label: '處理中',\n value: 'pending',\n color: Colors.primary,\n },\n {\n label: '完成',\n value: 'approved',\n color: Colors.dark,\n },\n {\n label: '取消',\n value: 'voided',\n color: Colors.accent,\n },\n {\n label: '失敗',\n value: 'rejected',\n color: Colors.raised,\n },\n];\n","export default [\n {\n label: '付費',\n value: 'payment',\n },\n {\n label: '返款',\n value: 'refund',\n },\n {\n label: '調整',\n value: 'credit',\n },\n];\n","export default [\n {\n label: '長照送餐',\n value: 'silvergate',\n },\n {\n label: '到府醫療',\n value: 'medical',\n },\n];\n","import Colors from './Colors';\n\nexport default [\n {\n label: '未開立',\n value: 'pending',\n color: Colors.primary,\n },\n {\n label: '已開立',\n value: 'sent',\n color: Colors.dark,\n },\n];\n","export default [\n {\n label: '個人',\n value: 'individual',\n },\n {\n label: '企業',\n value: 'enterprise',\n },\n {\n label: '捐贈給社團法人銀色大門老人福利組織',\n value: 'donation',\n },\n];\n","export default [\n {\n label: '待處理',\n value: 'pending',\n color: '#ff0318',\n },\n {\n label: '處理中',\n value: 'processing',\n color: '#00913A',\n },\n {\n label: '已完成',\n value: 'fulfilled',\n color: '#000000',\n },\n {\n label: '取消',\n value: 'cancelled',\n color: '#363636',\n },\n];\n","export default [\n {\n label: '指派送餐員中',\n value: 'pending',\n },\n {\n label: '取餐中',\n value: 'pickup',\n },\n {\n label: '已取餐',\n value: 'pickup_complete',\n },\n {\n label: '送餐中',\n value: 'dropoff',\n },\n {\n label: '已送達',\n value: 'delivered',\n },\n {\n label: '取消',\n value: 'canceled',\n },\n {\n label: '訂單取消,退還物件',\n value: 'returned',\n },\n];\n","export default [\n {\n label: '新訂單',\n value: 'NEW',\n },\n {\n label: '已收單',\n value: 'RECEIVED',\n },\n {\n label: '指派送餐員中',\n value: 'WAITING_FOR_TRANSPORT',\n },\n {\n label: '送餐員已指派',\n value: 'ASSIGNED_TO_TRANSPORT',\n },\n {\n label: '送餐員已出發',\n value: 'COURIER_ACCEPTED_DELIVERY',\n },\n {\n label: '取餐中',\n value: 'NEAR_VENDOR',\n },\n {\n label: '已取餐',\n value: 'PICKED_UP',\n },\n {\n label: '送餐中',\n value: 'COURIER_LEFT_VENDOR',\n },\n {\n label: '即將送達',\n value: 'NEAR_CUSTOMER',\n },\n {\n label: '已送達',\n value: 'DELIVERED',\n },\n {\n label: '取消',\n value: 'CANCELLED',\n },\n {\n label: '延後',\n value: 'DELAYED',\n },\n];\n","export default [\n { value: 'A00', label: '確認叫件' },\n { value: 'A01', label: '派遣時間-指派任務' },\n { value: 'B01', label: '送達取件地' },\n { value: 'B00', label: '取貨' },\n { value: 'C00', label: '轉運' },\n { value: 'D01', label: '到達送件地' },\n { value: 'D00', label: '已配達', description: '最終貨態' },\n { value: '021', label: '未取件 物流士已離開' },\n { value: '019', label: '未配送 無法聯絡消費者' },\n { value: '024', label: '物件短少' },\n { value: '006', label: '空跑' },\n { value: '023', label: '客戶拒收' },\n { value: '003', label: '差額異動' },\n { value: '004', label: '時效異常' },\n { value: '020', label: '配送異常 商品毀損' },\n { value: '018', label: '配送異常 商品遺失' },\n { value: '017', label: '餐點未好' },\n { value: '022', label: '顧客資訊有誤' },\n { value: '026', label: '運能不足' },\n { value: '027', label: '未配送 無法聯絡消費者 物件由全球自行銷毀' },\n { value: '028', label: '顧客資訊有誤 物件由全球自行銷毀' },\n { value: '029', label: '客戶拒收 物件由全球自行銷毀' },\n { value: '030', label: '空跑 訂單取消' },\n { value: '025', label: '退貨', description: '最終貨態' },\n { value: 'E00', label: '取消', description: '最終貨態' },\n];\n","export default [\n {\n label: '尚未送單',\n value: 'pending',\n },\n {\n label: '媒合附近的司機',\n value: 'ASSIGNING_DRIVER',\n },\n {\n label: '已媒合到司機,將盡快去取件',\n value: 'ON_GOING',\n },\n {\n label: '司機已取件', // 司機已在附近\n value: 'PICKED_UP',\n },\n {\n label: '司機已抵達, 完成訂單',\n value: 'COMPLETED',\n },\n {\n label: '取消',\n value: 'CANCELED',\n },\n {\n label: '訂單取消',\n value: 'REJECTED',\n },\n {\n label: '訂單已過期',\n value: 'REJECTED',\n },\n];\n\n// ASSIGNING_DRIVER Trying to match the delivery with a driver.\n// ON_GOING A driver has accepted the order.\n// PICKED_UP The driver has picked up the order.\n// COMPLETED The order has been delivered successfully and transaction has concluded.\n// CANCELED User has canceled the order.\n// REJECTED The order was matched and rejected twice by two drivers in a row, see Order Flow.\n// EXPIRED The order expired as no drivers accepted the order\n","import Colors from './Colors';\n\nexport default [\n {\n label: '使用中',\n value: 'active',\n color: Colors.primary,\n },\n {\n label: '已過期',\n value: 'expired',\n color: Colors.dark,\n },\n];\n","export default [\n {\n label: '個案在家',\n value: 'atHome',\n },\n {\n label: '個案未遇,餐點放置定點',\n value: 'leftThere',\n },\n {\n label: '個案未遇,餐點親友代領',\n value: 'receivedByRelative',\n },\n];\n","export default [\n {\n label: '使用中',\n value: '使用中',\n },\n {\n label: '已停用',\n value: '已停用',\n },\n];\n","export default [\n {\n label: '無',\n value: null,\n },\n {\n label: '送餐大使收',\n value: '送餐大使收',\n },\n {\n label: '居服員收',\n value: '居服員收',\n },\n {\n label: '匯款-督導通知',\n value: '匯款-督導通知',\n },\n {\n label: '匯款-簡訊通知',\n value: '匯款-簡訊通知',\n },\n {\n label: '中心繳費',\n value: '中心繳費',\n },\n];\n","export default [\n {\n label: '長輩生病',\n value: 'elderSick',\n },\n {\n label: '長輩外出',\n value: 'elderGoOut',\n },\n {\n label: '長輩請假',\n value: 'elderLeave',\n },\n {\n label: '長輩過世',\n value: 'elderPassedAway',\n },\n {\n label: '停用服務',\n value: 'serviceStop',\n },\n {\n label: '設定錯誤',\n value: 'settingError',\n },\n {\n label: '社區聚餐',\n value: 'communityMeal',\n },\n {\n label: '其他',\n value: 'others',\n },\n];\n","export default [\n {\n label: '長輩生病',\n value: 'elderSick',\n },\n {\n label: '長輩過世',\n value: 'elderPassedAway',\n },\n {\n label: '餐點不滿意',\n value: 'mealDissatified',\n },\n {\n label: '其他',\n value: 'others',\n },\n];\n","export default [\n {\n label: '完成回答',\n value: 'completed',\n },\n {\n label: '暫無法回答',\n value: 'unableToAnswer',\n },\n {\n label: '不回答',\n value: 'noAnswer',\n },\n];\n","export default [\n {\n label: '衛福部支審系統',\n value: 'mohwPrsReport',\n },\n {\n label: '縣市核銷報表',\n value: 'countyPrsReport',\n },\n {\n label: '脆弱家庭核銷報表',\n value: 'vulnerableReport',\n },\n {\n label: 'Pandago 月訂單輸出',\n value: 'pandagoReport',\n },\n {\n label: 'Uber 月訂單輸出',\n value: 'uberReport',\n },\n {\n label: 'Lalamove 月訂單輸出',\n value: 'lalamoveReport',\n },\n {\n label: '餐廳製餐數報表輸出',\n value: 'restaurantReport',\n },\n {\n label: '餐廳製餐數報表輸出(按機構)',\n value: 'restaurantReportByOrg',\n },\n {\n label: '年度報表',\n value: 'yearlyReport',\n },\n {\n label: '餐飲服務費收據(弱勢長輩)',\n value: 'elderReceipt',\n },\n {\n label: '餐飲服務費收據(自費戶)',\n value: 'selfPayingReceipt',\n },\n {\n label: '送餐大使薪資表',\n value: 'deliveryStaffSalary',\n },\n {\n label: '會計對賬與簡訊表', // 彰化慈恩\n value: 'accountingSMS',\n },\n {\n label: '服務使用者分類統計表', // 彰化慈恩\n value: 'userType',\n },\n];\n","export default [\n {\n label: 'Uber',\n value: 'uber',\n },\n {\n label: 'Pandago',\n value: 'pandago',\n },\n {\n label: 'I-Link',\n value: 'ilink',\n },\n {\n label: 'Lalamove',\n value: 'lalamove',\n },\n {\n label: 'Lalamove(多點配送)',\n value: 'lalamove(multi-stop)',\n },\n];\n","export default [\n {\n label: '訂單設定',\n value: 'input',\n },\n {\n label: '送餐對象固定運費',\n value: 'fixed',\n },\n {\n label: '餐廳免運',\n value: 'free',\n },\n {\n label: '第三方平台',\n value: 'platform',\n },\n {\n label: '依距離計算',\n value: 'distance',\n },\n];\n"],"names":["CacheContext","createContext","useCache","useContext","CacheProvider","children","useState","userGroupOptions","setUserGroupOptions","isAdmin","setIsAdmin","appGroup","setAppGroup","cache","selectedUserGroupParams","setSelectedUserGroupParams","facilityIds","setFacilityIds","logoS3Keys","setLogoS3Keys","useEffect","some","userGroupName","newFacilityIds","forEach","userGroupOption","isActive","push","clientId","Provider","value","useStyles","makeStyles","theme","dialog","content","padding","overflowX","closeButton","position","right","spacing","top","color","palette","grey","CustomDialogTitle","onClose","other","classes","disableTypography","className","root","variant","onClick","MODES","signUp","name","icon","signIn","CustomAuthDialog","title","openOnInit","hideCloseButton","fullScreen","maxWidth","mode","button","open","setOpen","handleClose","e","reason","startIcon","titleButton","fullWidth","disableEscapeKeyDown","id","undefined","dividers","initialAuthState","CustomAuthenticator","inAuthState","currentAuthState","authState","setAuthState","shopClientMode","window","location","hostname","startsWith","SHOP_PREFIX","components","SignIn","Header","Hub","event","data","style","width","display","justifyContent","marginTop","marginLeft","marginRight","Auth","provider","customState","console","log","src","alt","alignItems","flex","borderBottom","SignUp","FormFields","validationErrors","useAuthenticator","label","options","counties","item","placeholder","onSelect","option","errorMessage","acknowledgement","hasError","fontSize","href","target","rel","underline","services","validateCustomSignUp","formData","handleSignUp","username","password","attributes","phoneNumber","phone_number","email","toLowerCase","autoSignIn","enabled","signUpResult","global","logger","debug","I18n","dict","state","querystring","search","setTimeout","initialState","formFields","isRequired","order","confirm_password","dialCodeList","signUpAttributes","handleNewRegisteredFacilityAdmin","userGroups","includes","request","registerFacilityAdmin","input","addressCounty","addressZipCode","addressDistrict","addressStreet","contact","registerResult","handleMissingClient","registerClient","res","getUserOrgAssigedFacilities","user","clientModeOnly","organizationId","length","asyncListAll","getClientOrganizationByOrganization","clientOrganization","facilities","reduce","accumulator","currentValue","find","client","clientMode","getUserRelatedFacilities","Promise","all","getClientsByUsernameByType","type","eq","userOwnedFacilites","orgAssignedFacilities","getUserOrg","getOrganization","organizationData","getUserGroupOptions","orderClientMode","signInUserSession","accessToken","payload","idToken","newUserGroupNameForFacilityAdmin","newUserGroupNameForClient","reload","getUser","existingUser","individualClients","cleints","items","clients","visitorMode","elderSetting","defaultUserGroupOptions","cognitoGroups","backendSignIn","clientOnly","filter","organizationClientIds","map","facility","clientData","ClientCard","inData","showMap","props","setData","mappings","key","format","formatAddress","formatGender","expand","getClient","link","editButton","IndividualClientEditButton","FacilityClientEditButton","onUpdate","DeliveryStaffCard","i18n","collapseDirection","notAdminMode","hide","formatEmergencyContact","formatBankAccount","getDeliveryStaff","DeliverStaffEditButton","ElderCard","t","useTranslation","formatAge","formatTags","getElder","ElderEditButton","background","default","listSubHeader","fontWeight","cursor","header","flexDirection","actions","zIndex","actionsSpace","margin","paddingLeft","paddingRight","InfoCard","collapse","inExpand","hideExpand","onCollapseChange","setExpand","filteredMappings","hasExpandFields","renderContent","CopyToClipboard","text","Colors","dense","disablePadding","component","disableSticky","newOpen","path","newTab","disabled","in","timeout","unmountOnExit","x","index","primary","primaryTypographyProps","noWrap","secondary","secondaryTypographyProps","wordBreak","address","container","RestaurantCard","adminMode","getRestaurant","RestaurantEditButton","RestaurantOwnerCard","restaurantId","restaurantOwnerId","getRestaurantOwner","RestaurantOwnerEditButton","itemContainer","minHeight","datetimeContainer","CustomTimeline","currentDate","sortKey","render","updatedData","formatDatetime","year","weekday","split","date","time","displayDatetime","sort","a","b","marginBottom","paddingTop","paddingBottom","borderRadius","Chip","url","backgroundColor","border","Link","to","RouteLink","textDecoration","height","TagChip","setValue","subcategory","getPropsByMode","listOptionsQueryName","createQueryName","linkKey","createJoinDataQueryName","deleteJoinDataQueryName","chip","listOptionsQueryOptions","freeSolo","category","getTagsByCategoryBySubcategory","createTag","createRestaurantTag","deleteRestaurantTag","createRestaurantMealTag","deleteRestaurantMealTag","createElderTag","deleteElderTag","DataJoinEditorInput","showHelperText","defaultValues","onChange","onUpdateOptions","inFreeSolo","loadOnOpen","allOptions","setAllOptions","displayedOptions","setDisplayedOptions","values","setValues","setFreeSolo","isOpen","setIsOpen","limit","results","Autocomplete","multiple","defaultValue","disableCloseOnSelect","renderTags","getTagProps","renderInput","params","TextField","newValues","replace","onOpen","filterOptions","filtered","inputValue","noOptionsText","renderOption","description","FormHelperText","summary","dayMapping","MealDateSelector","mealSlot","defaultSelectedDays","forceUpdateDefaultSelectedDays","unlockDates","openingHours","holidays","dateOnly","excludeToday","defaultTime","mealSlotTitle","getTranslatedMealSlots","hasSetDefault","setHasSetDefault","selectedDays","setSelectedDays","setTime","month","setMonth","shiftKeyPressed","setShiftKeyPressed","rangeSelectStart","setRangeSelectStart","handleKeyDown","handleKeyUp","document","addEventListener","removeEventListener","Date","newTime","moment","tz","TIME_ZONE","updateSelectedDays","hour","minute","days","day","dayItem","set","second","millisecond","toISOString","timeInSlot","startTime","endTime","toCheck","toMinutes","Number","modifiers","today","holiday","dateItem","holidaysToCheck","closedDays","Object","keys","every","openingHour","getDay","slot","tomorrow","setDate","getDate","direction","months","MONTHS","onMonthChange","weekdaysLong","WEEKDAYS_LONG","weekdaysShort","WEEKDAYS_SHORT","onDayClick","selected","selectedIndex","findIndex","selectedDay","DateUtils","splice","startDay","endDay","dayList","showWeekNumbers","disabledDays","before","modifiersStyles","locale","disableClock","required","boardTranslation","avatar","DeliveryStaffOrderPhoto","s3Key","uri","setUri","Storage","DetailFormDialog","exitConfirm","confirm","imgContainer","ImageGalleryUploader","s3Prefix","s3Keys","onUpdateS3Keys","isLoading","setIsLoading","files","setFiles","useDropzone","onDrop","newFiles","file","contentType","URL","createObjectURL","accept","getRootProps","getInputProps","onRemoveFile","fileIndex","s3KeyIndex","xs","textAlign","size","sm","md","lg","xl","onError","ImagePreviewAvatar","imageS3Keys","setS3Key","Array","isArray","LinearProgressWithLabel","mr","minWidth","Math","round","backdrop","drawer","Loading","align","iframe","Directions","startAddress","endAddress","setUrl","assign","origin","lat","lng","ignoreNote","includeZipCode","destination","queryParams","GOOGLE_KEY","join","allowFullScreen","Place","q","OrderCard","orderStatusString","getTranslatedOrderStatus","status","cancellationReason","cancellationReasons","cancellationNote","formatDatetimeFromNow","AdminOrderEditButton","DeliveryStaffOrderCard","inDeliveryResult","deliveryResult","result","deliveryStaffOrderStatus","latitude","longitude","Grid","photoS3Keys","maxHeight","paper","MealItems","List","ListItem","disableGutters","divider","ListItemText","note","quantity","cost","price","OrderDetails","setMap","info","setInfo","deliveryBy","mealItems","noteForMeal","noteForDelivery","restaurant","elder","bounds","googleStartAddress","startLocation","googleEndAddress","endLocation","overviewPolyline","addressFormatOptions","ignoreCountry","onLoad","React","fitBounds","north","northeast","south","southwest","east","west","onUnmount","getStartEndForDeliveryTime","start","end","deliveryPeriod","formatDeliveryPeriod","googleMapsApiKey","region","language","mapContainerStyle","zoom","formatPolyline","strokeColor","scaledSize","google","maps","Size","onCloseClick","pixelOffset","DeliveryStaffOrdersCard","Typography","deliveryStaff","updatedBy","space","Order","setClient","deliveryStaffOrder","setDeliveryStaffOrder","deliveryStaffOrders","setDeliveryStaffOrders","setDeliveryStaff","orderEvents","setOrderEvents","uberOrders","setUberOrders","pandagoOrders","setPandagoOrders","now","lastUpdatedAt","setLastUpdatedAt","getOrder","individualId","deliveryStaffId","getDeliveryStaffOrder","deliveryStaffOrderId","staff","staffOrder","getDeliveryStaffOrdersByOrder","orderId","getOrderEventsByOrderByCreatedAt","sortDirection","getPandagoOrdersByOrderByCreatedAt","getUberOrdersByOrderByCreatedAt","staffOrders","Container","OrderStatusProgress","OrderEventCard","events","UberOrderTable","PandagoOrderTable","appBar","Transition","ref","OrderDialog","inOpen","handleClickOpen","edge","TransitionComponent","elevation","timelineOnly","hideDetails","hideSource","createdBy","Timeline","activeStep","setActiveStep","completed","setCompleted","filteredOrderStatus","step","matched","nonLinear","alternativeLabel","ResetCancelledOrderButton","ordersSelected","progress","setProgress","onResetCancelledOrder","ordersCancelled","current","orderProcessed","toUpdateData","orderGroupId","toastr","orderDuration","s","Semaphore","runExclusive","tier","adminUpdateOrder","orders","errors","message","DeliveryStaffSelect","deliveryStaffOptions","setDeliveryStaffOptions","getDeliveryStaffIdSchema","deliveryStaffIds","enum","enumNames","sx","loading","getOptionLabel","InputProps","endAdornment","CircularProgress","InputLabelProps","shrink","UpdateOrderDeliveryStaffButton","noSubmit","newDeliveryStaff","setNewDeliveryStaff","handleSubmit","ordersUndelivered","onUpdateDeliveryStaff","Fragment","Button","Dialog","DialogTitle","DialogContent","DialogActions","LinkGroupElderSelect","linkGroupName","excludedElderId","elderOptions","setElderOptions","linkGroupElderIds","setLinkGroupElderIds","getEldersByClientByLinkGroupName","elders","filteredElders","filterSelectedOptions","newValue","UpdateOrderLinkGroupEldersButton","mealCount","orderElderId","shift","elderId","orderUpdated","onUpdateOrder","sameLinkGroup","sortedOrders","newLinkGroupElderIds","RestaurantMealSelect","restaurantOptions","setRestaurantOptions","restaurantIdSelected","setRestaurantIdSelected","getDefaultMealItem","setMealItems","restaurantMealOptions","setRestaurantMealOptions","orderConfigurations","setOrderConfigurations","getConfigurationValues","inConfigurationKey","parseInt","getRestaurantIdSchema","getConfigurationByCategoryByStatus","restaurantIds","newRestaurantId","getRestaurantMealsByRestaurantByIsActive","mealOptions","mealItem","AutoSelect","restaruantMeal","surcharges","inputProps","min","parseFloat","onWheel","currentTarget","blur","IconButton","Clear","Add","UpdateOrderRestaurantButton","restaurantMeal","setRestaurantMeal","total","totalCost","onUpdateRestaurant","newRestaurantMeal","UpdateOrderTimeButton","newDeliveryTime","setNewDeliverTime","newHour","newMinute","newDeliveryBy","updatedOrder","onUpdateDeliveryTime","UpdateOrderToCancelledButton","setCancellationReason","setCancellationNote","ordersUncancelled","orderGrouped","groupId","onSetOrdersAsCancelled","alert","UpdateOrderToCompletedButton","defaultDiary","diary","setDiary","ordersIncompleted","onSetOrdersAsCompleted","multiline","minRows","mapContainer","actionContainer","OrderStatusChip","matchedOrderStatus","reasonLabel","PlaceLalamoveMultiStopButton","quoteOrderResult","setQuoteOrderResult","orderIds","placeMultiStopOrder","onPlaceLalamoveOrder","elderIds","quoteMultiStopOrder","then","quoteResult","catch","error","code","deliveryStaffFee","meters","kilometers","roundedKm","convertMetersToKilometers","distance","deliveryQueue","lastWeek","add","todayDate","nextWeek","OrderTable","recurringOrderId","queryStatus","defaultIndex","inOrderIds","showElderTags","indexes","setIndexes","setQueryParams","useRef","defaultQueryOrderStatus","translatedOrderStatus","defaultIndexes","partitionKey","fields","operation","getOrdersByCountyByDate","orderSources","getOrdersByCountyByStatus","getOrdersByCountyBySource","getOrdersByStatusByDate","listOrders","expandableRows","isRowExpandable","renderExpandableRow","rowData","NestedTableContainer","columns","noPadding","selectableRows","isRowSelectable","translatedMealSlots","isTemplate","customBodyRender","shortuuid","fromUUID","slice","sortCompare","obj1","obj2","addr1","addr2","formatAddressLatLng","edit","renderValue","v","orderStatus","customFilterListOptions","tableMeta","updateValue","method","deliveryStaffFeeCalculationMethod","source","orderSource","download","print","LinkButton","updateOrdersByRecurringOrderId","getRecurringOrderLogByRecurringOrderIdByDate","ge","recurringOrderLogs","flat","updateOrdersByOrderIds","filterClientId","comparisonOperator","getOrdersByDeliveryStaffByDate","from","getOrdersByRestaurantByDate","getOrdersByRestaurantByCreatedAt","createdAt","getOrdersByClientByDate","getOrdersByElderByDate","county","DataTable","queryDefaultParams","onDataSelectionChange","dataSelected","customToolbarSelect","Toolbar","onRefresh","customDownloadData","tagIndex","tag","sortBy","onParamChange","PandagoOrderStatusChip","pandagoOrderStatus","PandagoOrderLogTable","rowsPerPageOptions","rowsPerPage","past","showQueryGenerator","setShowQueryGenerator","showNestedOrder","setShowNestedOrder","processlogs","JSON","parse","reverse","proofOfDeliveryS3Key","ProcessStatusChip","trackingLink","displayDataTypes","processStatus","getPandagoOrdersByProcessStatusByShouldBeSentToPandago","getPandagoOrdersByStatusByShouldBeSentToPandago","listPandagoOrders","shouldBeSentToPandagoAt","LinePayButton","redirectPath","onComplete","reportLoading","textButton","handleClick","subTotal","discount","discountRule","amount","linePayGetPaymentUrl","linePayGetPaymentUrlResult","transactionId","linePayTransactionId","linePayPaymentUrlWeb","linePayPaymentUrlApp","mobileCheck","amplifyConfig","pop","handleConfirm","linePayConfirmTransaction","linePayConfirmTransactionResult","opacity","boxShadow","NewebPayButton","clientBackPath","newebPayGetTradePostData","newebPayGetTradePostDataResult","postData","form","createElement","action","inputNewebPay","appendChild","body","submit","newebPayConfirmTransaction","newebPayConfirmTransactionResult","formControl","chips","flexWrap","QueryGenerator","defaultParams","autoStart","refreshAt","appendNewData","setSelectedIndex","setParams","nextToken","setNextToken","isStart","setIsStart","isEnd","setIsEnd","hasAutoStarted","setHasAutoStarted","undefinedValue","forceReload","inNextToken","queryAll","oldData","field","between","startOf","endOf","newItems","API","graphqlOperation","token","fromEntries","entries","renderField","labelId","reset","displayPrint","hidden","CheckboxesWithSelectAll","getDatesBetween","startDate","endDate","dates","isSameOrBefore","processNewRecurringOrderSetting","startOn","endOn","deliveryGroupId","repeatOn","oneMonthAfter","toCreateOrders","datesBetween","getElderDeliveryGroupByDeliveryGroupId","getElderWithSortOrder","sortOrder","deliveryDatetimes","week","lunchRepeatOn","dinnerRepeatOn","deliveryDatetime","deliveryGroupSortOrder","paymentMethod","toCreateRecurringOrder","defaultFormData","AdminRecurringOrderForm","inFormData","editMode","onlyShowFacilityRestaurant","setOnlyShowFacilityRestaurant","onlyShowFacilityDeliveryStaff","setOnlyShowFacilityDeliveryStaff","dataFormRef","isInitialRender","defaultSchema","require","schema","stringify","properties","updateSchema","createFunc","updateFunc","newData","deliveryGroup","updateRecurringOrder","getRecurringOrder","recurringOrder","FormControlLabel","control","Checkbox","checked","DataForm","uiSchema","extMappings","func","getElderIdSchema","AdminRecurringOrderEditButton","editItem","setEditItem","anchorEl","setAnchorEl","setEditMode","setToCreateOrders","setElders","setToCreateRecurringOrder","toUpdateRecurringOrder","setToUpdateRecurringOrder","openConfirmDialog","setOpenConfirmDialog","createResults","setCreateResults","createErrors","setCreateErrors","orderCreated","setOrderCreated","cancelOrdersProgress","setCancelOrdersProgress","toCancelOrders","setToCancelOrders","showBackdrop","setShowBackdrop","handleButtonClick","handleResetButtonClick","handleMenuClick","getRecurringOrderUpdated","cancelOrders","handleComplete","elderNameInErrors","adminCreateOrder","elderName","lastExecutedAt","lastExecutedStatus","lastExecutedStatusMessage","createRecurringOrder","updatedAt","resultsGroupedByDeliveryBy","acc","toCreateRecurringOrderLog","recurringOrderLog","createRecurringOrderLog","Tooltip","SettingsBackupRestore","Edit","Menu","keepMounted","Boolean","MenuItem","FormDialog","Warning","ListAlt","datetime","Check","Cancel","Backdrop","AdminRecurringOrderButtonFunc","AdminRecurringOrderPreviewTable","deliveryStaffs","setDeliveryStaffs","elderDeliveryGrops","setElderDeliveryGroups","getDeliveryStaffsByClientIdByIsActive","getEldersByClientByStatus","getElderDeliveryGroupsByClientByStatus","elderDeliveryGroups","recurringOrderMealSlot","elderIncluded","deliveryStaffName","getDelvieryStaffName","lunchMonday","dinnerMonday","lunchTuesday","dinnerTuesday","lunchWednesday","dinnerWednesday","lunchThursday","dinnerThursday","lunchFriday","dinnerFriday","lunchSaturday","dinnerSaturday","lunchSunday","dinnerSunday","AdminRecurringOrderPreviewButton","Visibility","AdminRecurringOrderPreviewFunc","RecurringOrderTable","inClientId","deliveryGroups","clientName","getRecurringOrdersByClientByStatus","getRecurringOrdersByDeliveryStaffByStatus","getRecurringOrdersByRestaurantByStatus","getRecurringOrdersByElderByStatus","recurringOrdersByElder","recurringOrdersByDeliveryGroups","getRecurringOrdersByDeliveryGroupByStatus","customButton","RestaurantDetails","inId","computedMatch","isNested","setId","tabs","setTabs","nested","TabPanel","p","role","Box","borderRight","panels","VerticalTabs","defaultTabIndex","tabIndex","setTabIndex","tab","isNaN","Tabs","orientation","tabName","searchParams","history","pushState","toString","Tab","listQuery","listQueries","queryFunc","disableUpdate","dataSortFunc","records","onRowSelectionChange","_currentRowsSelected","_allRowsSelected","rowsSelected","_d","updatedDataItem","buttonStyle","linkProps","placement","pathname","preventDefault","nestedContainer","nestedContainerNoPadding","childrenContainer","colSpan","footerStyle","withStyles","count","textLabels","page","changePage","changeRowsPerPage","TableFooter","TableRow","TableCell","labelRowsPerPage","labelDisplayedRows","displayRows","backIconButtonProps","previous","nextIconButtonProps","next","onPageChange","_","onRowsPerPageChange","numberContainer","loadingContainer","left","cell","cellStyle","createTheme","light","main","dark","contrastText","overrides","MUIDataTable","MUIDataTableHeadCell","MUIDataTableBodyCell","MUIDataTableSelectCell","expandDisabled","visibility","MUIDataTableFilter","MuiTab","Table","themeProps","onUpdateItem","onAddItem","onBatchAdd","EditButton","updatedColumns","setUpdatedColumns","groupKey","cachedVisibleColumnKey","cachedPageKey","cachedRowsPerPageKey","updatedOptions","enableNestedDataAccess","pagination","responsive","tableBodyHeight","filterType","fixedHeader","resizableColumns","downloadOptions","filename","separator","useDisplayedColumnsOnly","useDisplayedRowsOnly","onDownload","buildHead","buildBody","selectableRowsOnClick","selectedRows","displayData","setSelectedRows","onRowClick","rowMeta","dataIndex","customToolbar","Sync","CSVLink","GetApp","customFooter","noMatch","toolTip","columnHeaderTooltip","column","toolbar","downloadCsv","viewColumns","filterTable","titleAria","onViewColumnsChange","changedColumn","cacheVisiableColumns","indexOf","onColumnViewChange","args","newColumns","deepcopy","visibleColumns","customBodyRenderLite","prototype","hasOwnProperty","call","isInteger","onCopy","isChecked","val","Intl","NumberFormat","currency","jsonObj","indentWidth","collapsed","enableClipboard","displayObjectSize","tagList","pdfjs","pdfDocumentContainer","Terms","numPages","setNumPages","el","pdfDocument","cMapUrl","cMapPacked","verbosity","onLoadSuccess","nextNumPages","pageNumber","pdfDocumentPage","renderTextLayer","renderAnnotationLayer","customTextRenderer","offsetWidth","renderMode","scale","UberOrderStatusChip","uberOrderStatus","UberOrderLogTable","lastLog","courier","trackingUrl","getUberOrdersByProcessStatusByShouldBeSentToUber","getUberOrdersByStatusByShouldBeSentToUber","listUberOrders","shouldBeSentToUberAt","UserAvatar","descriptions","inValue","helperText","checkError","setInputValue","errorMsg","setErrorMsg","matchedIndex","newItem","onInputChange","newInputValue","optionIndex","getSampleOrder","mealItemName","mealItemQuantity","mealItemPrice","mealItemCost","mealItemNote","getDeliveryGroupsByClientByIsActive","getRestaurantHolidayByRestaurantByYear","AutoSelectWidget","AdminUpdateOrderForm","setDeliveryBy","dirty","setDirty","sum","updatedDatetime","OrderItem","onRemove","inRestaurantMealOptions","defaultLunchs","defaultDinners","defaultRestaurantId","defaultDeliveryStaffId","defaultMealItemNames","defaultCategory","defaultOpeningHours","defaultRestaurantHolidays","setElderId","setNoteForDelivery","setNoteForMeal","ORDER_CATEGORY_LABEL","setCategory","setPaymentMethod","setDeliveryStaffFee","setDeliveryStaffId","setRestaurantId","lunchs","setLunchs","dinners","setDinners","restaurantHolidays","setRestaurantHolidays","setOpeningHours","isLalamoveMultiStopOrder","setIsLalamoveMultiStopOrder","handleUpdate","obj","lalamoveMultiStopOrder","deliveryStaffIndex","test","defaultMealItemName","matchedMealItem","FormControl","restaurantSelected","restaurantOption","restaurantMeals","itemSummaryContainer","floatingCloseButton","buttonGroup","gap","settingName","OrderBatchForm","targetClientId","deliveryGroupOptions","setDeliveryGroupId","setDefaultRestaurantId","setDefaultMealItemNames","setDefaultCategory","setDefaultDeliveryStaffId","setDefaultLunchs","setDefaultDinners","setSettingName","originalSettingName","setOriginalSettingName","settingAnchorEl","setSettingAnchorEl","batchOrderSettingOptions","setBatchOrderSettingOptions","getClientFacilitySettings","facilitySettings","batchOrderSettings","batchOrderSettingsItems","setOrders","handleSave","newBatchOrderSettings","settingIndex","updateFacilitySettings","userName","newFacilitySettings","createFacilitySettings","facilitySettingsId","updateClient","usersLimit","eldersLimit","handleDelete","HighlightOff","newSetting","CreateNewFolderOutlined","FolderOpen","getContentAnchorEl","anchorOrigin","vertical","horizontal","transformOrigin","setting","loadSetting","onSettingChange","Save","Delete","meal","newMealItemNames","ORDER_CATEGORY","orderIndex","AdminCreateBulkOrderForm","allFormData","setAllFormData","setMessage","setTargetClientId","clientOptions","setClientOptions","setDeliveryGroupOptions","onlyShowFacilityCountyRestaurant","setOnlyShowFacilityCountyRestaurant","setShowMap","setUnlockDates","createMultiStopOrderResults","setCreateMultiStopOrderResults","multiStopOrders","setMultiStopOrders","lalamoveMultiStopDeliveryId","setLalamoveMultiStopDeliveryId","lalamoveMultiStopOrdersQuoteResult","setLalamoveMultiStopOrdersQuoteResult","validate","formIndex","duplicates","checkOrder","currentLocation","firstOccurrence","findDuplicateElders","formIndex1","formIndex2","orderIndex1","orderIndex2","getDateAndMealSlot","inDatetime","entity","checkLalamoveMultiStopOrderQuotation","toVerifyLalamoveOrders","lalamoveOrder","multiStopOrderResults","groupedMultiStopOrders","Error","allDeliveryDatetimes","chunkArray","dateTime","findOrderInGroup","foundOrder","orderInGroup","s2","triggerDownload","rows","newRow","worksheet","utils","workbook","writeFile","elderDeliverGroups","targetCounty","regex","getClientIdSchema","EmojiObjectsOutlined","formDataItem","updated","process","lineHeight","Motorcycle","multiStopOrder","formIndexDisplay","AccountTree","dateDisplay","mealSlotDisplay","SubmitButton","getTagsUiSchema","getMealItemsUiSchema","getEmergencyContactUiSchema","getAddressUiSchema","Close","ArrowUpward","ArrowDownward","iconProps","otherProps","IconComp","ArrayFieldTitle","TitleField","idSchema","$id","InputLabel","ArrayFieldDescription","DescriptionField","DefaultArrayItem","btnStyle","overflow","hasToolbar","hasMoveUp","hasMoveDown","readonly","onReorderClick","hasRemove","onDropIndexClick","DefaultFixedArrayFieldTemplate","canAdd","onAddClick","DefaultNormalArrayFieldTemplate","mt","registry","getDefaultRegistry","isMultiSelect","rootSchema","getTemplate","random","element","canExpand","onDropPropertyClick","onKeyChange","keyLabel","additional","ADDITIONAL_PROPERTY_FLAG","Input","onBlur","classNames","displayLabel","rawErrors","rawHelp","rawDescription","i","nums","Set","processValue","has","asNumber","guessType","autofocus","onFocus","enumOptions","emptyValue","autoFocus","formatValue","validator","customizeValidator","localizer","widgets","SelectWidget","TimeWidget","findKeyPaths","targetKey","keyPaths","findKeyPathsRecursive","currentObj","currentPath","getValueByPath","arrayKey","arrayIndex","forwardRef","inSchema","inUiSchema","hideSubmitButton","inDirty","inExtMappings","extUiMappings","inExtUiMappings","targetZipcodes","addressLiteVersion","setSchema","setUiSchema","setFormData","currentAddress","setCurrentAddress","setErrorMessage","showPlace","setShowPlace","mealOptionsList","setMealOptionsList","district","street","queryAddress","success","returnData","getMealOptions","getOrganizationIdSchema","getDeliveryGroupIdSchema","getRestaurantIdSchemaByClientId","getRestaurantOwnerIdSchema","getDeliveryStaffIdSchemaByClientId","getAddressSchema","getEmergencyContactSchema","getCountySchema","getMealItemsSchema","getSponsorProgramIdSchema","propertiesPathes","allPromises","promises","extSchema","useImperativeHandle","updateMealItems","newFormData","newMealItems","onSubmit","showErrorList","focusOnFirstError","debounce","countiesDistricts","districts","zipCode","templates","ArrayFieldTemplate","ArrayTemplate","ObjectFieldTemplate","FieldTemplate","DeliverStaffForm","createDeliveryStaff","resetFormCache","updateDeliveryStaff","deliveryStaffStatus","methodList","getFunc","updateDeliveryStaffOrder","updateElderDeliveryGroup","updateILinkOrder","updateIssue","updateOrder","updatePandagoOrder","updateUberOrder","updateLalamoveOrder","changeClientId","updatePromises","toUpdateRecords","ElderGallery","onUploadStart","onUploadEnd","ElderForm","useMemo","tags","setTags","newTagMappings","setNewTagMappings","isUploading","setIsUploading","openCancelOrderDialog","setOpenCancelOrderDialog","openChangeClientIdDialog","setOpenChangeClientIdDialog","clientIdInForm","setClientIdInForm","personalPhotoS3Keys","setPersonalPhotoS3Keys","homePhotoS3Keys","setHomePhotoS3Keys","receiptInfo","bankName","paymentBankIndex","bankName2","bankName3","handleTags","toRemoveJoinData","tagId","tagData","createdTag","joinData","getElderUpdated","serviceCode","disadvantagedTypesHistory","createElder","cancellAllInCompleteOrders","gt","and","ne","incompleteOrders","oldClientId","isClientChange","copyElder","cleanedData","newElderId","updateElder","elderUpdated","uuidv1","updatedFormData","getCustomizeDisadvantagedSettingsSchema","Divider","allTags","newTags","onChangeTags","LinearProgress","elderPaymentMethod","elderDeactivationReason","rotateIcon","transform","not","arrayA","arrayB","intersection","getDistrictsInCounty","inCounty","RestaurantSelection","restaurants","inRestaurants","setChecked","setLeft","setRight","activeCounty","setActiveCounty","setDistricts","activeDistrict","setActiveDistrict","allRestaurants","setAllRestaurants","publicRestaurantIds","setPublicRestaurantIds","leftChecked","rightChecked","restaurantsSelected","isPublic","districtRestaurants","onUpdateLocation","handleToggleRestaurant","currentIndex","newChecked","getOutRestaurants","newRight","newPublicRestaurantIds","handleToggleIsPublic","stopPropagation","customList","showPublic","Paper","ListItemIcon","disableRipple","CheckCircle","RadioButtonUnchecked","districtsInCounty","concat","DoubleArrow","KeyboardArrowRight","newLeft","DeliveryStaffSelection","inDeliveryStaffs","allDeliveryStaffs","setAllDeliveryStaffs","deliveryStaffsSelected","countyDeliveryStaffs","handleToggleDeliveryStaff","getOutDeliveryStaffs","FacilityClientForm","orderableRestaurants","setOrderableRestaurants","assignableDeliveryStaffs","setAssignableDeliveryStaffs","getClientShortId","shortId","tempShortId","floor","getClientsByShortId","useDedicatedDeliveryStaffs","featureConfiguration","createClient","skipRegisterSteps","skipDocumentsUpload","hideSToken","supportNumber","dementiaQuestionnaire","reportTypes","tooltip","FacilitySettingsForm","SettingsIcon","supportedPartners","currentImageLogoS3Keys","setCurrentImageLogoS3Keys","currentImageCompanyStampS3Keys","setCurrentImageCompanyStampS3Keys","currentImageChairmanStampS3Keys","setCurrentImageChairmanStampS3Keys","currentImageAccountantStampS3Keys","setCurrentImageAccountantStampS3Keys","currentImageHandlerStampS3Keys","setCurrentImageHandlerStampS3Keys","newImageLogoS3Keys","setNewImageLogoS3Keys","newImageCompanyStampS3Keys","setNewImageCompanyStampS3Keys","newImageChairmanStampS3Keys","setNewImageChairmanStampS3Keys","newImageAccountantStampS3Keys","setNewImageAccountantStampS3Keys","newImageHandlerStampS3Keys","setNewImageHandlerStampS3Keys","facilityMode","companyStampS3Keys","chairmanStampS3Keys","accountantStampS3Keys","handlerStampS3Keys","lunchStartTime","lunchEndTime","dinnerStartTime","dinnerEndTime","deliverySetting","IndividualClientForm","openingHoursUiSchema","compareObjects","AreaSelection","areas","handleToggle","arraysContainSameElements","array1","array2","sortedArray1","sortedArray2","RestaurantForm","currentImageS3Keys","setCurrentImageS3Keys","newImageS3Keys","setNewImageS3Keys","serviceAreas","setServiceAreas","newSelectedDays","closedDay","toDate","handleHolidays","newRestaurantHolidays","toCreateHolidays","toUpdateHolidays","existingHoliday","restaurantHoliday","updateRestaurantHoliday","expirationUnixTime","createRestaurantHoliday","getRestaurantOwnerUsername","inRestaurantOwnerId","owner","createRestaurant","updateRestaurant","showOutsideDays","newAreas","getOpeningHoursArraySchema","RestaurantOwnerForm","createRestaurantOwner","updateRestaurantOwner","allowCustomInput","referenceOptions","optionDescriptoins","handleChange","optionValue","tooltipLabel","formCache","filterByLocation","inElderId","inTitle","shouldReturnOriginalRecords","includeNoteForMeal","inDeliveryGroupId","getDeliveryGroup","includeAll","nonNull","cacheKey","customizeSettings","customizeDisadvantagedSettings","inOrganizationId","inRestaurantId","restaurantItem","toGetRestaurantIds","record","recordsByRestaurantIds","restaurantOwner","inDeliveryStaffId","includePartners","includeMultiStopPartners","deliveryStaffItem","toGetDeliveryStaffIds","recordsByDeliveryStaffIds","unshift","partners","partner","partnerUsername","partnerDeliveryStaff","targetCounties","targetCountiesDistricts","countiesDistrict","addressSchema","availableDistricts","getSponsorshipProgram","unit","unitValue","adminUpdateOrderMeal","clientCreateOrder","individualClientCreateOrder","adminUpdateUserGroup","pandagoAddOutlets","createAuditTrail","createClientAppBanner","updateClientAppBanner","createClientOrganization","updateClientOrganization","deleteClientOrganization","createConfiguration","updateConfiguration","createDeleteMyAccountRequest","createDeliveryGroup","updateDeliveryGroup","deleteDeliveryGroup","createDeliveryStaffTransaction","updateDeliveryStaffTransaction","createDementiaQuestionnaire","updateDementiaQuestionnaire","createElderDeliveryGroup","deleteElderDeliveryGroup","createElderForm","updateElderForm","deleteElderForm","createForm","updateForm","createIssue","createIssueComment","createMembership","updateMembership","createMembershipProgram","updateMembershipProgram","createOrganization","updateOrganization","createRestaurantMeal","updateRestaurantMeal","deleteRestaurantMeal","createSponsorship","updateSponsorship","createSponsorshipProgram","updateSponsorshipProgram","updateTag","quoteOrder","queryPublicOrder","listAdmins","listAuditTrails","listClients","listConfigurations","listDeliveryStaffs","listDeliveryStaffOrders","listDeliveryStaffTransactions","listDementiaQuestionnaires","listElders","listElderDementiaSurveys","listILinkOrders","listInvoices","getIssue","listIssues","listLalamoveOrders","getMembership","listMemberships","getMembershipProgram","listMembershipPrograms","listNotifications","getOrderQuote","listOrderQuotes","listOrganizations","listRestaurantOwners","listSponsorships","listSponsorshipFulfillments","listSponsorshipPrograms","getTransaction","listTransactions","listUsers","listWebhookEvents","getAuditTrailsByGroupNameByTimestamp","getAuditTrailsByFacilityIdByTimestamp","getClientsByTypeByCounty","getClientMonthlyStatementsByClientIdByMonth","listDeleteMyAccountRequestByUsername","getDeliveryStaffsByCountyByCreatedAt","getDeliveryStaffsByCountyByIsActive","getDeliveryStaffsByIsActiveByCreatedAt","getDeliveryStaffMonthlyStatementsByDeliveryStaffIdByMonth","getDeliveryStaffOrdersByStaffByDate","getDeliveryStaffOrdersByStatusByDate","getDeliveryStaffOrdersByCountyByDeliveryBy","getDeliveryStaffTransactionByDeliveryStaffIdByCreatedAt","getDeliveryStaffTransactionByStatusByCreatedAt","getEldersByClient","getEldersByCountyByCreatedAt","getEldersByCountyByStatus","getElderDeliveryGroupByElder","getElderDementiaSurveyByClientByDate","getElderFormsByElderByCreatedAt","getEventsByClientByTimestamp","getILinkOrdersByStatusByShouldBeSentToILink","getILinkOrdersByProcessStatusByShouldBeSentToILink","getInvoicesByStatusByCreatedAt","getIssuesByCountyByCreatedAt","getIssuesByCountyByStatus","getIssuesByElderByCreatedAt","getIssuesByStatusByCreatedAt","getIssuesByClientByCreatedAt","getIssuesByClientByStatus","getIssueCommentsByIssueByCreatedAt","getLalamoveOrdersByStatusByShouldBeSentToLalamove","getLalamoveOrdersByProcessStatusByShouldBeSentToLalamove","getMembershipByClientIdByStatus","getMembershipByStatusByExpiredAt","getMembershipProgramsByIsActiveByCreatedAt","getNotificationsByDeliveryStaffIdByCreatedAt","getNotificationsByClientIdByCreatedAt","getNotificationsByRestaurantOwnerIdByCreatedAt","getOrdersByClientByStatus","getOrderQuotesByCodeByCreatedAt","getRestaurantOwnersByCountyByCreatedAt","getSponsorshipsByClientIdByStatus","getSponsorshipsByStatusByCreatedAt","getSponsorshipFulfillmentsBySponsorshipIdByStatus","getSponsorshipProgramsByIsActiveByCreatedAt","getTransactionsByStatusByCreatedAt","getUsersByClientIdByIsActive","getUsersByOrganizationIdByIsActive","getWebhookEventsByVendorByCreatedAt","listClientAppBanners","getFormsByClientByStatus","listRestaurants","getRestaurantsByCountyByIsActive","getRestaurantsByClientByIsActive","getRestaurantsByRestaurantOwnerIdByIsActive","getRestaurantMeal","listTags","Changing","Code","Confirm","Confirming","Email","Name","Password","Sending","Skip","Submit","Submitting","Username","Verify","or","TypeError","defaultLng","i18nInit","Backend","use","initReactI18next","init","backend","loadPath","fallbackLng","ns","keySeparator","interpolation","escapeValue","logLevel","localStorage","getItem","Logger","disableYellowBox","ignoredYellowBox","disableReactDevTools","check","navigator","userAgent","vendor","opera","substr","toIgnoreWarnings","originalWarn","warn","authListener","authErrorCodes","App","appRoutes","filteredRoutes","setFilteredRoutes","roles","group","demoOnly","route","exact","SHORT_NAME","property","AuthenticatedApp","match","version","appConfig","envName","env","versionString","Version","recordEvent","groupName","facilityId","timestamp","signOut","transition","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","DRAWER_WIDTH","easeOut","enteringScreen","menuButton","flexShrink","drawerPaper","drawerHeader","mixins","flexGrow","contentShift","unstyledHyperlink","unstyledHyperlinkPrimary","flexbox","select","borderBottomColor","img","objectFit","CustomAppBar","customer","routes","matcheMediaQuery","useMediaQuery","setName","shortName","setShortName","openMenu","setOpenMenu","setLocation","organizationAnchorEl","setOrganizationAnchorEl","facilityAnchorEl","setFacilityAnchorEl","locationAnchorEl","setLocationAnchorEl","organizations","setOrganizations","filteredOrganizations","setFilteredOrganizations","setFacilities","filteredFacilities","setFilteredFacilities","isClient","setIsClient","isFacilityAdmin","setIsFacilityAdmin","isOrgAdmin","setIsOrgAdmin","openDrawerSubmenu","setOpenDrawerSubmenu","useCustomAuth","clientLogo","setClientLogo","clientShortId","setClientShortId","anchorRef","prevOpen","handleCloseMenu","contains","handleDrawerOpen","handleDrawerClose","onFilterOrganization","onFilterFacility","getFacilitiesWithCountyLabel","handleSignOut","focus","NAME","groupedFacilities","facilitiesWithCountyLabel","isCountyLabel","bypassCache","logo","AppBar","clsx","VerticalSplit","Hidden","mdUp","publicRoutes","showOnHeader","ticking","timezone","fontFamily","onKeyDown","orgData","ListSubheader","removeItem","smDown","borderColor","Popper","disablePortal","ClickAwayListener","onClickAway","MenuList","autoFocusItem","Drawer","anchor","hideFromMenu","subMenu","folderIndex","folder","newOpenSubmenu","menuIndex","KeyboardArrowDown","Collapse","badge","ExitToApp","renderUserDrawerMenu","loginButton","IndividualClientAppBar","withButton","PersonOutlineOutlined","winboxOptions","y","bottom","Winbox","show","setShow","setTitle","setContent","winboxListener","reducers","toastrReducer","reducer","combineReducers","createStore","Footer","UserGroupSelector","onSelectedUserGroup","firstActiveGroup","FormLabel","RadioGroup","userGroupStatus","Radio","Reset","PublicOrderCard","PublicDeliveryStaffOrderCard","checklists","Card","CardContent","CheckBox","CheckBoxOutlineBlank","formatNote","PublicOrder","invalidOrder","setInvalidOrder","getInfo","getZipCode","onGoPage","setCounty","setDistrict","setStreet","Select","newCounty","newDistricts","onCountyChange","AutoSizeDialog","useTheme","breakpoints","down","PaperProps","OpeningHoursDialog","showDialog","setShowDialog","renderOpeningHours","formatTime","timeString","allHolidays","renderHoliday","card","mediaContainer","media","imageContainer","MealItem","onChecked","disableCheck","onOrderUpdate","imgSrc","setImgSrc","newImgSrc","quotation","gutterBottom","CardMedia","image","onerror","restaurantClosed","AddressInput","setNote","updateAddress","toUpdateProps","updatedAddress","actionButton","AddressDialog","allowEdit","setAddress","whiteSpace","ReceiverInput","receiver","setReceiver","updateReceiver","updatedReceiver","phoneNumber2","phoneNumber3","ReceiverDialog","InvoiceInput","invoice","setInvoice","updateInvoice","updatedInvoice","row","carrier","taxIdNumber","InvoiceDialog","invoiceValid","PaymentInput","payment","setPayment","updatePayment","updatedPayment","defaultPayment","PaymentDialog","OrderDetail","defaultAddress","defaultReceiver","defaultInvoice","formatInvoice","formatReceiver","receiverDisplay","formatPayment","settingTitle","settingBlock","CompleteOrderDialog","agreeTerms","setAgreeTerms","agreeCancelInvoice","setAgreeCancelInvoice","mealTotalPrice","setMealTotalPrice","totalDeliveryStaffFee","setTotalDeliveryStaffFee","useHistory","clientOption","existingElders","existingReceiver","settings","editComponent","onSettingUpdate","transaction","needCreateElder","needUpdateElder","existingElder","isAllowedToEnterHome","isDisadvantaged","getInvoiceSetting","orderQuoteId","invoiceSetting","formDateInvalid","validReceiver","meals","qty","TIME_OPTIONS_LUNCH","TIME_OPTIONS_DINNER","showCompleteOrderDialog","setShowCompleteOrderDialog","allDateTime","setAllDateTime","solution","setSolution","buttonText","setButtonText","setInit","setOrdersSelected","allRestaurantsAvailable","setAllRestaurantsAvailable","quoteOrders","orderQuotation","getTimeSlotOptions","defaultTimeSlotOptions","filteredOptions","slotStart","slotEnd","checkRestaurantClosed","restaurantClosedOnDateSelected","dateToCheck","holidaysSetting","restaurantClosedOnDate","lunchTimeSlotOptions","dinnerTimeSlotOptions","restaurantClosedAtTimeSlotSelected","buildOrders","addedMeals","lunch","dinner","arrangedMeals","addedMeal","rearrangeMeals","orderDataValidator","tempOrder","tempDateTime","newOrdersSelected","onOrderChecked","orderItems","getOrdersByIndividualByDate","mealItemsString","hightlight","extraFee","platformFee","orderLabel","orderInfo","setOrderInfo","serviceProvider","showTransactionDetailDialog","setShowTransactionDetailDialog","setTransactionId","tabValue","setTabValue","filteredOrders","setFilteredOrders","tabLabels","indicatorColor","textColor","centered","onOrderClick","DeliveryStaffOrderDiaryCard","inDeliveryStaffOrder","deliveryStartedAt","deliveryDeliveredAt","thumbnail","elderDementiaSurvey","response","question","getDeliveryStaffOrdersByClientByDate","DEFAULT_IMAGE_URL","InformationDialog","updateInformation","updatedClient","submitClient","memberSettings","setLunch","setDinner","AddressDateTimeSettingsDialog","activeStepData","setActiveStepData","addressValidator","steps","AddressSettings","DateSettings","TimeSettings","getStepData","stepIndex","Stepper","Step","StepButton","dataValid","prevActiveStep","MealItemDialog","inQuantity","setQuantity","imageUrl","restaurantName","handleAddMealItem","RemoveCircle","AddCircle","RestaurantMeals","onMealClick","filters","filteredMeals","setFilteredMeals","shouldDisplay","targetValues","tagItem","tagsString","Badge","badgeContent","addNeighbors","uniqueNeighbors","countiesGeoJson","neighbors","neighbor","getDateTimeLabel","pages","Location","showNavigtion","nextPage","setRestaurants","setMeals","setFilters","selectedMeal","setSelectedMeal","selectedRestaurant","setSelectedRestaurant","selectedQuantity","setSelectedQuantity","setAddedMeals","dateTimeLabel","setDateTimeLabel","openMealItemDialog","existingAddedMeal","locationsAndNeighbors","countyRestaurants","elderAddress","nearbyRestaurants","area","point","AccessTime","RoomOutlined","textOverflow","newFilters","existingAddedMealIndex","newAddedMeals","handleAddMeal","Home","Cart","ShoppingCartOutlined","Diary","FavoriteBorder","Member","Menu2","activePage","setActivePage","goPage","pageKey","defaultPage","scrollTo","BottomNavigation","newActivePage","showLabels","BottomNavigationAction","Leaflet","iconRetinaUrl","iconUrl","shadowUrl","browserChannel","BroadcastChannel","awsconfig","domain","scope","redirectSignIn","redirectSignOut","responseType","Amplify","Analytics","createBrowserHistory","amplifyTheme","tokens","authenticator","modal","colors","font","brand","up","ReactApp","isSignedIn","setIsSignedIn","setUser","i18nReady","setI18nReady","needToGetUserGroupOptions","setNeedToGetUserGroupOptions","setShopClientMode","GROUP_ORDER_PREFIX","setOrderClientMode","oldInstanceFound","checkAppVersion","versionInCache","publicOrderPathRegex","liff","liffId","liffIds","initialPath","err","cognitoUser","unlisten","listen","organization","resolve","refreshToken","getSignInUserSession","refreshSession","session","translation","onmessage","postMessage","performance","getEntriesByType","individualClientMode","customComponent","IndividualClientLandingPage","getCustomComponent","RootApp","ThemeProvider","store","timeOut","newestOnTop","preventDuplicates","transitionIn","transitionOut","progressBar","closeOnToastrClick","rootElement","getElementById","hasChildNodes","hydrate","serviceWorker","ready","registration","unregister","Component","inUser","isAuthenticated","setIsAuthenticated","isAuthorized","setIsAuthorized","UserForm","facilityOptions","setFacilityOptions","setOrganizationId","updateFacilityOptions","newFacilityOptions","isSelected","ownedFacilityName","isRestaurantOwner","isDeliveryStaff","newIsFacilityAdmin","newOrganizationId","UserFormEditButton","Form","LIMIT","apiName","getHeaders","getAccessToken","getJwtToken","normalizeCognitoUserData","inCognitoUser","UserStatus","Enabled","UserCreateDate","UserLastModifiedDate","Attributes","Value","listUsersInGroup","groupname","listAll","inResults","queryStringParameters","headers","NextToken","users","Users","addUserToGroup","removeUserFromGroup","disableUser","enableUser","UserTable","selectedCognitoGroupIndex","setSelectedCognitoGroupIndex","onUpate","newEnabled","sourceData","updateGroupPromises","groups","allUsers","groupUsers","getFormFieldsValueMapping","fieldName","identificationCardId","formatBirthday","birthday","gender","emergencyContact","relationship","getDisadvantagedType","InteractivePdfViewer","fileS3Key","onSaveForm","fileUrl","setFileUrl","annotations","setAnnotations","pageDimensions","setPageDimensions","renderPdf","saveForm","fetch","arrayBuffer","existingPdfBytes","PDFDocument","pdfDoc","getForm","ok","statusText","fontBytes","registerFontkit","fontkit","embedFont","subset","rawUpdateFieldAppearances","updateFieldAppearances","bind","annotation","fieldType","getCheckBox","uncheck","getTextField","setText","save","pdfBytes","blob","Blob","Document","pageDimension","Page","prev","onPageLoadSuccess","onGetAnnotationsSuccess","annotationsOnPage","filteredAnnotations","formFieldsValueMapping","initializedAnnotations","fieldValue","mapping","prevAnnotations","rect","handleCheckboxChange","handleTextChange","PdfViewer","pdf","setPdf","renderPDF","loadingTask","promise","renderPage","canvas","getPage","viewport","getViewport","context","getContext","renderContext","canvasContext","printForm","blobUrl","printWindow","onload","saveAs","FileUploader","inS3Key","onUpdateS3Key","setFile","maxFiles","maxSize","fileName","ElderFormUploader","currentFileS3Key","setCurrentFileS3Key","newFileS3Key","setNewFileS3Key","ElderFormFormEditButton","forms","openEdit","setOpenEdit","openPreview","setOpenPreview","openUpload","setOpenUpload","formId","fileDownload","fileResponse","handleDeleteForm","CloudDownload","CloudUpload","ElderFormTable","setForms","IssueTimeline","issue","comments","reportedBy","timeline","Issue","onUpdateComment","onUpdateIssueStatus","setComments","commentText","setCommentText","issueStatus","setIssueStatus","issueId","allIssueStatus","SocialWorkerDiaryEditButton","defaultElder","inIssue","setIssue","issueDescription","setIssueDescription","setElder","handleCreateIssue","issueInput","priority","updatedIssue","handleUpdateIssue","oldstatus","newStatus","comment","selectOnFocus","clearOnBlur","localeCompare","lastMonth","SocialWorkerDiaryTable","matchedStatus","formatComments","statusIndex","commentIndex","c","deliveryStaffOrderItems","getDeliveryStaffOrdersByStaffByStatus","getDeliveryStaffOrdersByElderByDate","DeliveryStaffOrderDiaryCardDialog","buttonSize","DeliveryStaffOrderIssueDialog","hasIssue","newIssue","tooltipTitle","Bookmark","issueColor","BookmarkBorder","shortest","expandOpen","red","hideNames","expanded","setExpanded","updateFavorite","newDeliverStaffOrder","favorite","deliveryCompletedAt","CardHeader","Favorite","subheader","CardActions","disableSpacing","PersonPin","ExpandMore","componentRef","DeliveryDiary","showFavorite","inShowFavorite","showIssue","inShowIssue","showedData","setShowedData","setHideNames","showTransferOnly","setShowTransferOnly","showNotAtHome","setShowNotAtHome","setShowFavorite","setShowIssue","filteredData","setFilteredData","itemCount","setItemCount","orderCount","setOrderCount","newFilteredData","checkListTransfer","prevCounter","updatedItems","allData","hasMore","scrollableTarget","dataLength","loader","endMessage","trigger","printContents","cloneNode","noPrintElements","getElementsByClassName","remove","newDeliveryStaffOrder","getOrderStatusProps","getDeliveryScheduleStatusProps","getMealName","fullCalendarPlugins","dayGridPlugin","timeGridPlugin","listPlugin","interactionPlugin","momentTimezonePlugin","sampleEvents","extendedProps","ScheduleCalendar","restaurantSchedules","onDateChange","orderCheckRules","checkDinner","checkLunch","setEvents","setOrderId","view","setView","openOrderCheck","setOpenOrderCheck","popupContent","setPopupContent","mealName","getOrderEvents","restaurantScheduleEvents","statusLabel","getRestaurantScheduleEvents","handlePopupClose","renderDayCellContent","dayCellInfo","eventCountByStatus","waitingForDeliveryStaff","reMatchingDeliveryStaff","readyForPickup","delivering","delivered","cancelled","missingLunchOrder","missingDinnerOrder","duplicatedLunchOrder","duplicatedDinnerOrder","beyondPlanLunchOrder","beyondPlanDinnerOrder","dateString","targetDate","isBetween","clone","subtract","isWithin30Days","dateEvents","lunchCount","dinnerCount","elderContent","ErrorOutline","dayNumberText","zhLocale","listDay","listWeek","listMonth","timeZone","plugins","headerToolbar","center","initialView","nowIndicator","weekNumbers","navLinks","editable","selectable","selectMirror","dayMaxEvents","dayCellContent","dayHeaderContent","weekends","viewDidMount","eventDisplay","eventOrder","eventContent","renderEventContent","eventClick","_def","datesSet","dateInfo","businessHours","daysOfWeek","eventInfo","timeText","DATE_FORMAT","getDates","Schedule","defaultLocations","defaultOrderStatus","showLocationSelector","showDeliverStaffSelector","showElderSelector","targetOrderStatus","setTargetOrderStatus","setTargetCounties","targetDeliveryStaffIds","setTargetDeliveryStaffIds","targetElderIds","setTargetElderIds","targetMealSlots","setTargetMealSlots","setDateInfo","orderMappings","setOrderMappings","queryPromsies","asyncListAllWrapper","queryName","clientFilter","sortedItems","sortOrdersByDeliveryGroups","shouldRender","Refresh","newDateInfo","newFromDate","startStr","newToDate","endStr","fromDate","collapsibleGrid","ElderDetails","isCardOpen","setIsCardOpen","parentRef","containerWidth","setContainerWidth","isSm","isFacilityAdmins","updateWidth","resizeObserver","ResizeObserver","observe","disconnect","urlId","adminsOnly","wrap","ElderTable","setListQueries","orgMode","cachedClientId","renderRepeatOn","hideInFacilityMode","hideInOrgMode","clientParams","names","logic","filterVal","age","phone","prefix","maskedPart","value1","value2","elderStatus","ImageAvatar","s3KeyPrefix","imageUri","setImageUri","Avatar","DeliveryStaffDocumentTable","documents","DeliveryStaffMonthlyStatementTable","DeliveryStaffDetails","DeliveryStaffTable","assignableDeliveryStaffIds","wordWrap","device","osName","osVersion","modelName","setUserData","setFacilityName","assignedFacilityName","setOrgName","orgName","setRestaurantName","commonIconProps","iconSize","iconAnchor","popupAnchor","shadowSize","shadowAnchor","shadowClassName","iconList","L","number","createIcon","div","this","_createImg","numdiv","setAttribute","innerHTML","_setIconStyles","createShadow","imgShadow","getIcon","inColor","locations","locationFocused","defaultCenter","inputCoordinates","invalidateSize","MapContainer","scrollWheelZoom","whenCreated","TileLayer","attribution","mapLayer","Marker","zIndexOffset","Popup","Search","Polyline","positions","CustomLaneHeader","draggable","onDeleteLane","onCopyLane","onSortLane","showInput","setShowInput","newLaneName","setNewLaneName","menuAnchorEl","setMenuAnchorEl","MoreVert","trim","CustomDeliveryGroupLaneHeader","updateTitle","canAddLanes","editLaneTitle","resize","onSave","defaultProps","convertElderToCard","elderDeliveryGroup","showAddress","hasDuplicate","isUnassigned","nickname","cardData","metadata","bgcolor","FIXED_SOURCE_LANE_ID","eventBus","app","centerContent","centerContentShrink","mapWidth","popup","popupActive","ElderDeliveryGroupBoard","setMapWidth","lanes","setLanes","searchText","setSearchText","setDeliveryGroups","setShowAddress","showDuplicated","setShowDuplicated","showUnassigned","setShowUnassigned","setLocations","setLocationFocused","laneSelected","setLaneSelected","isReady","setIsReady","sourceLanePosition","setSourceLanePosition","setRoute","customTranslation","createTranslate","onCardDelete","cardId","laneId","cardToDelete","cards","newElderDeliveryGroups","indexToDelete","handleAddLane","newDeliveryGroup","newDeliveryGroups","handleCopyLane","deliveryGroupToCopyIndex","matchedElderDeliveryGroups","newGroup","newElderDeliveryGroup","handleSortLane","elderAddressList","coordinates","json","trips","geometry","encodedPolyline","decodedRoute","waypoints","waypoint_index","updatedElderDeliveryGroups","handleUpdateLane","handleDeleteLane","matchedElderDeliveryGroupIds","recurringOrders","handleLaneDragEnd","oldIndex","newIndex","movedDeliveryGroup","newSourceLanePosition","onCardMoveAcrossLanes","sourceLaneId","targetLaneId","toCreate","toUpdate","sourceLane","currentCard","targetLane","copiedCard","elderDeliveryGroupId","elderDeliveryGroupData","publish","updateGroup","allElders","duplicateElderIds","unassignedElderIds","firstLane","disallowAddingCard","hideCardDeleteIcon","droppable","convertDeliveryGroupToLane","laneShowOnMap","lane","newLocations","mapRef","FormGroup","DebounceInput","debounceTimeout","laneDraggable","cardDraggable","cardStyle","onLaneAdd","onLaneDelete","onLaneUpdate","handleDragEnd","cardDetails","eventBusHandle","handle","AddCardLink","LaneHeader","cardInfo","handleCardClick","showDeleteButton","prevWidth","ArrowLeft","ArrowRight","fulfilledCount","fulfilledValue","sponsorProgram","fulfillments","SponsorshipFulfillmentTable","sponsorshipId","SponsorshipTable","NotificationTable","listEvents","LAUNCH_DATE","RestaurantTable","setListQuery","serivceAreas","orderableRestaurantIds","membershipStatus","MembershipForm","MembershipFormEditButton","CustomStatusChip","MembershipTable","DateRangeSelector","isDirty","setIsDirty","desireStartDate","setDesireStartDate","desireEndDate","setDesireEndDate","DayPickerInput","formatDate","onDayChange","dayPickerProps","after","SummaryCard","prevValue","appendix","period","showDiff","diff","toFixed","isSame","isIncreased","desc","abs","ArrowDropUp","ArrowDropDown","green","PieCard","inData2","data2","colorFunc","scheme","pixelRatio","innerRadius","padAngle","cornerRadius","arcLabelsSkipAngle","arcLabelsTextColor","enableSlicesLabels","slicesLabelsSkipAngle","slicesLabelsTextColor","animate","motionStiffness","motionDamping","legends","translateX","itemWidth","itemHeight","itemsSpacing","symbolSize","symbolShape","enableArcLinkLabels","BarCard","dataKeys","indexBy","groupMode","axisTop","axisRight","enableTotals","labelSkipWidth","labelSkipHeight","labelTextColor","dataFrom","justify","translateY","itemDirection","itemOpacity","effects","on","LineCard","xScale","yScale","max","stacked","axisLeft","tickValues","enablePoints","enablePointLabel","enableGridX","serieId","xFormatted","yFormatted","useMesh","PlotCard","blendMode","axisBottom","orient","tickSize","tickPadding","tickRotation","legend","legendPosition","legendOffset","getStartEndByPeriodName","inPeriod","startBaseline","endBaseline","exactStartDate","exactEndDate","startFormat","endFormat","startBaseNumber","endBaseNumber","prevStart","prevEnd","startISO","endISO","isBefore","getOrders","onUpdateLastItem","asyncListAllAndUpdateLastItem","getIssues","getLoginLogs","auditTrails","periodOptions","periodOptions2","filterContainer","screenshotContainer","Dashboard","createRef","useScreenshot","quality","takeScreenshot","downloadImage","extension","createFileName","click","chartData","setChartData","setPeriod","setStartDate","setEndDate","isTakingScreenshot","setIsTakingScreenshot","progressDate","setProgressDate","getImage","node","issues","loginLogs","chartDataMappings","issueOrderIds","lunchOrders","dinnerOrders","totalOrders","totalOrdersValue","num","orderIssueRatio","totalIssues","lunchStatus","dinnerStatus","orderByDate","barValue","loginByDate","filteredLoginLogs","getChartDataMappings","ButtonGroup","Print","renderChart","ClientDetails","setWidth","ClientChip","clientStatus","FacilityClientTable","setQueryFunc","OrganizationForm","originClients","setOriginClients","handleClientPermissions","newClients","toCreateClients","toUpdateClients","toRemoveClients","showVisitorModeWarning","settingId","newClient","hasDuplicateClients","idSet","createdOrganization","OrganizationEditButton","OrganizationCard","clientIds","setLastProgressUpdated","progressStatus","getClientName","OrganizationDetails","OrganizationTable","facliityIndex","facilityNames","IndividualClientTable","translationTypes","DeliveryStaffTransactionTable","deliveryStaffTransactionTypes","deliveryStaffTransactionStatus","DeliveryStaffChip","queryIsActive","DeliveryStaffOrderStatusChip","iLinkOrderStatus","ILinkOrderLogTable","ILinkOrderTable","Type","shouldBeSentToILinkAt","LalamoveOrderStatusChip","lalamoveOrderStatus","LalamoveOrderLogTable","LalamoveOrderTable","orderIdsArray","driver","shareLink","shouldBeSentToLalamoveAt","OrderPage","prevStartFormat","prevEndFormat","getNewElders","getNewDeliveryStaffs","monthOptions","fill","offset","filteredIssueStatus","IssueStatusProgress","orderContainer","selectFormControl","listContainer","list","issueContainer","borderLeft","selectChips","selectChip","IssueChips","statusColor","assignee","AppUsers","getEldersByClientByServiceCode","getMonthDates","inMonth","daysInMonth","arrDays","d","convertDateToZhFormat","inDate","getROCYear","yearMonth","numToAlpha","alpha","String","fromCharCode","buildColumnsArray","range","rangeNum","len","charCodeAt","alphaToNum","processShareOrder","linkGroupMappings","elderOrders","sharedOrders","showLog","numberOfMeals","copiedTo","copiedOrder","copiedToNames","processDisadvantagedTypes","selectedMonth","inFromDate","inToDate","disadvantagedTypes","disadvantagedTypesSlot","approvedDate","unifyCellStyle","rowCount","colRange","columnNames","alignment","wrapText","col","numberToChineseUpper","chineseNumbers","chineseUnits","chineseBigUnits","numStr","groupCount","groupStr","digit","getWeeksOfMonth","weeks","firstDayOfMonth","lastDayOfMonth","startOfWeek","endOfWeek","LabelWithToolTip","Icon","verticalAlign","DEFAULT_SERVICE_CODE","defaultLunchStartTime","defaultLunchEndTime","defaultDinnerStartTime","defaultDinnerEndTime","COUNTY","deliverySubsidy","mealCentralGovSubsidyLow","writeChiayi","allOrders","includeUndeliveredOrders","excludeNonFoodDeliveryOrders","includedOrderStatus","yearMonthTitle","ordersForDisvantaged","elderRows","existingRow","身分證字號","身份別","服務量","午餐量","晚餐量","姓名","性別","年齡","地址","核增","wch","getWorksheetElders","getWorksheetStatistics","r","getWorksheetAugementList","getWorksheetDeliveryFee","JEST_WORKER_ID","write","bookType","bookSST","cellStyles","districs","totalLunchCount","totalDinnerCount","districtLunch","districtName","districtDinner","skipHeader","shortYearMonthTitle","disadvantagedTypeList","getSampleData","rate","genderString","countMappings","pandagoSheet","totalCount","fullDate","pandagoOrder","padnagoDeliveryStaffName","鄉鎮","編號","服務個案姓名","lastGroup","送餐日期","array","dateKey","previousItem","writeMiaoli","家庭代碼","yearTitle","fromMonth","toMonth","mappingA","mappingB","countedElderIds","defaultPaidFee","paidFee","selfPaidFee","districtsFeesA","districtsFeesB","offset2","monthTitle","totalPaid","低收","單位","數量","單價","金額","說明","中低收","大使","熊貓","getWorksheetApplication","dateMappings","dateLabels","elderNameOriginal","deliveryStaffNameOriginal","getWorksheetDeliveryFeePandago","monthMapping","weekdays","writeYunlin","zip","JSZip","workbookElder","monthDates","rowIndex","formatElderRow","elderRow","序號","deliveryStaffNames","elderOrdersByDate","weekLabels","dateObj","bold","sz","hpx","workbookDeliveryStaff","totalByDate","getWorksheetDeliveryStaff","wboutElder","binary","wboutDeliveryStaff","zipContent","generate","writeTaoyuan","eldersGroupByDistrict","ExcelJS","chain","addWorksheet","getWorksheetDistrict","removeWorksheet","worksheets","xlsx","writeBuffer","bufferDataByDistrict","elderIndex","totalRow","餐數小計","餐數合計","餐費小計","服務費小計","合計","totalLunchOrderCountList","totalDinnerOrderCountList","govQualifiedCount","lunchOrderCountList","dinnerOrderCountList","ageBase","valueOf","地區","福利別","補助金額","核定餐次","餐別","elderRowsCount","columnArray","fontName","columnHeader1","columnWidth1","columnHeader2","columnWidth2","headerName","mergeCells","getCell","getColumn","oneRowHeaderName","argb","pattern","fgColor","bgColor","SUBSIDY_UNIT_REMOTE","REMOTE_DISTRICTS","writeReport","getWorksheetCover","getSubsidyRatioByDisadvantageType","inType","inDisadvantagedTypesHistory","supervisorId","setDisadvantageHistoryWithEndDate","planDescription","servedDates","subsidyRatio","subsidySubTotal","subsidyDiscount","subsidyTotal","g","getWorksheetEldersForRegularDistricts","totalSubsidy","subsidy","區域","趟次數","補助單價","補助總額","志工簽章","備註","rowOffsetAnchor","getWorksheetEldersForRemoteDistricts","servedElderIds","deliveryStaffGroupData","deliveryDate","totalMealCount","totalRunCount","statisticsByDates","elderRowOffsetAnchor","elderDates","getWorksheetDeliveryList","byElderStatistic","male","female","byMealStatistic","getMappedDisadvantageType","nextItem","remoteArea","writePingtung","ROCYear","deliveryStaffRows","deliveryStaffRowIndex","deliveryStaffInfo","restaurantInfo","elderInfos","subtotal","elderInfoIndex","columnWidth","defaultBorder","getRow","elderInfo","typeMapping","mealUnitPrice","deliveryStaffFeePerTrip","writeTaipei","selectedYearMonth","selectedYear","monthLabel","clientStatements","statementsFilterdByCounty","getWorksheetElder","getWorksheetElderBySeason","workbookElder2","getWorksheetElder2","workbookMonthly","getWorksheetYear","getWorksheetElderByMonth","serviceDates","出生年月日","供餐次數","服務日期","elderRowStart","formula","elderRowEnd","monthString","clientStatement","elderStatistics","elderStatistic","lunchDates","dinnerDates","existingElderRow","lunchDatesList","dinnerDatesList","elderRowsByType","disadvantagedType","elderTypeIndex","index2","columnIndex","lastRowBorder","cmsLevel","isLivingAlone","isIndigenous","eachCell","戶籍地址","deliveryStaffFeePerOrder","writeChanghua","applyDefaultDeliveryStaff","weeksOfMonth","periodOrders","workbookElderStatistics","worksheetElderStatistics","getWorksheetElderStatistics","startYear","startMonth","endMonth","ordersInPeriod","elderNames","生日","送餐個案","cmsLevels","ordersByDisadvantaged","endYear","ROCStartYear","ROCEndYear","currentRowIndex","currentColumnIndex","cmsLevelSeverity","mergedCells","uniqueElderIdsSet","restCellRowCount","writeVulnerable","oneWayDeliveryStaffFee","sanitizedElderName","totalDistanceInMeters","distanceInMeters","wbout","totalLunchOrders","totalDinnerOrders","dba","轉介機構","午","晚","轉介單","clientNames","clientLunch","clientDinner","serviceCodeList","鄉鎮市","公里數","個案姓名","writeYearly","uniqueDeliveryStaffIdsSet","uniqueElderIdWithServiceCode","uniqueElderIdWithOutServiceCode","statement","completedOrderCount","incompleteOrderCount","incompleteTotal","deliveryPlatformCount","writeDisability","yearROC","monthROC","statementLow","statementMidLow","statementMale","statementFemale","disabilityLevel","formatRow","getColumnKey","charCode","shiftedCharCode","cellAddress","cellRef","columnsToSum","columnName","writeMonthlyStatistics","colIndex","cols","yearOptions","get","scaleImageDimensions","maxDimension","loadImage","Image","reject","imageBuffer","copaymentSetting","桃園市","originalPrice","一般","雲林縣","苗栗縣","stampSetting","company","chairman","accountant","handler","getSanitizedElderName","substring","issueReceipts","selectedPaymentMethod","groupByDistrict","receiptType","oneCopyOneSheet","reverseCopyType","copyCount","copyType","duplicate","triplicate","yearMonthDayTitle","stamp","eldersGroup","bufferData","receiptNo","workbooks","stampImages","worksheetName","getExtensionFromURL","imageId","addImage","buffer","duplicatedNameCount","copyIndex","pageSetup","paperSize","fitToPage","fitToWidth","horizontalCentered","verticalCentered","margins","footer","clientAddress","faxNumber","accountNumber","accountName","accountNumber2","accountName2","accountNumber3","accountName3","chairmanName","accountantName","handlerName","managerTitle","caseNumber","displayedBankName","displayedAccountNumber","displayedAccountName","clientCopaymentSetting","receiptSettings","copaymentSettings","disadvantagedLabel","copayment","服務編號","福利身份別","原價","部分負擔","使用次數","小計","orderTotalWithoutSurcharge","自費單價","自費次數","serviceDatesString","previousDate","serviceDays","defaultRowHeight","padStart","caseNumberString","cmsLevelString","clientInfo","rowHeights","clientInfoString","tl","ext","printArea","orderTotal","districtPrice","getWorksheetSetting","statistics","elderDistrict","fixedDeliveryStaffFee","mealCountByPriceCells","freeCells","lunchDistricts","lunchDistrictsCount","dinnerDistricts","dinnerDistrictsCount","districtIndex","dateIndex","currentCell","isFreeCell","cells","specialDistrictPrice","specialDistrict","Address","notRemoteOrder","notRemoteOrderCount","RemoteOrder","RemoteOrderCount","dailySalary","calculations","filterOrders","nonSelfPayOrders","selfPayOrders","lunchDeliveryStaff","nonSelfPayLunchCount","nonSelfPayDinnerCount","selfPayLunchCount","selfPayDinnerCount","lunchOrderWithDeliveryStaff","dinnerDeliveryStaff","dinnerOrderWithDeliveryStaff","nonSelfPayTotalPrice","selfPayTotalPrice","paperBoxTotalPrice","addFoodTotalPrice","paperBox","addFood","smsMessage","mealDetail","getWorksheetClassifyByCountry","getWorksheetClassifyByIdentity","getWorksheetClassifyByLevel","getWorksheetClassifyByGender","getWorksheetClassifyByPay","districtCounts","mealCounts","identityCounts","identity","genderCounts","genderType","levelCounts","cms","cmsCellName","payType","periodOrder","payCounts","pay","reportFunctions","setSelectedMonth","selectedClientId","setSelectedClientId","includeAllElders","setIncludeAllElders","setIncludeUndeliveredOrders","setGroupByDistrict","groupByAge","setGroupByAge","mergeIntoOneFile","setMergeIntoOneFile","nameInNote","setNameInNote","deliveryByInServiceTime","setDeliveryByInServiceTime","useDeliveryStaffId","setUseDeliveryStaffId","displayExtraOptions","setDisplayExtraOptions","govQualifiedPrice","setGovQualifiedPrice","setlunchStartTime","setlunchEndTime","setDinnerStartTime","setDinnerEndTime","includeNonDisElders","setIncludeNonDisElders","setApplyDefaultDeliveryStaff","collectData","fromISOString","allSummaryData","summaryDataMapping","zipDirs","filteredAllOrders","shareOrderLog","getRowsByElder","mmdd","serviceStartHour","serviceStartMinute","serviceEndtHour","serviceEndMinute","serviceStart","serviceEnd","serviceStaffIdentificationCardId","toUpperCase","getRowsByOrders","allRows","eldersGroupByAge","selectedCounty","setSelectedCounty","includeInactiveElders","setIncludeInactiveElders","pandagoDeliveryStaffId","chiayi","miaoli","newTaipeiCity","yunlin","taoyuan","pingtung","taipei","changhua","updateCounty","inClientOptions","setOneWayDeliveryStaffFee","allPandagoOrders","pandagoOrderId","fee","cancelledBy","cancelledReason","restaurantAddress","driverName","driverPhoneNumber","calculatedFee","flag","allUberOrders","uberDeliveryId","uuid","undeliverableReason","ceil","allLalamoveOrders","lalamoveDeliveryId","lalamoveDistance","priceBreakdown","base","extraMileage","endLocationList","selectedRestaurantId","setSelectedRestaurantId","allOrdersByStatus","mealItemCount","clientMappings","normalizedName","mappingsByRestaurant","mealStatistic","mealStatisticString","restaurantMappings","rowsByRestaurant","setSelectedYear","monthes","setSelectedPaymentMethod","selfPayingOrders","selectedCalculation","setSelectedCalculation","setExcludeNonFoodDeliveryOrders","Reports","enabledReportFunctions","setEnabledReportFunctions","f","reportType","ConfigurationForm","ConfigurationEditButton","ConfigurationTable","cardTitle","cardDescription","cardIssueDescription","isAudited","issueSummary","BoardView","matchedOrders","CARD_WIDTH","matchText","TodayOrders","searchRef","allDeliveryGroups","mealSlots","onlyShowIssuedOrders","setOnlyShowIssuedOrders","mealSlotSelected","setMealSlotSelected","deliveryGroupSelected","setDeliveryGroupSelected","clientOrdersData","elderDeliveryGroupsData","countyOrders","allIds","deliveryStafff","issuePriority","colorText","inputRef","AUTO_UPDATE_INTERVAL_IN_MILLISECONDS","daysInHours","querySelector","IssueCenterBadge","setBadgeContent","update","interval","setInterval","clearInterval","DeliveryStaffTransactionForm","DeliveryStaffTransactionEditButton","DeliveryStaffTransactionUpdateForm","last3Month","STokenTable","bankAccount","OrderBadge","targetStatus","AbandonedOrderBadge","TagForm","TagEditButton","RestaurantOwnerDetails","transactionStatus","transactionTypes","TransactionTable","invoiceStatus","invoiceTypes","InvoiceTable","Transaction","SponsorshipProgramForm","sponsors","SponsorshipProgramEditButton","logoUrl","SponsorshipProgramTable","MembershipProgramForm","MembershipProgramFormEditButton","MembershipProgramTable","ClientAppBannerForm","ClientAppBannerEditButton","OrderQuoteTable","pastThreeDays","QueryAddressResultTable","ignoreDiffKey","tableStyle","borderCollapse","DementiaQuestionnaireForm","DementiaQuestionnaireEditButton","LoginChart","weekMode","startWeek","isoWeek","endWeek","isoWeekYear","getWeeksBetween","AuditTrailTable","inFacilityId","DashboardIcon","paths","monthSelected","setMonthSelected","prevIssues","newDeliveryStaffs","prevNewDeliveryStaffs","newElders","prevNewElders","prevIssueOrderIds","disadvantagedElders","prevDisadvantagedElders","otherElders","prevOtherElders","totalNewDisadvantagedElders","totalNewOtherElders","totalNewDeliveryStaffs","orderByCounty","lunchByCounty","dinnerByCounty","newOrderNewDeliveryStaffByCounty","issueByCounty","endsWith","displayEmpty","TodayIcon","ListAltIcon","EventNoteIcon","FavoriteBorderIcon","SportsMotorsportsIcon","MotorcycleIcon","PersonPinIcon","ArtTrackIcon","EventSeatIcon","GroupIcon","PersonIcon","RestaurantIcon","AssignmentIndIcon","EmojiFoodBeverageIcon","ErrorIcon","setIssues","selectedIssue","setSelectedIssue","admins","setAdmins","query","setQuery","hasLoadAdmins","setHasLoadAdmins","renderChipValue","updateQuery","countyItem","statusItem","SmsFailedIcon","AccountBalanceIcon","ReceiptIcon","StarsIcon","FeaturedPlayListIcon","WorkIcon","LandingPage","AssignmentTurnedInIcon","surveyResponse","QuestionAnswerIcon","CheckCircleOutlineIcon","PlaylistAddIcon","AddShoppingCartIcon","quoteData","setQuoteData","getQuote","NotListedLocationIcon","addressString","queryAddressMethods","queryAddressMethod","originalAddress","LocalOfferIcon","ViewCarouselIcon","LockIcon","AssessmentIcon","RemoveFromQueueIcon","diffs","displayValue","old","new","triggerPandagoAddOutlets","allDataInVisitorMode","setAllDataInVisitorMode","PeopleIcon","EldersTags","removeTags","showElders","showEldersWithTag","deliveryOrder","filteredTags","defaultColumns","MealStatisticsTable","onRowUp","onRowDown","onRowEdit","onRowDelete","onCellClick","showEldersAndTags","setColumns","filterList","setFilterList","actionButtons","onTableChange","tableState","restaurantFilter","mealFilter","needToCount","deliveryStaffMealCountList","deliveryStaffTotal","RestaurantMealTagSelect","tagOptions","setItem","alignContent","MealStatisticsSettingsToolbar","restaurantMealTagList","mealStatisticsSettingOptions","setMealStatisticsSettingOptions","loadInitSetting","mealStatisticsSettings","initialSetting","mealStatisticsSettingsItems","newMealStatisticsSettings","RestaurantMealTagSelectDialog","mealSlotOptions","FormForm","FormEditButton","weekDates","ScheduleBoard","displayDays","defaultTargetOrderStatus","getDisplayMode","getTargetOrderStatus","getTargetDeliveryStaffIds","getTargetElderIds","getTargetMealSlots","orderScheduleCheckRules","FormatListNumberedIcon","BarChartIcon","setMealSlots","setTagOptions","setRestaurantMealTagList","showEditDialog","setShowEditDialog","displayOrderIds","setDisplayOrderIds","setShowElders","setShowEldersAndTags","setShowEldersWithTag","showDeliveryOrderOption","setShowDeliveryOrderOption","processOrders","orderDeliveryStaffList","showDeliveryOrder","orderDeliveryStaff","tagMatched","elderTags","dataWithTag","dataWithoutTag","newRestaurantMealTagList","LibraryAddIcon","setMode","ordersInDates","setOrdersInDates","targetOrderCheckRules","setTargetOrderCheckRules","statusAndReason","targetDeliveryStaffIdsInCache","newTargetDeliveryStaffIds","targetElderIdsInCache","newTargetElderIds","cancellationReasonItem","arr1","arr2","sortedArr1","sortedArr2","arraysHaveSameElements","EmojiPeopleIcon","setHasMore","fetchIssues","isRefresh","newIssuesFetchedCount","currentToken","newNextToken","nextTokenFromServer","scrollThreshold","selectedFileName","setSelectedFileName","selectedFileS3Key","setSelectedFileS3Key","fileDownloadWithElders","mergedPdfDoc","filledPdfDoc","copyPages","getPageIndices","addPage","pdfBytes2","openFilePreview","mealsTotal","setMealsTotal","pre","borderTop","oldOrders","general","Route","pathPrefix","clientRoutes","ProtectedRoute","facilityAdmin","facilityAdminRoutes","orgAdmin","orgAdminRoutes","admin","adminRoutes","localTest","chunkSize","chunks","purge","neverPurgeKeys","toDelete","neverPurgeKey","clear","inAddressObject","country","noteString","zipCodeString","countryString","inBankAccount","inGender","genders","ageDifMs","getTime","ageDate","getUTCFullYear","toLocaleString","LOCALE","hour12","fromNow","inEmergencyContact","inPolylineString","string","startString","endString","authMode","apiErrorCodes","errorType","msg","allItems","inField","inReverse","naturalCompare","keys1","keys2","codeA","codeB","posA","posB","alphabet","getCode","str","pos","charAt","allSortedOrders","ordersGroupedByDeliveryTime","mealSlotKey","ordersGroupedByDeliveryStaff","elderDeliveryGroupsList","deliveryGroupsName","targetDeliveryGroupId","allOrdersInElderGroup","elderGroup","matchedDeliveryGroups","previousElderId","newMealSlot","SurchargesForm","RestaurantMealGallery","restaurantMealId","defaultData","RestaurantMealDialog","setNewTags","setRestaurantMealId","mealData","previewS3Keys","savedData","toCreateJoinData","table","dateField","UpdateOrderMealDialog","oldMeal","newMeal","effectiveDate","setEffectiveDate","effectiveDateError","setEffectiveDateError","oldMealName","newMealName","newMealCost","newMealPrice","newMealSurcharges","TableContainer","TableHead","TableBody","surcharge","selectedDate","minDate","maxDate","isValid","isAfter","RestaurantMealGrids","openUpdateOrderMealDialog","setOpenUpdateOrderMealDialog","setOldMeal","setNewMeal","DeleteForever","iosLink","androidLink","Authenticator","isLoggedIn","setIsLoggedIn","setCurrentAuthState","innerHeight","setInnerHeight","handleResize","titleImage","apps","ios","android","biLogo","CategorySelect","ElderInfo","selectedElder","setSelectedElder","selectedElderIndex","noteForHealth","newElder","totalPrice","setTotalPrice","imageUrls","tagKeys","readOnly","IconComponent","selectedLocations","RestaurantMealList","onStepBack","handleFilter","handleChangeCounty","addedRestaurant","NavigateBefore","NavigateNext","CashButton","Done","ENABLE_PAYMENT","DATE_OPTIONS","CompleteOrder","setOrder","timeSlot","setTimeSlot","setRestaurant","getRestaurantAndHolidays","elderPhoneNumber","elderHealthTags","selectedElderId","mealPrice","quoteParams","exitingOrder","deliveryFee","exitingInvoice","newDate","updateOrderDate","newTimeSlot","updateOrderTimeSlot","cachedElder","instructions","FacilityAuthenticator","facilityDic","zh","CheckboxField","HomeIcon","StorefrontIcon","hasInit","setHasInit","nextStep","GetAppIcon","selectedApps","setSeletedApps","appName","Android","Apple","selectedApp","setReason","prevRequests","setPrevRequests","submitDeletion","requestedAt","req","Unauthorized","UserNotFoundException","NotAuthorizedException","InvalidParameterException","accent","focused","useDark","primaryLight","primaryDark","active","raised","primaryText","secondaryText","light2","highlight","tintColor","tabIconDefault","tabIconSelected","tabBar","errorBackground","errorText","warningBackground","warningText","noticeBackground","noticeText"],"sourceRoot":""}