From 85d404dd4d263b325bdeeccdaeb6054a110875c3 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Tue, 16 Sep 2025 21:13:15 +0000 Subject: [PATCH] Updated via schema editor on 2025-09-16 21:12 --- app-shell/src/_schema.json | 3 +- backend/src/db/api/organizations.js | 30 +- backend/src/db/migrations/1758057086747.js | 36 + backend/src/db/models/organizations.js | 64 +- .../db/seeders/20200430130760-user-roles.js | 732 +++++++++--------- .../db/seeders/20231127130745-sample-data.js | 605 +++++++++------ backend/src/index.js | 70 +- backend/src/services/search.js | 12 +- .../components/WebPageComponents/Footer.tsx | 2 +- .../components/WebPageComponents/Header.tsx | 4 +- frontend/src/helpers/dataFormatter.js | 76 +- frontend/src/menuAside.ts | 86 +- frontend/src/pages/dashboard.tsx | 318 ++++---- .../organizations/organizations-view.tsx | 242 +++--- frontend/src/stores/store.ts | 20 +- 15 files changed, 1250 insertions(+), 1050 deletions(-) create mode 100644 backend/src/db/migrations/1758057086747.js diff --git a/app-shell/src/_schema.json b/app-shell/src/_schema.json index a62baf3..ec4d910 100644 --- a/app-shell/src/_schema.json +++ b/app-shell/src/_schema.json @@ -1,4 +1,5 @@ { "Initial version": "{\"iv\":\"vxHo6ddOyrsD4YJ7\",\"encryptedData\":\"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\"}", - "SWINGSTAR": "{\"iv\":\"y1/T6jlv7ALKey+w\",\"encryptedData\":\"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\"}" + "SWINGSTAR": "{\"iv\":\"y1/T6jlv7ALKey+w\",\"encryptedData\":\"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\"}", + "Updated via schema editor on 2025-09-16 21:12": "{\"iv\":\"by5Au7wdD9e56VG0\",\"encryptedData\":\"K/i+dt3Fwbsgz+Nmka9Q0cOkJYwvSzNflnxNAK03Ei38eth5OeP0PGBKOJxsu1YhxDaKTJSGV1j37l4RGHz01pFz/To9MoGJ0rhqmheYA91RBgK5VOna70wsa041w0oxchJlnkM7hxqRHgbDiOIJ5uqPB3MIsKMLRkBlUYVPhLkCi1K/qgcBehJO3trlo/o7hccijIG2SMIOFfJRviIgismJEZXp2O9vYImwoKcHo0q9CJ5lhj9+AEF3Uk4HkiUgb3eDQ0cyoxoYWWVWDbcBRTpIqd6WQTBkXC3YHjUkqdE3LqSJfHeOBC+hFeI0YmmgL6BGvyp7OSckZ1CRDpIu+zLIGtI8b2zQ4GxGPLomXUjB+bUiAz33eiH4/AYvrIedq1NodCZYA3d8ZAIozsG0HUX5o7glybbkwwwy1PY97M5XFJRmQaQGl5ly9ISw6YO2Nu9JTpQjqCGFkADo404UdrKUwjMsOqov6iH2OjFfUJqnk/jM6/XyI2no4zYWHIn2+ZvYlYtBJnI+hQxzg4SKFMjR5ffjcciTQq3MYGU9afM5L7CoJx/rmwKDGTNYTbZwlcXCWCu3GLCn6UC6U8JggzjtLZdenXtBJoSvOaEz6J2KKDccjL+5LG2GxPNnvSg+rMAAo87Vrz2I7ugCuSR8+qIjSyshVIdyxDAZoGdGGkn3+4sVYCpuRhhyxAtLSJD5yiTml5xXHzDSvJYLMyXx90yU7s3HBJK+uCqvy56Ttezc4kUVRrvMKvtPtFxn4fnD+zsPzpqtg11w/0MwkwYZH2d44lMoVaB3xSesJtV2HHIraNrfHt9XW9sLl1sr58p7qjjnHYyZK9u9kTsWWCHM5tAxsMmlVbgmiR+IpqBKDWoKaaBqiljqlPxtWl/h2fAFpzYMc7bn+oVajWncBnDCKVo+rlyt/HZ1nD3KXFTL6vBGc1BzBSpAZKvf/htGYbV1XtOu2B6naTvVzHRsqZ08WhcO74SgExM9QyZEADb+/qYGKHWXZwEftNsixAijB2exgT0qBSG8KDTFCDV1ZdFl4qSgyn5ZWl+KxNoKSNIayGc5Qs3T4fsBvI40e1vBO81Mo+Vx/Xc4R13yvYEBI0NFLSbKPw0uMUqvLcrnJJDdITUspCZNvfo8Fz6liEo8tGmfSK/qIq/BKPqeiNFN6XYXrMHOYuQya9/L+hQ6DE7alrVF+8JuMpVvrPo1tYkwULh1UI+Oqim+VyzHhvzbYKgOgMFq5GYkJS+TWuzOJ2rQNqJK5bcx2WnfzsoZASOfSoiaEBFrxkcb/qcQWUeXwepPDgxNAdVZyz1rqeFehrKFyfxRFycUMcdJpSj0BRSpwpqPotCt1DznZv5KlQb2CtHFEdECdxGcSxboSSrIPO3WvjfPveQCEh5dLT+9m3rDfETlrnOTND5iAnP13GzJs89RCWDFLzvkZqCt7XBtmEWIv+OETxn7zxLvOFhyRPm2etr643V/NE5CIDVe0dJWboS1yRZIGjPI/wVsutHZ395vSmdMmVXQgXxUlGeZBwydHp/lQ2RnRrKZ04Kz5tLacTNOoTb6dAZTOGcplcEf6BgVegFYkG5j1h7wAi1WRa4b35EZaC3oU/NR1K5xZJDrt6l8dCPM03Ih2483/QScUSknDIMTgx2I12L+ouoPGCzg6FGT2t5rdcp2BoW9Daiom6wyOpP/i89vFYBcYLtbumBprLiLnqOI4T+cynZ7cklS95Frou46GTykDijOw7Z8Jwo/llHk1d2iZsCXsaan84+9KToWT2H4ijqBqrolT4DPBht/0fjxOmmJ7kZ6WfQGNfOu7rE7t6lEEHL5f9VJ/seJ8KG9mD22MrcGT4UwalyzSLaNFNtb1NISfq9gIyI00+5ylrvmL44bcWUt2DuigslcIsB8kXx9H4USLo2hDXU7C5wszlfGpO9MEmUzJ467Q1Tx1K4I15rEtsrKQEtIZSc7mK9Xz8usffMcrvpWFqlCD/TMtGk17gaKHQkdbR1iGkp9pR16+Mq79dSMgGNGcv+ZNp9dq8U2+yX8Lv50B3kyKg9DyNeinz5Hj4gufkEJ/NOgWL84r58U/olIgoji5FqWYRCYjo5VNhwXGZ+nV3+uDVdgLwv526EUOD+pMewsSGyjeGrwtpDIjsBh8QZb+pi9f+XNrW+3odbRaEIVRsFBK2PFeu7T7fqVsbrDdzc43AMBFSQkU3i8rjlFuGGgl2mg/3FoXm7GUPK7HpJsbuswQGqYIrh2uOBYMkkeGOEnm4GyMXH+8YI/vjxBR0ZMWR/ETaFtR5+4QOeVRxTRoSDPaekZ381PRsbx/pKqV+VDkOc8AdbRf+VvqE051VRgHAjA02EXBfaoTCNze7AOaZXZ3300MaTXuFcT8aOA4Fd7ClFHUNyTI7ET+5/64d5bZNnIQVc+zRNclvgYRozGosnLHZm61HOvEvL3G5Pmhgca+drRVDEruz38tzgVdyRI6fYAu3hzKUQof7RvOwRInLf9xwmyPinI6B4pMFxBJStiskhUYOAKQGc8xd2+TmtWHZ08DB9e2fxNHVYDB7rb2yJXf4g75VVSTQmeXJU4V7W/Yey9iVOExqnFz1ln9VsdIeEfv2iuwx/pfhnxQXGT3sPUt0tucOscrcYU2ErjkfrKnQx4Mg4vmW40m4zlXEh0aBPSNmuFLE/PhKNALezzFnaB9bkDBrRx85B0HfSqM6exQCo1e4FdqSNJDaNr5qsjH2PMSu2cvxFthpg6HsSxcBmjAdDtAdB+3Ca2/oxntq+ZbA6KICj5UfqaZ8kg9tN12AJm6lwfbFTTpq5nyYP/M8YTJM7jPA+PuSyns2OLyHmgAO2W6uR+tOa31bsjWaUuGt5ysdhkwK4ZRczhYqXIQoKRCPSiswswGX3LTb/pkRp9i5aXbwQgW9w941VhjIpgMPohx+rMG54whVtV1ygAkZOTzDHslN4oBrwCOycanPOcaLBkAxJeekSl/DbYei+sf1AV+zohkmSrzhONZJ0j4qKbJwQ2cLH6FzpHWNRrkXnTjq4ys2msKPmTz4zRojtIAHvmjg0wYvp2qQVaLzn9F3w09ica2Jo38zH8gXussP6YW7Kp+ocQ/o5bhumS2uhA9Rwcbje8VmjZjXWvEhrTJf5ZpaoQFFy08WuhUXh8wyN2ghPT4PKKgO3BsuyhDmhTDUxI0UieMLewswNh4HulOsXLjnjjl9pNtrwa3w4y7cX1CNe7eRRDUZTkbyiAlFd55hbcl2vsTCdzvYo1Q7WdkinF5KuCA+C8FtFHWpQCWHv2NP7BVw2nvWTu/TTwaRoLeHcV+rau7FN7pWJZjF2oa/u3ASjklc7uQXVgq7Rg2NJ3h8bfVJNc99b+6w1MIxHhw7Oj2GmMcDmvegNTYurP8Go4IFJ1U4O2fdj57q7sccfEnHoAgr3+r0iAA2Hd8UTkvVpubDcamLZMUMR+Bziy6GgcrDtyOurfzpZ8Nvl3QJWOsP+ORtgpyfR0MmPwOi0mWB0RqhorZpsGZfb9s8jvqxze/fb9cPWJWIqdb47UAce4DphrZR8pvafWimY4N10VM/IY4PhI14WLipUavvwcXuMBC8mwhm2VYfLwT3FpsZ7DPUuMCZ+3LMndc1jPI94TQjlRN+X1P6rsNDA2kCZvJ1iwzScrnNi9oHNgLWAaqVQizx4rrNjY7K7XrIHewnTtVynw4EVQ2r5xWjSPEhgvAZ8z7Yhv3whfvRYRjAy0aQ3hFP1+iBOTfeVVJVgQuxXna1hHG3loC/XM/GC0bLDQh0JzxDDblV5hhc8ihQNNwqPaPZ8xmwSR7ALaAQzqjzO9EumFiGGFQ/DyFhN9RRAoWNnXdJbn0SwLECLCE4t5xHpkYngE8qu5igMfux12yqjPRwO4NH018Zc9Y4XyPwO2RI6QmUyhZULoxeWyr7iKVTmXmSZ5ODqWLOLWTysaIavjF7mr837/XYIfTM1kfXB/3FuzyaZKO9IlKkxPskxQtgZOHkAnNW4Vprnq8H/NEHCHQ9ax0vHCX4ZuFrEgdzqYCbQnMx8aJifwvhbZ1njhWiuZyouULzy2qGF62Lzv1LStkyZWANAyFGi9BAelrhnCAwlt3qSYADJSVf/RWW6IbWPdQWBegPSFy9ocmX1pW3tUMCZGrvqJEHKo+HJDkKZlzVk6MpyW6uqeIdAOV8qD2lWY1Ml8TYGwa2ydLAJDtwQpNsyBtQzl7M8fLnyQ3YGh8CynWTPz9ixe8My24FpjprzlXRTtv0BnS5+3xMbdyC3mY9A+XE5LGWdB1oBoS7bKqv9zQxQpi7JAeS7nZECx3qfBM+ZZSw9UYauQrc2twd8xlOS04iRT/L9bM7VT0jRtCNGCQDvxSbSUXYPC3Fob5sRwGYp7jVnq39YCslLP2Y/bSFl3jQ3SqCv1BfQ0qPposv5eIYioNjOI3D69bk3oBotM5FLtOnJkaMgCzEcNMnuMpLDk32wJE9y0Hgfj3GNRl43ndf2snjA6CvkAaontCRiuRR+WQbKkvvznFEfxMXS8OfUmfyOXBE1KjTLAbD3+hFZTAV4V/n9D6BmAlWg/pu703pAgrojK9JYXh4riCjefNszuxeP+C/CDaTztp0y3pSiS0Tdsgvbmwn4NR7NJ0KlCzd0BosYZpLSkqMilkGgm/cWECPzdPwzYB50I/C84436EC4xsl/2ZBSrNrUx5l6R8jxXoHUNcOyDGWbahxqM2SU0Qp4w7BHdLS/r8HgN1JogcZ5w2lqDuWTjmj5/FAK11S+cIF7sOWOnY84oj2WnEfL8bQNM29OIHsNBMOgS2pfsXwe0+lDfUijEL8NHgM6et4XRRKe0zsyjULdD3eSImUuOyVA27b2FDnUb4QjbUQrguXRuvJm63pP67Qp2jmMDxlZ5eC7uIRto/2bGnwIxdD6e3jNHtkXm4IatxVOtsoiu9NdKb/L0RQDD8BUnCNZoBXGWtMVSrLjbuoDoMSnFuXpqK0RNI2TQArlDv+uNyfdr4AtJyMsXDuXDDWw7+XhCYkTZZS3id4Hen1syxEf3fRfc76audlbyLD0ZUVPDNnvts/9qKpM4C6xpZw1Uqhv1a+NS2OUrQP3ep7mjTz3EpIFGyN0izwqtKrdKBDjk1UI20xoM5Ivmq7D/D0yiJBEz15ISA4RcpjeqM+oVIX/j9r9Hs4kaem4/YfyNF4RixXUtASogPBtI8KWRmAXJtb2RE+xhVtOY3C5jzdDV11NkjHo5SpVxAE3wcm5OGAm5DTrJW5lpzA0Uh1kdKhsiYsCu5sQdmx8ZX5yESCHJFvsJnE2r6vZGLX3YehSkmHPlOor+3QNaoL0Ci/rdhoOl5xbryt6ilgL+0u3VJT2xpzHZIqxMR2b36C66P+0kD6Lxhl8eJQbURsdryCeHDANhIesD77WBsI4QOacqRmhBM6tQcBU0LrlBENvC4MOCcos707f+XOfox540x/4VihNKQBsFsWdxqITcdzc/+3/pFOUwxYgVD6B+LewxKspfFNo5yWvanyxLSQigzaZAzSGAmPMBV6fu6MchYXBAoe2KOs7H+GZlqdaOoYqkqfXKtBCUMSeaFynT7e33guPjR9wwXf5TWSHY+UC3ouNwNgc6kIIBOx//YVcpfSx5IVggxdpKe/oH0aLCTBYEfCrwmrzCvdgxJRyBXg7MvHfrKaKeeuZiyrmeqt8P2IVVHphj3h+qDz5VSAiKizVKTRpbwU+q+hli96vKXJ46+TRGf6wj8ZEnUPj2lAOOnKGIKp+zlqzV8/UgubY1Ryzpk9CO41AoZ2CwO4YL8LDxzhGbXGON/K7W/QpuKk7dBnYpc+tYwWIQK2fax+cmW5d/eg/GXb0FaH/UXLYGIYCPagtAZkIxzcnD0IyAjmwysbWa/0i4+4Eq/I9PR3nkO3H7ThexHWKn2F4kJoCI7Ne9wGhBJl6PQWywCuMt4RhtFfya7/0c2idu2xzLybv8/cDKqOSKIdPxYArVL9hWed6xBVVGjaqcBbRXpIKtUJPwLC+JLWv2e75Ah+GAuL9FxFbkyHkPu+2fAUE6aYFuKou/k9LYog634aTDnN4Y5zkkC8yMN09QIc98YvKyy3M/3EmhfpnJXl0Frm1whqHC5vXOlIvPI++3t/uQD/j7AXjweBaURySn0rDsEKQn6tH5QUl8QANDQiL1iUlfKeQkFAdXNp+1Ntq4VwzF5B7myyRg299h/x/SjWtp6Wyb5xfmuwsrj5Gj1TMo7txLIMe/UUaS+9Z+dHYtlo2B+2zhPEyByrGarmSpau2vrbpt9OiHMvcQ2RAXzVr7GO3H1xSHCJhhlPrkmeMO3HdpM0qZczpiORSLkpBfxq4aveDDKfRtMy+MAfIjjP23cah/AEFn/pF5oxSh7hnLcjH70yBQuhyAJwPEJX+lSyhk5Kj8Z3KYT207KpZ9lqNoxx9AhXaB/7lroGvR8V2lUS9YzR7RAZQ78EVI8btKqw0zPMQm4MlX+W/xSvxXPFJLhGmnBNpLX894wR8yYrqkMesdaHu78KcVdUu7H23cyD/KEyxPCf73Lf4Q3/xWl25X7ytNrpr1xujPHcYHlatd6oq3kFWVp3kxbELOvSpDvMygdP5AkIvMWgA8QqKICZl/LIxrzgr82WMSB01GSHocMDctcgNuOJyejadFBlLkTkNrnGAbBlBnqrO2em0x4oL76qygpKt3q1RMuBeg4zNil28PQFWp8MP8g26rZxb0z1ri5TYn8nkKtWkL8gIma014mVpMpZ6m9AeF3xhd1a/o2OIaIH3X7uQQuD7hRuHCjJo97UU9hW1D/fDHm9GjK/apVR3cXrTZFF69m3ik4DMDoGqqojGMgjJPMQM94FWqP7hjtZCASLc2A7qQzRrazhFRnb6/iLeUtzeEb6sFUcEW1XgXacTWayQtzbxR4gqk17uMpxP6WtH0s8qFtWlPlZ3gmuIJfg/3sg0K5C2BIIDf/XKBSY3Pn913dmRAe+4LYIWT/qkQGPQxI2DksH8KcCeJRajZ/eF8Xc+WOAHgaSikVzJcQIuFfqCrXIEWCuvFeWa08DHmCxZ3YHhKkR77zVPk4ZGieKWUJnW2z/kWSSP/EXM2i3NVin1ry7UvfGuS0UFQgnH/xaEdXp9h7TMwzKIIxNZBG4jo3CSjIoe85x58C0qMtfk/LqU7Q4TJDMV0FTAMNP1OCTjV1tKhHo4fCqzpMuvoC/ut9eNmdBBZfJ0xqRpDQYXjeMIrIVvzdQyFRsIcfXwzAf9Y0gm+fgIUpWANOfSYDoM+jmhe22r52j14AHH0VHVYGrxwdf/AAo5PLh0xKUolz2pXgb98eHNhWcVNpJdSJWhx9sRyDpuIEUZG71O3cAPBoeVAxarZYn7EiuLdOhXh2pMwjNFO1ClTwzPL6iQBSqPCmfmKqaa4ole7X3aGi4+bJF3RlkcMKkiHsHlqjDIFbXmdUTTTlScuva07erAdCl8KJaPbdCwMLD1eORqEQprrAuXPksxJInx0++NN9AUrIuy68y7NEpZAFGHi8AmudFoFsPhdRMITLO9NZK/jYfe4P3TueXipdbjgb8Uz/92d8KWXDulKvJZTEcLUQ4eJaGSzKMOksPxNFbn40p1iZx+P0ooLNVO7DkLRkemlljM/1BUDYd4ETsiDSFCJ++HG0f/y+DwcELKMNMYaUQt7hGByyeGJaGk4UshlZqZz8IhbilwAcnXJO8ZxK2lij3blvBgavIY4zY1CdNW/tV6SMymXyNfeMVhCvn/eEeY865Rzm1cbuXu+RSISkc/mHNhid2fpr6feDHy0dmjdO32gGZUm5qgPWd6DG8l+tqjZDCOZiU/hNKvMfh7WFSh3MNK1EHiX+34VaCjy7b8vRxfX5tIgcPu4jzKcRJ1rnO8S1aY+3qsxw1Hl1MvacitHNpdcVwgVQr8g5WIVnWLNic4pi7H1nMFbmOPBW9Ik16imj846cL49SktKLTplICiBXWOP/T8EimWSgqOjeD/Gh1uvC9GVyzbigcjjxl9O4mnoKJko0HtVwT2R4XWetS9X3N2KtZZQCb1nGg1f/lIBeoQHIxXWIR57moUKk38+2AzzNjk/ABjJ1cDEU+s31+MGE7tBlgnLYxx9gXpptqVzcwekZO7OlMqWLr3v6uf1I0M7v6jJ9SPKORn5LSEGxz9J+qwjY6If+DUaf2//mleBiceNEtwULnMC5/QGLIMdG57yDvxPCKTXbMVE8Ieerj9M86yusSRYG1H5/1k7hiUx3yqMqSimYQz7Smzt3R63nGDRZq9FozVvxrARPbth6RLDEehWhTsDAzQVIPqBoiDuk4cS9FnxD/JEHH8iMTOZ4FMU3JrONgfolmVAx518uJyDVhV/ouQQgvceKgivQtIu/5TIDfOLsywcNX64dlWQerm7gfZW/oEAphQnezn7pA5QPKNRbNtWfzZEzvnF7ZMNUberr3g9360tSCcoIYM9O2jzIa6hRNaM+erYK49qsH0KbzAHdKhqix61czQjDYH4JNfUKxXyzwqq8wmdCvwMy660iV6f7hxHRHmw7AzW7yoOPtGBUQsIdXIJ0QaH1AdemBfo9e2FIG83Q1yiNFkPZpf8jOlM1Ig8jmAx9M+l+A2fylTQKDpyGNq0UHyXjjNo3Q3LWtrIgHk6l6ntKb5bL2En1l6o+GcUMoDAhnt7KFFffDAOIcaoaTKd+O512bnQZp0HvgvdR1iBcDVRq0iGXWHfUCzKKQ5j8Yl740RsIMYw6/y0VnLZluezKSyyu86gmhVvyrht2aZvZryzumRxVgVRfBezyto2Q2WpS8owOhZs3Px+Eq3VXIT+UU0Hx7hScTKvXgqbhTBK/uIQZoXzCtT6sqpqrT+kX7cPe49RrFRGtb94lvQ55QVQkHu1jakmOMDcgUV6R4Q3q5uXZk240SSeA3weuQFrUyfEXXYKWt6OxoLrr8/JDQdWyKoX1i/n8wVXnHHWxtFjhWxW5F0B6fA4e/gKIuJzk3pLJG+weICrZIe1d6iFUQq0IqxdHUOjirvE8YPyGrIiXjpaeGmyu/JpTfOSjJKZjurcoAe48pXRzUBt5RRLx6VKl9NSx4vGDpGPbpa/neVjnQ0Jd8EA+PjOAcSDw3pODGuXwKMnDZ1q6iu+KB5P4p40gQH5sg1Y3pyzX+sLZJezwHmdA9BBMR0sqwN4RhcPLdnqKusV2F03r0vuqqgw7qPnU6C9l0Jb3GASYUSSl0yalk1exZ7hAXzK3V9hMMdt8zvWlYxtykqt1UEqZTYL2fakiCoFOkCRK17Vc8bwFVcuiDoziT5X8nfmvZOQDu3NnSSOZq2vy07ildmGqLZ+voOJvLawEwpPfNojX7T8SRXKZsQCnw/hBIjbmau8l8nsTrAKIJjYCk2UEOsS78v3e9/8pIyqMR0HAPevJfbZpFSgFHwlzS9Gu85EDdI9/dxY/pdVT2p9Iok4ug7MX7jFuRKEd73aS67bqGZfg1Mt9wqjxtsDhJN7W2o4bbkrhWsOrD2AzBVerm8GopTwaLYw1Ipzy+Cw0zDjhdLmAV4kfIBJAjTgcCe16xAx9RMuSRGJl2IG5/fvb3d6lTiX6c5h5kZDuE7oKrQhY/VOheQFO0UuxyA/s4dwq0ahruFGkg1Rf6RAfucNyZZeuWJhH2C3IxGHssDuQXfA5gBYQQJnIqG1qtDBC9VfH5ISgq/QuM9Dyd4PMLkQGrlJVM4N4f+4ulouY5uweCpZ7r9JE/7WSY7AU/YepRBgsV1J91LpSlFASbpDN11Uuy74Z2AYkcc685+I99FsTGq9Xt8uEDAA/0k5Ev9V2Xlxgz/IBsmPLasmSS8zt+caCeSDarYdEYH1j3UbnM8PNl5XHvokSKEFzNGIZcX5ojYr7PnMaDXzpxZnSx33mIzUmbfZLfVSBEe7ZnmWOisRAHNDFcRzyj0B7ZC6xUnzxdd5clptbNMd9qEd/3YSY8nLRltnsXEuUb7jBNvE2MawhsNuSwZSMhZ4j1PMFGd+c8EX574WCxqY41Nz62OQzCX9q0jdH13VxOT6bdXu1xDrNrJtaCNdvZWBTxu2wixTjJrhMHbMne6GNEFX4MQMtFgW4wpVQWtAsfxv25xl2/yqt+wP9f8zMyk5UeIJQHjI3XNs8BDKJQ5GMBGNppKdahk1xYOx8L5t/dbB6ZW4GKwlVBoRqnvyTTl3IlmXIsLY1+EsNDHwk6iNOiDUxJODPE+LrXZaxd2V6DVqVb+cRLzVgYwd3hjF3EWEHfFCWUlJpJZ5TwbqqobZOlSzc4HFoLO8lwv2gwMY8wDjsDIHajQR+LSSLWOXQ4Apocts8AHGNHsk7vvFEqHhN8f+pdR1eoGSb487/5tL+PV7dFIFcW/E6kGkgM6eJkIX0SSYDjms1Ehbkp56IMaep30W8vkPPw8NF5APX6WzoukCApIL0jiq9irPbg2G3NAbiQGQKm1wyRv4Ay8rTHtDuhfQboiYxyctsj7TXKXZvPZbZU7HO22tBmHj0LXFmQHFlZoxgNxP7241sj4ynPr/EuEOix4Uo637df2qi5gZKJ3zwLVC4j4FeSn4bOrmH7efUzTUYW5IWiCW2bxXjHKct5MlJfTFZUJNCIkEYp6OMF01tWGgy7WjFYlCre6pSBedjK/uPi+43VfVAXNw8VlSiAyhSlZ4SLdIJyGEULAyrMseQZhjOIYP9ymdGhTozgMlxC9pVaPOa8efnZJX2sD4HCgdawnIl1/GR95ZOjt0vZejAYR3hgyF+V5v6Fp6yTgVXUITHZ37elSJOhzMD8VzsLl/Z2I1vEHn1fR5APb+C+TvViHLQCOhPtRntUi4NvUqbt+MpJocjCrjHSkWqxsXE4P48RnScCa5KA2ue0IUnHtFjCYIlw4lgbTxuC7USK/SfrBMFqakPBJYEL33PfA/p2iClWbURmJMFRTFbq97O9VARPAQvYBjE8YBKp3v8VIsukemx54MUJageoKISQ7WC4GnwFEV+ajBysWeefw/AJtUM9yyx1GAyL9qDQPS3qmEpGVZrAF7ZrkCmqb0uvwrvhnaSB3GQwAgYMP88OFfIcpspQnSd0Q3wGbBDa8tG7JoVj3Lzgf03G7q5jcJqQ2CtFRlwV//sYz9NfjElRFc6NVxYnQToQhcceQFE1GbIfZs0v2XFeyxtsrgJUJaQHfgJ/z+VjNx0tp1geAdCMnU3vJ6yeRZ7odxuUjeQhVoTXQ+yOCscbdvSPUdScI9Q4fughwA4RDmkqdNDQZEjOnL/34q8t+23olwG9nn+wryBZQwZFN1b/fTZJL4PjfJ+CbUvdEMvgT/csRUfqEVnsz9IsS5L1xiGEhqDlvE3Z/gFc2c4MSLfOWKaya06Ars1NVgIMmUDg5acNCm6XlMVbRKmutca4Z+VW5yLcX9tCfpaECaCyJNS1RXfsADVWzOdp9CRvm867XpmCPdJbi8i9bxdf3Btb3vM9wAh2BZLfFyhXomECVuK91QhddbNJCwg1s1JJ71xi32jYTpHFn7/RUlOM3nmcOSntVtl4FcqcIw6T1n60GrSevoWSgK1020hxJx4EI/92tovSIjo7t/W7O6ntxfTaxP02RKSxLwtX0aQFRco3eXJssz61L3OpSASC1ptJe5VZXxaYNbEwQUrdGc7nkOzJJxzpEIcJDzDhUsTuz7nFb9DRwxxLTJQS7Og0B2L14gV+mo7MTfftcw6YW5jUELkcc+vowzhES7AmZkceweXb+je/33Hh8ZjFb++smKS8jNW8cVG96iLmmvXyWlK3bUXL8mmG6xKmWOigWQ6oLTBEzYf4mSX5oWZlw2CIvmHB0/y63qTspSntv1tjViw7IdpJ0w4uUTQ31zC5FaURRkjwsKbKaNCSLoc+FMMZV1RTqXs4Y4/sNsKIuhL0Ro41SJgc1gEXMX9tUEfrFU6VlyPxzW4DraibybUYxfEHXfEDvLKWt5mNB23XDXWf+FHgH/l0uSRjK/ir4rb/07dwByAzHLj2SiTPEC27WRCIzQWpNA7TYdJjjasUXRSVjtlsq53LDbHekcCDU2GSSLSsUSsmCkg4I/JG/wOfYG4Vr/Qh1Mzj+WcDbOYweXiraOjG55wOK0iChTt5hDauna2hEGy6350/g4HsL7tDBeMpdglBKh5Rs87aekZAFA77lbqX1km9OGEowVwBc39WKuE3NjIS5I2NQw1yLxgEdTrid6nyQSRFVlpAZrRQUdVodtwubvL25zhznKvO4ywNQRL3uIyo6aZMkhe8LwE7ct/p/JhxOIDTR5bmuaRtna08zgPIIufz03PHKpLW4MnFzhdbTXlDHFuhtm4npYFce+BUMzHdhlnxkP1a3dCPIGP1XPHSZkeMGsDTyAfgx/wxfhM8czWzlWabDq2PbLwiOhqzV7mmiQP3bFuLjxbU4B+PrXRzZsx9/9PJgJ5B9AfE1O/FIArk4GwuGLDVHcSVWpe5Dbt8Vp4e6Fdv4hY7fGlBOQjqyRv+4PiDNjWnGlaJ3/AB6RLn5Nx6vj+/LZMRuiY56p2RP+HnOqI+g1SeK9/KSC85l7kreOmdcrvqWlFBAaydNAB217BdCvVOESAXHbr510RKCfuVhLbo6uMIC07kLfWf/SuF5mWHB7SwLw9h+b5DRbV5PamzkCx1Hh7ZH9QgZaInC/H5A/0fECy+AvICjfdKcmnvmw7xis3o6u+JhS+qEvOKtgNlqX5ec81nBipuGf44nVFKuceUavoDQPdmuVe9yUm5g+Vl6Q1lAZJ9MH0r9vjOv0ydfAzFO52BrNGd4dmT954xI8ZaU21fChRB74a8jVa7iYO3Ldx2O8gKU0jdghvxeI9Op2atLCUlGDlAts32m08wfDkOUIBf4/fdXQjpKvJFZXpUJQzDCtt8w3FLvn4+XuXqlilOmSm8Jgir7Vk5epN1rGI7NgO8SwGXpAv6R6N7fW7MIv4iNeLefIg/4iD76e5oTqzloFRWPyqTBrJyvRfkgIeG8BFdUDGfFDE3c71YymN5N08UfsfAZz2W9HefjTTE9gxAvnVlYkfY3UqkrcdAB4/Fx167NFWztPh+laN29wMltzF/HU2ZhzlXowwMHIJbdb8pbMNDWPr/VeYIpJiPiAHFGn2jY124bMGUTrB0tKl237noXzLquorUkh932f1hOX6V+OuPBqFj3iLuXjf8WmPYBgmdq8DUHQaTkeim8/Pu8KIKYm9iCvaqhvuNPq23Aa+4waGBjKqlxzcAzECUktz17yib4mr+jevcHUfdukk328zxgSjBHEuZ+Yp8RUAuWiWJmdZMR+EbFVnImwd/EADsyPC56mPk9NynFYOJG3OZDsIy0W5IREuJofhwiAUgFClOADnTZN/xUN1ivIaqpuXHDZlMRMv2BBoHsTxJwgT/EM1O8Szmp9D+hOXlm1NPLwzQ+V1x4q53oJQ0I2W60glWgOES91Y3cJptHHWZcRNCkqUgMu5T9mGbY0VMRQx3aWk3LxIWxNj22jn0ZwHWT48JbCQaoyu5zE+G0Om5DbpVGV+/FdNWUHjzA+3PeVRSIHe7ak+mLHdoyfPGWkOby3+WivddG49kcCLGYHN+kBhaCqqu4a4zALviUe0pU570yTVmC/VxtZUgCP8g+42geE8DDlZxipfXo9m+zogSg2x4va6nPzSuTdKRr7iVieKBCpWGF8vfQLckq6qVZnd5NUf8EDp/TEsJUWPflurVAirO12D+sXjBLbkuCM7tifzRdRPjgZ4lZcisOQb4TtBIO9f3P3P8UmDbuqN6SUUScEKJaa8WYkETZMq8HY9/75fZ//InJmgqawMzCAnuytKEInInbih/VcpeOxIIKqrCwQN3OprjydJMuUqlk2v31yXmhBI0715P0iYpyeE6n4EH11sTimohVsroFRAABg0xxHJikKh1G6CyVU1pfeQpv0FOVy3F2I1iJ/qfvq4bjA7ijNBQDmmoI2lvcGJhZyspWDxYWIsxoMu0S090wfMoU1MGEFYMNe9Lup60+k9dQ2X/ati3AHUaS+Cyaf4+4Y9UrBQbZoP+2pQgIGtYjsPC7oaigvr+kFhgDQuOVIfpBOtfxpQkiK8NFDztr0kwM5Afw1sh8VR9PhdSZcQlDY5KkHngWb3wFD4DomzsDlW6Q7JUsRUA8vc5Ix9/MH0hPPTsprC9dA4HJoHo0SUHFD+d1RGRY2pNhkK9MCua77ab9Qr0C5xRZPiXRF8PGduf6gH88zQA7yuXajOS5GTxPZkdmWyJGUo80gU619saHJkMiw1GxQR4XD4ttsftqT3vGQ6h/zvXHxjuS8YJlJ44axgSqm0QFB34CCIXtEhGFqetL0KBIhGDYix4FdSaL9fFhE7M8ZYtliMcNy5FUNNEXanJIe6HzqWYPghhhDGseR9CuQleG4IF21Cfj1XvyzOLpwnr9xxIlPD18d14sn7sXa0132kfbVqSL4E+RpYDFC6tPiyFa9nOTPdfBSaXC/SpZwq4cvUt+f53H2aAiFnUwLv0o3UOjnvJdaWEaaMgN38es6rNgQ8OMSzZApZHnaMy/ah86cLHE1J9Jmpdnzxw3uJtT2AXCoPfrHaEyAhaAqyE5Yn5I0mP6rxqFZMV6Cc94NjZZRU4wVDcTtuGIg49nKx7FR3rYPcQuRs/pYTjdbSEWpolrKz932l+yxRwvZ4uW3Na6TX94BEHVzapQLwmdiYTBLMaSp1+frf8hmDG2/ZOePAFr7LsM1aeGtUTWL4iQZo0qCjtmtEN1KMBoXsHegZefoKpl30wTQcGUagku6cbAyfYufJilXNWOM4oUFbEtVEv4aBe1lmzZ2dIrrD/5g5zgicZ3eqFMdK7XbnxTB8Kd2SNeusQHOeJ7qaM4Dg1gCOgKXXlhfTkvGmMUiAh1tRWXnlJvfYKhAVOO0LzA9p9Iumw4XWAiTILGoUAv2d63EwBs4OYDPHur9rWjtBiaaTTd/6vSKadM38oY7pgAqsForeM9tokTIemC1h8eI+sO32EGFI5uq8m+u/ZdapPpMl9m9704RXYqv84enM5iMDC4LLQh/AL3FP/rUsLhy0ueAV0SjTX6oavKEqL5HEscX4LNdM8WSWo1tYt2PsG5XOhYcJY2kL/G4uQ1Uc+OG8dMW1hWe6gs3ZHy70yH2WOIJSBB3lH1GcMS1x3dcMT684rHlUh8IxQJIvu0Ob/xPB3pSafn6Pz6R8OKp9lPpzydqaO1oW4g9aQGU5JC/TdWHGlZXNQGhWflw5wZD35knb6WQdKloRMoR0UQ8H6bUqJ5VPV8uAF/GSwEvjxZoHCZkvCbPUSRdx+okkm4ZBx4TtaExYPz7jlcxCZmKPFQ/EB6dGiTu93gASsagOLDYEuTp/ZOonMQdQOg1eRj4RIR576qeHKOzcdohFNvEf7emTZBN+nYz6oHvqAEJeNVGvC4U0+xSB/B/jVShccvk1fc9l57QEYN8RCLKJ43czwhh7hLNgYqAXt7JjJ4TnH+0q+o5UJ41yDYurobONQprI6rrjW4427/+EiRO2mmQYp9XVXuuTDKm2umc2Jx423Qwy1mqa/L0lA7JvSkDRICRWHG1svhSPvb3doKlz+3/NSbDBw70NQeW8Sftf5EgBxMdP/4oqGi1HH8/lS2K5zJ0aJyDSFjeD3lXw+T2rxtu/G5tOFuB0OHsu+ocvlPExZPGAQgpgdAO5CV9xr+AmZJdgg1C1RSRzMSzo4B9Ttyg1YHSubyfCuvtvjRVjo1VjW1S59kzWVkumryFV5BFcNvLQX5BQO/NQYSIgQ68ozNQeH3sVP6IUEVozxKU0mnE80xVetE1uabQMPWp7aHF86VsFnOmgIF7IimHDKRNcBIBVPkoe4ouh45F9pEHn5DG7jlUTqOmQnvoHqQuQuYFbBup/ATeb25+NiK2OzWZ+LoWAcmDAYtcOOLXYLdKVZkg/0vKaIklLFPb1wb2CotN0ah2c5ZH6r1wZVfWkWjAEuCcst1KqFJwSTvS0mcRxRTjrxr0WZtQ8cXf3MQ+LSf9TdXrhr3iUp5TfmU7paBUSUGbgKTYlARAU6xcEoN9rW6vEo6xuF+7TU3oFOGSQi3AiDlHH655ZvrOJ+hrS9jpwYhqAOdSIpZX8WXmOu8nDfbwMLPLm+zqI+6oN14oh9iKsPdlNF330xuCRGL55FeIMMMDVNl17RdONe+f+8jKce5dYLIUWiMCXvlGnk9Ek63wt7rhjE29O7G88v/DoXFpx42ah9kQyvIWlhAAMM1GiVVcu8xtUH15QZ2M2bQW/fGXXElllwx+SCkiuh81z/+HbEU5+sLqpsHnL4mSaoAcu8rRgkC97iRJkeW0jJ06nMac1YsSlNtFYIIzKTMWVnhNwGimLip98UjVIKTybIVGWTVNM/bvMarvOX2k2xhKoBAoJEt8d8ZnhYr4mmvs2Ugp8OZ3Uq1qlwrn11Ka4tbmfXb5CQs1cpo0nHj0sisQXQyQEadoTRzRrfenzGJRDGKf1y6wK93HDa6Tx12WerPS1IcymHHVvi+a0Wt5qTWkhl3r7Cpiln9BtD2cDzqUx528RZye/1Ut+aFbuyfVzZzESC5Nn74exElI0YQ7ZZTvH730KlGif+eCQ8Ei89UBwWf2w2gi+k+CW4TLAMAmQ/xw9ZZmHRzAgvampZAo4psreKuYrHCnL14pLZ7ltAK6XfiXMXa9+zTv1ktjKyq2RGPZW5lwuXJKOy6Cis/woa36erVBOn10EOnYHxbj0MTPSkQgE/r6hGMGEfSWRFkrIJWMqBSRKLDuD6oOWGMwjve8wyxx9eKBTvLhpBmJdVqNg9o9wUBf+5dj/7Po6nCxU6P3yrnaIDLwm5U4a6NSesCd3UR0q0sGiorWfcDQFB9u23zE4QZgKSGwpNl8UypyqZ1FKAOgwloOXtKUw8z/bTLtS9bK/idP7GdGgejJFHooJA+w8qenQ0vtpQGKBwuMHnrjysMKB1/qRVvXtJI0kaVG9DU7410gnQ8z491SUrfXzHyXC/kUFK4DmvYQIHsmL4KDKoHdnBwWvIFlTIPRGy/qQU4K/hnO65/Mui1i7ztB/R9kEo1JEFYynu6ppi1UktLw3daXmwZcOXrxf8kxEMXrpT1eXxUSMhQnOJjmhmt+Amb+NqBmDjIZMzh4BHV/nMsrybcN9MCusLxxncDpfn9QEPNXTryhh6yGQa6848RKWUicYltM8rj3J4CJ9eBZ69GlKcroK0TUA6wWASSzbfnClCcnp+pUOZnyhZKXfeK5m8dvVxXjbW3u2ul6z04hDsCRCf+Zsv8hKvEHBokEkHIvjaLi1RnPTtNmWR4sdITYil/9fQgIRIvuPxJeXR1n58iNMYVwp7U05NuKBPT6wbCfl9aaoU6sNROelvxv+oJNsnNYXLPgTzpewANPqj5ZmP/ItEj0nMSHkgIe32pM0liLCxWSiWqaRO4gNFKTbeuNw6TBGClKhoxWaC3U3eKkUTbYRKwTaVTBwwPb9vGB0W4p+10CqKYVCvGMAlWGRCdtYZu4BEibHJgK4pXM0abGV2PCB+6GVbV9/sQzJ2PWseBMvteaHZHPr7SBrHkZ0uUoPVq1H+pJZ37fVVROTh7E7wTp2Gh8hVNJmRLQa3r7IgXOYbcEBPAPDXp5KPseBNF1PAGzWIWPesix3cQ7zM6a2geo01kmp+ymBzQEmJxH3cSGlBdXo6Mp4+xP8S9fH9fTH64Kyhg7S7bZrp/AFrH2pm0IG/rJNSYzvEXCT8l02u+gR5Ne8Yr1tOSlNkuWAHQXH9r3yTEc+MjoX9LY9EEsLsVLsU2hKeNhrUh3JE0yeqTQl5Pv/GUaZHhdytew/b2CxRayEQtSAmM5uyddvVoIMLns+bvrDjIyhvQYoUa4Sz0D1Sgykmiig5bc5KNdVgyPWkKCQAOt07Slc2FZczoE+wHouOVEKe6gCNFrnoimm1veM0yMGnTZEd5nCkwEGCXB4l6HV2GufibZgGziFazmIOP4MwAs7Nxmuv6u4VwlmAkBdFqt5LP5vfhE0GQ+1MfVRqbDRgvcM2TxvylK0jo+Rr8nVEn01l1iSzLPYNt/2KE8mrpLjKlgYVMMl/B6pDLuI2miavK9fODLm6Nr78RaxCtzlaNyhzfJrm0AG75TjDUAss9zk7O4bCwvk49aqc3DT3HUhhL7XpV5xAKKD/goRv36IYgJl0cJI/SM9XAWwA922OwJalYPanPRsLsiG3PSu/LHQRR2MZONA/P87avkrlvI+P8rh+mqj8UOph5rAeeR6iVcQBRbEXsKICcsLWs0ZrKxIFaAHuDuMPb+A850v6Gfb9FPe/I8aIpLKQMPpKFBeRT4FRLp43thZ2VN58zToCC7fgpm72DDZqFc+UDYoi9j4pQ9Jf6HRomLGBaAPtKFb5F8aAEj/TR6d/Z8eVjnPX1UKXiqjS8PPcheqIvhjil4JIDO1oyO5JQZR0eILX/q+gIEq+CG5GiCGp1fYwBrFJwXFXfhUsEGfusIbLElXeZWX5zgliKDBmJ3maky7cTsVPspv09N6BwB3tH/4Ib7Gu/HZ+ZBLgH2H++W8T3u7Qv5EkPlEmnEAH68E2PPHeDKK2Ze2KAZHQmiXg5QEI2AAcVuFqiVpSTPSKLvh/8AaM8gperOPpC5iiTLmZ7oBl31b0xHXILbrRUxmukWii/vN3rL+hiH3Dpzv9wv+9+Fw98Aj/u6nfB4K79zCoBDudKqAvzWTD3gm2fYgEUAM3DHj/JZR7bguyacO8SVT24xnCLzUIEf8g6/FPzhMD4jV/K2Pbzf6hak7tWM6DgtO7yeJu5g94RU924R+aZEKTOUGWb8PtsjJSqD5LKQncC4rifZKPn0n9NcnCi0U+UfFD/wlnk5ThEFUKeM8KqJwfRGeplk7SmAVbXyc5zI7t3alTpzJ6OFQtUaezDmaRfQtz/jfRIeJwIaI8OQGisvfW5nvdIbuM4joth/BZ2+ku5eR/7oAwg1x03t3hRgUBGTmublJ28yZXjQ6/PU9BtulUCFgMuZ5usrsuuve2KjfjGbX3iZa0pi7IIQiLO0X1HaBPwopZAAvGfXH2Vd6c3CDirkRMZkn9zCw6Fih6eVZs7uF86Pl6OmoTrXz37cyGE6ZIV9FkbGzmyyrTugOfOhr353iqILXVsvv9yISqjgIsgUfsqzF3tgBloDep39xpvDyD1p3Vy0Jwh8dGEfoUyEroFz4L98ClR+xL1AP4o5kqsZ919fhxD6K5GzDntIY1h3joSnlMFLO+7QRLHaQn0Pe25nAavulBxcvuDTo/1EA+JIIKK9aqzS6p/kdLqldH/bx2ElfRVeqiIDOUUW13LYbr6k1RPnixPYO54msX8VC7GssVlVemOQT0cKkuhxZJOHTCqN2s47UwTh0X9u8Q0bnmyCU1U4rRdjTTKoFomzq2grXYMQvt1Mbnut/PNi1R14VRUf+1/6zokd5ZVhjxrVxc/hqbV1BsDwggC7l8i8DxL1EC4rovfKwjvN87ZvIqVlu/raR45dKde+Lu3GA7WONbVRJh8inBkt39xsaoiuw4Hxy76jZomTFy3w67Ze/xi0lvpUuYBQaHtuGo1jEOu3pjcwgCD0+IZb7QPP2SyRXBCa80DuNMrahRUacy0PycFdjIn75oT9i4NDHJZ934a+UIwWysLuMvuKVWdmtYaIXO9cU5ZnPRDxzHmRNamMWdg+3Uyg9KPa/mgzVQT7wzkniF6I9wBbNcko0KIi8/pdFLMRI48vj5HLu6L0KKuzHD25vxnHUkldPCNptQvdLQU+469DZ4M3FTX0+0oX/nAJKIqQyCeZgTa5uMclaV4ns5341aHXX9+7kWpGWeCzgipb7looE+48bjI0f2xeR6rIglO7xinu+nRzMCNuFqIHHDZQ1X5PLknaKwc3t6T+xuZc/4WHMT854FCdH6ZInvIt1usjliX3M/7VGDRIlQ2sL0PqT5Iq1OCXR6l3GjXzZcoA/MfzhFSZoWouCvw1FiiDcvhJ9IidrWzmvqicOcXXMe+RmNLIlMjKlYawd17Hbz0agg1USpNdb45fuxcZc62YtIrmyTJlZ2oq28YknglLmCWybG1hNjwT3VezviWhjfqy3ndiVD7/W/QN6Lm9TJ8wgH/mwZUBxt/xBXLs3uHZ9Q69toJ0aruh/tA3LxIKw1pc1Fd1oMCK1OBonVinzQmG6pIhgOIfwqAlBJkCIBbXCK5YroLakT4urej/LIzl2STSllIW4reZhxZ6OlynA5kbYfIlvEjKXK9sHNhYkvZADxCLPl2kNWXR5+3McJepHkR5cvEcNA826OsWzIiJygf2s+ezcyaseVlw5FTGWDyWOHdVAafY1Lxx8UySWOPG9QWyRGAQwAWbuG5Rb7ijwcCoGeoX1xpFbKr1oxgMul6TN7gSWN3Gjm9DHbSGk8TcnRm6y6bSskMwSs4cY3THiJ6DnJ6FXoUDj8i5zLX7r1+Bow1QOGUVUTdcqc+4i0Ii4VGqmKalksqN1dbtDu4AxLid7Piy6dvVZKdMHyB3F5jOZNJQel/Vkwwz0jsRAs6weHmDsQC2PEPis4x+gMmbRlElc6QwSI7rPlbfmcob3cPBNPK6JxSyL5Z1AnPx77CePZL5yq2J0loUEcqERHq7aqlDrZX/Wyo2hjDHW+6LwNsIq8AxI8SzdVy7AotqdEhWc8Qu8s1/VoNWC77XXsqh4PwD6BOAGxp7t6zl4L9sPr2CMMnC1vGLgYuFZ+6kEFbZzCVjpC0rv1IyvMvmgzfZRu/y11S3cn1MaD8Y4h2TjenmGXoMPalU/j8+TotRYUQvRO4gMAraKjc1HMWcZyDUvNzkr27BAhAAXAkSxCl5iSj2gF6TMbgk7IaoGPUD8YyBSQNIMKUGVBIb6nnX+4TTaX6wiGvYkI1Om7zhIjUq0OLT3trMA1djvVdxKL0pXS39DBNwzYy/PyCF+1W0U6WzhZDjei80QlqTBdFOhVu6DjYJhOl+V9wEW6eKI8hGvKDBIjbPw0+0H0FKqRRnYyLJne4mo4UvYGd6GeDLQWWwLpkK1kEvpXLjcoiLzMknoxQITcrNxromsY0yKwodcbkQ9lYx82rksxy3hnmmFVeUTb7T2c0TJGnNidrzMG/LVNkkMc3o489+v8JBIWSUyvQsBvT8gq7ecp5jwLeHHoiGCfgzjLpuuVtwBf1n31YSKNbStkVc3XrLYKWfonC4UzEx+sAkq3C6c9FtUiDIi2hfj1wJ7+z0XIg6BIGl3eWOzNjefQieuXOkVRXmB7hLfumHN0dbsMpwC+IE3XcBtJ+qtrLKWg1af7x/+gW0q31tKw2ROe5KFP55ZVa+F7546zG9Wy8tCCsjDRaqh+wngjeaH8FwEqmMsCLKco0xW5tYtZMG3LgUSHC+MVdjLkQD8PN+EjmrHohGpA7tWDJ181afEoEZLV0X317d6WbAGbwXHeHQssvkhcAi+/3dSb6nNvtV4kiCERZjMSdvezSRd3SnSPjRhoGlXjEFBOommBslIl9XDhIqksXSx77JZdLBRnB7S8axrvCB9vxTIoFB0HjBsaW11um4FqEB9QJolWQBuPesPH+Ic+Efy5u7sOjaApMm5BY/doO/ttfMcTCy4907YHCSIZqIk/njKr1eFmSOQg+yfsCq88rMe5hSFMBqS3u3nrawLpnVmPx/3JvgXIUkBYl0am8LFAfR7dtqfuDXZhtpcFKR2ynC8jvAFcNx6iXJUrjzVsRZOq5XCoFDEUJgCqt6EbNFbCxmLo2cXtgAA87RCz0tG2Yyi/OwyakkYt3EB+49mb8/vIoGKdfPkRRA+iCvwmo66+SrGLzgo8yUYSJG2s/9hbJs9zQxwm0A9wNWbSDp2V8p+q995WTqowAHGuYJHW2xIbAsyqLZXwOvp0pfooOLxa0Um+GvYwDM9X4nIhAl7znbagrLiLDVXWTe5fPHgGyY4eHiUlnDhSTD8t0Ts4HCkzWi6K8Pp36tp22i8Sj0p1MlAwyukTqmmhgQ0Gpf5dbvF1MBUk2YIJtQS8RFd6sty2cnEPGZO7LaRh/OsC0yl8TuW4gkJfLnf3Tcv+gEorbAMF7sJRYcdutuiO/KmXs2kV1vyYL5ob/R/cVT9ZJm5d/c0yD7yEmQHmAK8j06fxduNLUUT0TZiH7JfhSoJ0bAg3CxkSDreKEYAoIizioEgarjQ/pPMM40HbI/wcxLOqDXpb+ZCPpOqQGfszi91eGdMR2QPJMLCnoIN3+1C++OPQ3Qx9/CmG8Af1XZNxv6MvgnlVfwTVRw3Oign9Q1za2YhqTZyVBNWFLRXnb7Bondd30j4lbEpGq7uaTM2WHLxbMx8zUnrwBpEoPfuChnc64kadqakQmbOjT/evq/pvM7dAdWCRzLSyHbGVy/VHiHuzDXxBfngHgSxZu3N67djnoaXSWI61jEhWb58ZwzyiM2nw/Rh1t7I5YRN/dzZD8aTbWzsKk9AFZC0JYbPTF6ANoJBePKg71EIofszr53yv0KejXlr8DTwoHAdMNzCHdAvRAPOs2PtiPyxq9yCnPXRoCvWg8HaazpMW9Lvof+T8+v3M1BaR3w+skCHCDq2VtCS/yl6cJp07DZgPdLPzibDb++1uEWzVJzv6CT4D2ozxDac2kQxRyMj24JsKhr45LOtMh/Zo8lJ0WPsL2ni/9oxAO8mRhvmX6E95ODxijW1w92sLkY1Ngak03rq9nOIG6uNu9WYA1aK69X8NPI6Fpp0LjUZ8YUJ0kmWSloET77cMVoDd6Yr3+QdaEuic2OtkrmV105kNCKdX3Two5gfqZJEYaut7L8hepI7Wo9r1ndQsilscVYDHhFTQ+xwnw4Msg6HdHnk+jE4TOAS6ZGF/9erypquHSu7vlvszojYF4uvw7PkL1fSkq6L2mz8YNBavR19cKNLwqUXOIODrWbb3KRt8M8BqGIpVs+zRyHZ9vewjgS58fWGtXqEP0791XNgQ8fdY6z9EOJz8n//E2k6rN231P2R+J0gGrZMsiVCJ0cafaPn4FkYG2S7BglZIEzyrai8S7e6Dkx+YMmNbvm3NQYB+e5y8jRnfJXYMzSBJib5tW2+a2SY+LU+nJpudg9ss7GkhJtT75GCUCLddXChCViLka1fGyw09Bf4zbJAymMpW2J3rWM1r6o1soS13DIK5PwKh0rLyPcfADsj3rxRwEPK23tWu2I3bZHXhbVhPHRAyfKDzZUEwE9iNQjeswAPD/l01Zz+U7JhglW8DfNgWuhCjqIrlqbqpKE5JIQ1KzfqLeN++56bKV7D5Pppmp6vJIpkbhWQYG5ofpFz+cKskkzZEFuzmq9DEHS5IRjbDR4tYICkoFbwdtgXFX52WovHCb0ytaEkn2XjpmlJoQpdDdwOSCSg8DrVd707LLMy7XknfbWgmmF6IyqlelZC3gYlmQCgnyR3OE6F6MbuWCJnrQQRrz0WSI+uTvV9ZjKKxVko1hKg+goFAYSFnZT+aO+JiriasV0blZojNP1bHMKxh1OhMIpp9cP5rQ9pATQKbYohHIw60FBNrjCNx05Q9EdSCJpyAFPUn3zwpvOKmxg+6LSJ1KPBBjQMz6EWFq48n9EM66w0rG+mx8kEFiIu49J3WOd8R1BErDL5OTc6L0uWC8Wt5X+MU7m7R+ebmbkJ5fzKR4rDxe07ceGGbiy3S6Rg3JLXmls2DPN+PMlvggoPvx73zHLWsRdDOIRhdqtO6xJ7HP5OWKjzm4lnfWu+nI798y4=\"}" } \ No newline at end of file diff --git a/backend/src/db/api/organizations.js b/backend/src/db/api/organizations.js index ad4898f..d77fb6a 100644 --- a/backend/src/db/api/organizations.js +++ b/backend/src/db/api/organizations.js @@ -134,17 +134,13 @@ module.exports = class OrganizationsDBApi { const output = organizations.get({ plain: true }); - output.users_organizations = await organizations.getUsers_organizations({ - transaction, - }); - output.categories_organizations = await organizations.getCategories_organizations({ transaction, }); - output.customers_organizations = - await organizations.getCustomers_organizations({ + output.payments_organizations = + await organizations.getPayments_organizations({ transaction, }); @@ -153,21 +149,25 @@ module.exports = class OrganizationsDBApi { transaction, }); - output.orders_organizations = await organizations.getOrders_organizations({ - transaction, - }); - - output.payments_organizations = - await organizations.getPayments_organizations({ - transaction, - }); - output.reports_organizations = await organizations.getReports_organizations( { transaction, }, ); + output.customers_organizations = + await organizations.getCustomers_organizations({ + transaction, + }); + + output.orders_organizations = await organizations.getOrders_organizations({ + transaction, + }); + + output.users_organizations = await organizations.getUsers_organizations({ + transaction, + }); + return output; } diff --git a/backend/src/db/migrations/1758057086747.js b/backend/src/db/migrations/1758057086747.js new file mode 100644 index 0000000..e6bfba3 --- /dev/null +++ b/backend/src/db/migrations/1758057086747.js @@ -0,0 +1,36 @@ +module.exports = { + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async up(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async down(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, +}; diff --git a/backend/src/db/models/organizations.js b/backend/src/db/models/organizations.js index 26a7ba0..4aad734 100644 --- a/backend/src/db/models/organizations.js +++ b/backend/src/db/models/organizations.js @@ -34,14 +34,6 @@ module.exports = function (sequelize, DataTypes) { organizations.associate = (db) => { /// loop through entities and it's fields, and if ref === current e[name] and create relation has many on parent entity - db.organizations.hasMany(db.users, { - as: 'users_organizations', - foreignKey: { - name: 'organizationsId', - }, - constraints: false, - }); - db.organizations.hasMany(db.categories, { as: 'categories_organizations', foreignKey: { @@ -50,30 +42,6 @@ module.exports = function (sequelize, DataTypes) { constraints: false, }); - db.organizations.hasMany(db.customers, { - as: 'customers_organizations', - foreignKey: { - name: 'organizationsId', - }, - constraints: false, - }); - - db.organizations.hasMany(db.furniture_types, { - as: 'furniture_types_organizations', - foreignKey: { - name: 'organizationsId', - }, - constraints: false, - }); - - db.organizations.hasMany(db.orders, { - as: 'orders_organizations', - foreignKey: { - name: 'organizationsId', - }, - constraints: false, - }); - db.organizations.hasMany(db.payments, { as: 'payments_organizations', foreignKey: { @@ -82,6 +50,14 @@ module.exports = function (sequelize, DataTypes) { constraints: false, }); + db.organizations.hasMany(db.furniture_types, { + as: 'furniture_types_organizations', + foreignKey: { + name: 'organizationsId', + }, + constraints: false, + }); + db.organizations.hasMany(db.reports, { as: 'reports_organizations', foreignKey: { @@ -90,6 +66,30 @@ module.exports = function (sequelize, DataTypes) { constraints: false, }); + db.organizations.hasMany(db.customers, { + as: 'customers_organizations', + foreignKey: { + name: 'organizationsId', + }, + constraints: false, + }); + + db.organizations.hasMany(db.orders, { + as: 'orders_organizations', + foreignKey: { + name: 'organizationsId', + }, + constraints: false, + }); + + db.organizations.hasMany(db.users, { + as: 'users_organizations', + foreignKey: { + name: 'organizationsId', + }, + constraints: false, + }); + //end loop db.organizations.belongsTo(db.users, { diff --git a/backend/src/db/seeders/20200430130760-user-roles.js b/backend/src/db/seeders/20200430130760-user-roles.js index 6712834..b9b9662 100644 --- a/backend/src/db/seeders/20200430130760-user-roles.js +++ b/backend/src/db/seeders/20200430130760-user-roles.js @@ -101,15 +101,15 @@ module.exports = { } const entities = [ - 'users', 'categories', - 'customers', - 'furniture_types', - 'orders', - 'roles', 'payments', + 'furniture_types', 'reports', 'permissions', + 'customers', + 'orders', + 'users', + 'roles', 'organizations', , ]; @@ -151,34 +151,6 @@ primary key ("roles_permissionsId", "permissionId") );`); await queryInterface.bulkInsert('rolesPermissionsPermissions', [ - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('CREATE_USERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('READ_USERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('UPDATE_USERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('DELETE_USERS'), - }, - { createdAt, updatedAt, @@ -260,70 +232,70 @@ primary key ("roles_permissionsId", "permissionId") createdAt, updatedAt, roles_permissionsId: getId('OperationsManager'), - permissionId: getId('CREATE_CUSTOMERS'), + permissionId: getId('CREATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('OperationsManager'), - permissionId: getId('READ_CUSTOMERS'), + permissionId: getId('READ_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('OperationsManager'), - permissionId: getId('UPDATE_CUSTOMERS'), + permissionId: getId('UPDATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('OperationsManager'), - permissionId: getId('DELETE_CUSTOMERS'), + permissionId: getId('DELETE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SalesLead'), - permissionId: getId('READ_CUSTOMERS'), + permissionId: getId('READ_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SalesLead'), - permissionId: getId('UPDATE_CUSTOMERS'), + permissionId: getId('UPDATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('CustomerSupport'), - permissionId: getId('READ_CUSTOMERS'), + permissionId: getId('READ_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('CustomerSupport'), - permissionId: getId('UPDATE_CUSTOMERS'), + permissionId: getId('UPDATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('DataAnalyst'), - permissionId: getId('READ_CUSTOMERS'), + permissionId: getId('READ_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('DataAnalyst'), - permissionId: getId('UPDATE_CUSTOMERS'), + permissionId: getId('UPDATE_PAYMENTS'), }, { @@ -403,167 +375,6 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('UPDATE_FURNITURE_TYPES'), }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('CREATE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('READ_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('UPDATE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('DELETE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('SalesLead'), - permissionId: getId('CREATE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('SalesLead'), - permissionId: getId('READ_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('SalesLead'), - permissionId: getId('UPDATE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('InventorySpecialist'), - permissionId: getId('READ_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('InventorySpecialist'), - permissionId: getId('UPDATE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('CustomerSupport'), - permissionId: getId('READ_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('CustomerSupport'), - permissionId: getId('UPDATE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('DataAnalyst'), - permissionId: getId('READ_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('DataAnalyst'), - permissionId: getId('UPDATE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('CREATE_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('READ_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('UPDATE_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('OperationsManager'), - permissionId: getId('DELETE_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('SalesLead'), - permissionId: getId('READ_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('SalesLead'), - permissionId: getId('UPDATE_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('CustomerSupport'), - permissionId: getId('READ_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('CustomerSupport'), - permissionId: getId('UPDATE_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('DataAnalyst'), - permissionId: getId('READ_PAYMENTS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('DataAnalyst'), - permissionId: getId('UPDATE_PAYMENTS'), - }, - { createdAt, updatedAt, @@ -648,6 +459,195 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('UPDATE_REPORTS'), }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('CREATE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('READ_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('UPDATE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('DELETE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SalesLead'), + permissionId: getId('READ_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SalesLead'), + permissionId: getId('UPDATE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('CustomerSupport'), + permissionId: getId('READ_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('CustomerSupport'), + permissionId: getId('UPDATE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('DataAnalyst'), + permissionId: getId('READ_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('DataAnalyst'), + permissionId: getId('UPDATE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('CREATE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('READ_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('UPDATE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('DELETE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SalesLead'), + permissionId: getId('CREATE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SalesLead'), + permissionId: getId('READ_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SalesLead'), + permissionId: getId('UPDATE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('InventorySpecialist'), + permissionId: getId('READ_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('InventorySpecialist'), + permissionId: getId('UPDATE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('CustomerSupport'), + permissionId: getId('READ_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('CustomerSupport'), + permissionId: getId('UPDATE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('DataAnalyst'), + permissionId: getId('READ_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('DataAnalyst'), + permissionId: getId('UPDATE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('CREATE_USERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('READ_USERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('UPDATE_USERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('OperationsManager'), + permissionId: getId('DELETE_USERS'), + }, + { createdAt, updatedAt, @@ -683,31 +683,6 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('CREATE_SEARCH'), }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('CREATE_USERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('READ_USERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('UPDATE_USERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('DELETE_USERS'), - }, - { createdAt, updatedAt, @@ -737,25 +712,25 @@ primary key ("roles_permissionsId", "permissionId") createdAt, updatedAt, roles_permissionsId: getId('Administrator'), - permissionId: getId('CREATE_CUSTOMERS'), + permissionId: getId('CREATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), - permissionId: getId('READ_CUSTOMERS'), + permissionId: getId('READ_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), - permissionId: getId('UPDATE_CUSTOMERS'), + permissionId: getId('UPDATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), - permissionId: getId('DELETE_CUSTOMERS'), + permissionId: getId('DELETE_PAYMENTS'), }, { @@ -783,56 +758,6 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('DELETE_FURNITURE_TYPES'), }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('CREATE_ORDERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('READ_ORDERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('UPDATE_ORDERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('DELETE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('CREATE_PAYMENTS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('READ_PAYMENTS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('UPDATE_PAYMENTS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('Administrator'), - permissionId: getId('DELETE_PAYMENTS'), - }, - { createdAt, updatedAt, @@ -861,25 +786,75 @@ primary key ("roles_permissionsId", "permissionId") { createdAt, updatedAt, - roles_permissionsId: getId('SuperAdmin'), + roles_permissionsId: getId('Administrator'), + permissionId: getId('CREATE_CUSTOMERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('READ_CUSTOMERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('UPDATE_CUSTOMERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('DELETE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('CREATE_ORDERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('READ_ORDERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('UPDATE_ORDERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), + permissionId: getId('DELETE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_USERS'), }, { createdAt, updatedAt, - roles_permissionsId: getId('SuperAdmin'), + roles_permissionsId: getId('Administrator'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, - roles_permissionsId: getId('SuperAdmin'), + roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_USERS'), }, { createdAt, updatedAt, - roles_permissionsId: getId('SuperAdmin'), + roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_USERS'), }, @@ -912,25 +887,25 @@ primary key ("roles_permissionsId", "permissionId") createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('CREATE_CUSTOMERS'), + permissionId: getId('CREATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('READ_CUSTOMERS'), + permissionId: getId('READ_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('UPDATE_CUSTOMERS'), + permissionId: getId('UPDATE_PAYMENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('DELETE_CUSTOMERS'), + permissionId: getId('DELETE_PAYMENTS'), }, { @@ -958,81 +933,6 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('DELETE_FURNITURE_TYPES'), }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('CREATE_ORDERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('READ_ORDERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('UPDATE_ORDERS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('DELETE_ORDERS'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('CREATE_ROLES'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('READ_ROLES'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('UPDATE_ROLES'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('DELETE_ROLES'), - }, - - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('CREATE_PAYMENTS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('READ_PAYMENTS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('UPDATE_PAYMENTS'), - }, - { - createdAt, - updatedAt, - roles_permissionsId: getId('SuperAdmin'), - permissionId: getId('DELETE_PAYMENTS'), - }, - { createdAt, updatedAt, @@ -1083,6 +983,106 @@ primary key ("roles_permissionsId", "permissionId") permissionId: getId('DELETE_PERMISSIONS'), }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('CREATE_CUSTOMERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('READ_CUSTOMERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('UPDATE_CUSTOMERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('DELETE_CUSTOMERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('CREATE_ORDERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('READ_ORDERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('UPDATE_ORDERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('DELETE_ORDERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('CREATE_USERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('READ_USERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('UPDATE_USERS'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('DELETE_USERS'), + }, + + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('CREATE_ROLES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('READ_ROLES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('UPDATE_ROLES'), + }, + { + createdAt, + updatedAt, + roles_permissionsId: getId('SuperAdmin'), + permissionId: getId('DELETE_ROLES'), + }, + { createdAt, updatedAt, diff --git a/backend/src/db/seeders/20231127130745-sample-data.js b/backend/src/db/seeders/20231127130745-sample-data.js index b2796fd..aa4b4c1 100644 --- a/backend/src/db/seeders/20231127130745-sample-data.js +++ b/backend/src/db/seeders/20231127130745-sample-data.js @@ -3,16 +3,16 @@ const Users = db.users; const Categories = db.categories; -const Customers = db.customers; +const Payments = db.payments; const FurnitureTypes = db.furniture_types; -const Orders = db.orders; - -const Payments = db.payments; - const Reports = db.reports; +const Customers = db.customers; + +const Orders = db.orders; + const Organizations = db.organizations; const CategoriesData = [ @@ -33,35 +33,59 @@ const CategoriesData = [ // type code here for "relation_one" field }, + + { + name: 'Benches', + + // type code here for "relation_one" field + }, ]; -const CustomersData = [ +const PaymentsData = [ { - first_name: 'John', + // type code here for "relation_one" field - last_name: 'Doe', + amount: 300, - email: 'john.doe@example.com', + method: 'CreditCard', + + verified: true, // type code here for "relation_one" field }, { - first_name: 'Jane', + // type code here for "relation_one" field - last_name: 'Smith', + amount: 120, - email: 'jane.smith@example.com', + method: 'CreditCard', + + verified: true, // type code here for "relation_one" field }, { - first_name: 'Alice', + // type code here for "relation_one" field - last_name: 'Johnson', + amount: 480, - email: 'alice.johnson@example.com', + method: 'CreditCard', + + verified: true, + + // type code here for "relation_one" field + }, + + { + // type code here for "relation_one" field + + amount: 270, + + method: 'CreditCard', + + verified: true, // type code here for "relation_one" field }, @@ -103,80 +127,16 @@ const FurnitureTypesData = [ // type code here for "relation_one" field }, -]; -const OrdersData = [ { - // type code here for "relation_one" field + name: 'Rustic Bench', + + price: 180, + + stock_level: 10, // type code here for "relation_many" field - order_date: new Date('2023-10-01T10:00:00Z'), - - status: 'Delivered', - - // type code here for "relation_one" field - }, - - { - // type code here for "relation_one" field - - // type code here for "relation_many" field - - order_date: new Date('2023-10-02T11:30:00Z'), - - status: 'Pending', - - // type code here for "relation_one" field - }, - - { - // type code here for "relation_one" field - - // type code here for "relation_many" field - - order_date: new Date('2023-10-03T14:00:00Z'), - - status: 'Pending', - - // type code here for "relation_one" field - }, -]; - -const PaymentsData = [ - { - // type code here for "relation_one" field - - amount: 300, - - method: 'CreditCard', - - verified: true, - - // type code here for "relation_one" field - }, - - { - // type code here for "relation_one" field - - amount: 120, - - method: 'PhonePe', - - verified: true, - - // type code here for "relation_one" field - }, - - { - // type code here for "relation_one" field - - amount: 480, - - method: 'CreditCard', - - verified: true, - // type code here for "relation_one" field }, ]; @@ -205,6 +165,106 @@ const ReportsData = [ // type code here for "relation_one" field }, + + { + title: 'Order Fulfillment Efficiency', + + generated_at: new Date('2023-10-04T11:00:00Z'), + + // type code here for "relation_one" field + }, +]; + +const CustomersData = [ + { + first_name: 'John', + + last_name: 'Doe', + + email: 'john.doe@example.com', + + // type code here for "relation_one" field + }, + + { + first_name: 'Jane', + + last_name: 'Smith', + + email: 'jane.smith@example.com', + + // type code here for "relation_one" field + }, + + { + first_name: 'Alice', + + last_name: 'Johnson', + + email: 'alice.johnson@example.com', + + // type code here for "relation_one" field + }, + + { + first_name: 'Bob', + + last_name: 'Brown', + + email: 'bob.brown@example.com', + + // type code here for "relation_one" field + }, +]; + +const OrdersData = [ + { + // type code here for "relation_one" field + + // type code here for "relation_many" field + + order_date: new Date('2023-10-01T10:00:00Z'), + + status: 'Shipped', + + // type code here for "relation_one" field + }, + + { + // type code here for "relation_one" field + + // type code here for "relation_many" field + + order_date: new Date('2023-10-02T11:30:00Z'), + + status: 'Pending', + + // type code here for "relation_one" field + }, + + { + // type code here for "relation_one" field + + // type code here for "relation_many" field + + order_date: new Date('2023-10-03T14:00:00Z'), + + status: 'Delivered', + + // type code here for "relation_one" field + }, + + { + // type code here for "relation_one" field + + // type code here for "relation_many" field + + order_date: new Date('2023-10-04T09:00:00Z'), + + status: 'Delivered', + + // type code here for "relation_one" field + }, ]; const OrganizationsData = [ @@ -219,45 +279,12 @@ const OrganizationsData = [ { name: 'HomeStyle Ltd.', }, + + { + name: 'UrbanDesigns', + }, ]; -// Similar logic for "relation_many" - -async function associateUserWithOrganization() { - const relatedOrganization0 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const User0 = await Users.findOne({ - order: [['id', 'ASC']], - offset: 0, - }); - if (User0?.setOrganization) { - await User0.setOrganization(relatedOrganization0); - } - - const relatedOrganization1 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const User1 = await Users.findOne({ - order: [['id', 'ASC']], - offset: 1, - }); - if (User1?.setOrganization) { - await User1.setOrganization(relatedOrganization1); - } - - const relatedOrganization2 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const User2 = await Users.findOne({ - order: [['id', 'ASC']], - offset: 2, - }); - if (User2?.setOrganization) { - await User2.setOrganization(relatedOrganization2); - } -} - async function associateCategoryWithOrganization() { const relatedOrganization0 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), @@ -291,40 +318,108 @@ async function associateCategoryWithOrganization() { if (Category2?.setOrganization) { await Category2.setOrganization(relatedOrganization2); } -} -async function associateCustomerWithOrganization() { - const relatedOrganization0 = await Organizations.findOne({ + const relatedOrganization3 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Customer0 = await Customers.findOne({ + const Category3 = await Categories.findOne({ + order: [['id', 'ASC']], + offset: 3, + }); + if (Category3?.setOrganization) { + await Category3.setOrganization(relatedOrganization3); + } +} + +async function associatePaymentWithOrder() { + const relatedOrder0 = await Orders.findOne({ + offset: Math.floor(Math.random() * (await Orders.count())), + }); + const Payment0 = await Payments.findOne({ order: [['id', 'ASC']], offset: 0, }); - if (Customer0?.setOrganization) { - await Customer0.setOrganization(relatedOrganization0); + if (Payment0?.setOrder) { + await Payment0.setOrder(relatedOrder0); + } + + const relatedOrder1 = await Orders.findOne({ + offset: Math.floor(Math.random() * (await Orders.count())), + }); + const Payment1 = await Payments.findOne({ + order: [['id', 'ASC']], + offset: 1, + }); + if (Payment1?.setOrder) { + await Payment1.setOrder(relatedOrder1); + } + + const relatedOrder2 = await Orders.findOne({ + offset: Math.floor(Math.random() * (await Orders.count())), + }); + const Payment2 = await Payments.findOne({ + order: [['id', 'ASC']], + offset: 2, + }); + if (Payment2?.setOrder) { + await Payment2.setOrder(relatedOrder2); + } + + const relatedOrder3 = await Orders.findOne({ + offset: Math.floor(Math.random() * (await Orders.count())), + }); + const Payment3 = await Payments.findOne({ + order: [['id', 'ASC']], + offset: 3, + }); + if (Payment3?.setOrder) { + await Payment3.setOrder(relatedOrder3); + } +} + +async function associatePaymentWithOrganization() { + const relatedOrganization0 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Payment0 = await Payments.findOne({ + order: [['id', 'ASC']], + offset: 0, + }); + if (Payment0?.setOrganization) { + await Payment0.setOrganization(relatedOrganization0); } const relatedOrganization1 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Customer1 = await Customers.findOne({ + const Payment1 = await Payments.findOne({ order: [['id', 'ASC']], offset: 1, }); - if (Customer1?.setOrganization) { - await Customer1.setOrganization(relatedOrganization1); + if (Payment1?.setOrganization) { + await Payment1.setOrganization(relatedOrganization1); } const relatedOrganization2 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Customer2 = await Customers.findOne({ + const Payment2 = await Payments.findOne({ order: [['id', 'ASC']], offset: 2, }); - if (Customer2?.setOrganization) { - await Customer2.setOrganization(relatedOrganization2); + if (Payment2?.setOrganization) { + await Payment2.setOrganization(relatedOrganization2); + } + + const relatedOrganization3 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Payment3 = await Payments.findOne({ + order: [['id', 'ASC']], + offset: 3, + }); + if (Payment3?.setOrganization) { + await Payment3.setOrganization(relatedOrganization3); } } @@ -363,6 +458,109 @@ async function associateFurnitureTypeWithOrganization() { if (FurnitureType2?.setOrganization) { await FurnitureType2.setOrganization(relatedOrganization2); } + + const relatedOrganization3 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const FurnitureType3 = await FurnitureTypes.findOne({ + order: [['id', 'ASC']], + offset: 3, + }); + if (FurnitureType3?.setOrganization) { + await FurnitureType3.setOrganization(relatedOrganization3); + } +} + +async function associateReportWithOrganization() { + const relatedOrganization0 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Report0 = await Reports.findOne({ + order: [['id', 'ASC']], + offset: 0, + }); + if (Report0?.setOrganization) { + await Report0.setOrganization(relatedOrganization0); + } + + const relatedOrganization1 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Report1 = await Reports.findOne({ + order: [['id', 'ASC']], + offset: 1, + }); + if (Report1?.setOrganization) { + await Report1.setOrganization(relatedOrganization1); + } + + const relatedOrganization2 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Report2 = await Reports.findOne({ + order: [['id', 'ASC']], + offset: 2, + }); + if (Report2?.setOrganization) { + await Report2.setOrganization(relatedOrganization2); + } + + const relatedOrganization3 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Report3 = await Reports.findOne({ + order: [['id', 'ASC']], + offset: 3, + }); + if (Report3?.setOrganization) { + await Report3.setOrganization(relatedOrganization3); + } +} + +async function associateCustomerWithOrganization() { + const relatedOrganization0 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Customer0 = await Customers.findOne({ + order: [['id', 'ASC']], + offset: 0, + }); + if (Customer0?.setOrganization) { + await Customer0.setOrganization(relatedOrganization0); + } + + const relatedOrganization1 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Customer1 = await Customers.findOne({ + order: [['id', 'ASC']], + offset: 1, + }); + if (Customer1?.setOrganization) { + await Customer1.setOrganization(relatedOrganization1); + } + + const relatedOrganization2 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Customer2 = await Customers.findOne({ + order: [['id', 'ASC']], + offset: 2, + }); + if (Customer2?.setOrganization) { + await Customer2.setOrganization(relatedOrganization2); + } + + const relatedOrganization3 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), + }); + const Customer3 = await Customers.findOne({ + order: [['id', 'ASC']], + offset: 3, + }); + if (Customer3?.setOrganization) { + await Customer3.setOrganization(relatedOrganization3); + } } async function associateOrderWithCustomer() { @@ -398,6 +596,17 @@ async function associateOrderWithCustomer() { if (Order2?.setCustomer) { await Order2.setCustomer(relatedCustomer2); } + + const relatedCustomer3 = await Customers.findOne({ + offset: Math.floor(Math.random() * (await Customers.count())), + }); + const Order3 = await Orders.findOne({ + order: [['id', 'ASC']], + offset: 3, + }); + if (Order3?.setCustomer) { + await Order3.setCustomer(relatedCustomer3); + } } // Similar logic for "relation_many" @@ -435,110 +644,64 @@ async function associateOrderWithOrganization() { if (Order2?.setOrganization) { await Order2.setOrganization(relatedOrganization2); } -} -async function associatePaymentWithOrder() { - const relatedOrder0 = await Orders.findOne({ - offset: Math.floor(Math.random() * (await Orders.count())), + const relatedOrganization3 = await Organizations.findOne({ + offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Payment0 = await Payments.findOne({ + const Order3 = await Orders.findOne({ order: [['id', 'ASC']], - offset: 0, + offset: 3, }); - if (Payment0?.setOrder) { - await Payment0.setOrder(relatedOrder0); - } - - const relatedOrder1 = await Orders.findOne({ - offset: Math.floor(Math.random() * (await Orders.count())), - }); - const Payment1 = await Payments.findOne({ - order: [['id', 'ASC']], - offset: 1, - }); - if (Payment1?.setOrder) { - await Payment1.setOrder(relatedOrder1); - } - - const relatedOrder2 = await Orders.findOne({ - offset: Math.floor(Math.random() * (await Orders.count())), - }); - const Payment2 = await Payments.findOne({ - order: [['id', 'ASC']], - offset: 2, - }); - if (Payment2?.setOrder) { - await Payment2.setOrder(relatedOrder2); + if (Order3?.setOrganization) { + await Order3.setOrganization(relatedOrganization3); } } -async function associatePaymentWithOrganization() { +// Similar logic for "relation_many" + +async function associateUserWithOrganization() { const relatedOrganization0 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Payment0 = await Payments.findOne({ + const User0 = await Users.findOne({ order: [['id', 'ASC']], offset: 0, }); - if (Payment0?.setOrganization) { - await Payment0.setOrganization(relatedOrganization0); + if (User0?.setOrganization) { + await User0.setOrganization(relatedOrganization0); } const relatedOrganization1 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Payment1 = await Payments.findOne({ + const User1 = await Users.findOne({ order: [['id', 'ASC']], offset: 1, }); - if (Payment1?.setOrganization) { - await Payment1.setOrganization(relatedOrganization1); + if (User1?.setOrganization) { + await User1.setOrganization(relatedOrganization1); } const relatedOrganization2 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Payment2 = await Payments.findOne({ + const User2 = await Users.findOne({ order: [['id', 'ASC']], offset: 2, }); - if (Payment2?.setOrganization) { - await Payment2.setOrganization(relatedOrganization2); - } -} - -async function associateReportWithOrganization() { - const relatedOrganization0 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const Report0 = await Reports.findOne({ - order: [['id', 'ASC']], - offset: 0, - }); - if (Report0?.setOrganization) { - await Report0.setOrganization(relatedOrganization0); + if (User2?.setOrganization) { + await User2.setOrganization(relatedOrganization2); } - const relatedOrganization1 = await Organizations.findOne({ + const relatedOrganization3 = await Organizations.findOne({ offset: Math.floor(Math.random() * (await Organizations.count())), }); - const Report1 = await Reports.findOne({ + const User3 = await Users.findOne({ order: [['id', 'ASC']], - offset: 1, + offset: 3, }); - if (Report1?.setOrganization) { - await Report1.setOrganization(relatedOrganization1); - } - - const relatedOrganization2 = await Organizations.findOne({ - offset: Math.floor(Math.random() * (await Organizations.count())), - }); - const Report2 = await Reports.findOne({ - order: [['id', 'ASC']], - offset: 2, - }); - if (Report2?.setOrganization) { - await Report2.setOrganization(relatedOrganization2); + if (User3?.setOrganization) { + await User3.setOrganization(relatedOrganization3); } } @@ -546,58 +709,58 @@ module.exports = { up: async (queryInterface, Sequelize) => { await Categories.bulkCreate(CategoriesData); - await Customers.bulkCreate(CustomersData); + await Payments.bulkCreate(PaymentsData); await FurnitureTypes.bulkCreate(FurnitureTypesData); - await Orders.bulkCreate(OrdersData); - - await Payments.bulkCreate(PaymentsData); - await Reports.bulkCreate(ReportsData); + await Customers.bulkCreate(CustomersData); + + await Orders.bulkCreate(OrdersData); + await Organizations.bulkCreate(OrganizationsData); await Promise.all([ - // Similar logic for "relation_many" - - await associateUserWithOrganization(), - await associateCategoryWithOrganization(), - await associateCustomerWithOrganization(), + await associatePaymentWithOrder(), + + await associatePaymentWithOrganization(), // Similar logic for "relation_many" await associateFurnitureTypeWithOrganization(), + await associateReportWithOrganization(), + + await associateCustomerWithOrganization(), + await associateOrderWithCustomer(), // Similar logic for "relation_many" await associateOrderWithOrganization(), - await associatePaymentWithOrder(), + // Similar logic for "relation_many" - await associatePaymentWithOrganization(), - - await associateReportWithOrganization(), + await associateUserWithOrganization(), ]); }, down: async (queryInterface, Sequelize) => { await queryInterface.bulkDelete('categories', null, {}); - await queryInterface.bulkDelete('customers', null, {}); + await queryInterface.bulkDelete('payments', null, {}); await queryInterface.bulkDelete('furniture_types', null, {}); - await queryInterface.bulkDelete('orders', null, {}); - - await queryInterface.bulkDelete('payments', null, {}); - await queryInterface.bulkDelete('reports', null, {}); + await queryInterface.bulkDelete('customers', null, {}); + + await queryInterface.bulkDelete('orders', null, {}); + await queryInterface.bulkDelete('organizations', null, {}); }, }; diff --git a/backend/src/index.js b/backend/src/index.js index 5776e00..21a0f38 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -21,24 +21,24 @@ const openaiRoutes = require('./routes/openai'); const contactFormRoutes = require('./routes/contactForm'); -const usersRoutes = require('./routes/users'); - const categoriesRoutes = require('./routes/categories'); -const customersRoutes = require('./routes/customers'); +const paymentsRoutes = require('./routes/payments'); const furniture_typesRoutes = require('./routes/furniture_types'); -const ordersRoutes = require('./routes/orders'); - -const rolesRoutes = require('./routes/roles'); - -const paymentsRoutes = require('./routes/payments'); - const reportsRoutes = require('./routes/reports'); const permissionsRoutes = require('./routes/permissions'); +const customersRoutes = require('./routes/customers'); + +const ordersRoutes = require('./routes/orders'); + +const usersRoutes = require('./routes/users'); + +const rolesRoutes = require('./routes/roles'); + const organizationsRoutes = require('./routes/organizations'); const getBaseUrl = (url) => { @@ -106,12 +106,6 @@ app.use('/api/file', fileRoutes); app.use('/api/pexels', pexelsRoutes); app.enable('trust proxy'); -app.use( - '/api/users', - passport.authenticate('jwt', { session: false }), - usersRoutes, -); - app.use( '/api/categories', passport.authenticate('jwt', { session: false }), @@ -119,9 +113,9 @@ app.use( ); app.use( - '/api/customers', + '/api/payments', passport.authenticate('jwt', { session: false }), - customersRoutes, + paymentsRoutes, ); app.use( @@ -130,24 +124,6 @@ app.use( furniture_typesRoutes, ); -app.use( - '/api/orders', - passport.authenticate('jwt', { session: false }), - ordersRoutes, -); - -app.use( - '/api/roles', - passport.authenticate('jwt', { session: false }), - rolesRoutes, -); - -app.use( - '/api/payments', - passport.authenticate('jwt', { session: false }), - paymentsRoutes, -); - app.use( '/api/reports', passport.authenticate('jwt', { session: false }), @@ -160,6 +136,30 @@ app.use( permissionsRoutes, ); +app.use( + '/api/customers', + passport.authenticate('jwt', { session: false }), + customersRoutes, +); + +app.use( + '/api/orders', + passport.authenticate('jwt', { session: false }), + ordersRoutes, +); + +app.use( + '/api/users', + passport.authenticate('jwt', { session: false }), + usersRoutes, +); + +app.use( + '/api/roles', + passport.authenticate('jwt', { session: false }), + rolesRoutes, +); + app.use( '/api/organizations', passport.authenticate('jwt', { session: false }), diff --git a/backend/src/services/search.js b/backend/src/services/search.js index 854433c..595b42e 100644 --- a/backend/src/services/search.js +++ b/backend/src/services/search.js @@ -41,22 +41,22 @@ module.exports = class SearchService { throw new ValidationError('iam.errors.searchQueryRequired'); } const tableColumns = { - users: ['firstName', 'lastName', 'phoneNumber', 'email'], - categories: ['name'], - customers: ['first_name', 'last_name', 'email'], - furniture_types: ['name'], reports: ['title'], + customers: ['first_name', 'last_name', 'email'], + + users: ['firstName', 'lastName', 'phoneNumber', 'email'], + organizations: ['name'], }; const columnsInt = { - furniture_types: ['price', 'stock_level'], - payments: ['amount'], + + furniture_types: ['price', 'stock_level'], }; let allFoundRecords = []; diff --git a/frontend/src/components/WebPageComponents/Footer.tsx b/frontend/src/components/WebPageComponents/Footer.tsx index b9818da..dde7f9e 100644 --- a/frontend/src/components/WebPageComponents/Footer.tsx +++ b/frontend/src/components/WebPageComponents/Footer.tsx @@ -19,7 +19,7 @@ export default function WebSiteFooter({ projectName }: WebSiteFooterProps) { const style = FooterStyle.WITH_PROJECT_NAME; - const design = FooterDesigns.DESIGN_DIVERSITY; + const design = FooterDesigns.DEFAULT_DESIGN; return (
state.style.websiteHeder); const borders = useAppSelector((state) => state.style.borders); - const style = HeaderStyle.PAGES_LEFT; + const style = HeaderStyle.PAGES_RIGHT; - const design = HeaderDesigns.DESIGN_DIVERSITY; + const design = HeaderDesigns.DEFAULT_DESIGN; return (
item.first_name); - }, - customersOneListFormatter(val) { - if (!val) return ''; - return val.first_name; - }, - customersManyListFormatterEdit(val) { - if (!val || !val.length) return []; - return val.map((item) => { - return { id: item.id, label: item.first_name }; - }); - }, - customersOneListFormatterEdit(val) { - if (!val) return ''; - return { label: val.first_name, id: val.id }; - }, - furniture_typesManyListFormatter(val) { if (!val || !val.length) return []; return val.map((item) => item.name); @@ -96,6 +77,44 @@ export default { return { label: val.name, id: val.id }; }, + permissionsManyListFormatter(val) { + if (!val || !val.length) return []; + return val.map((item) => item.name); + }, + permissionsOneListFormatter(val) { + if (!val) return ''; + return val.name; + }, + permissionsManyListFormatterEdit(val) { + if (!val || !val.length) return []; + return val.map((item) => { + return { id: item.id, label: item.name }; + }); + }, + permissionsOneListFormatterEdit(val) { + if (!val) return ''; + return { label: val.name, id: val.id }; + }, + + customersManyListFormatter(val) { + if (!val || !val.length) return []; + return val.map((item) => item.first_name); + }, + customersOneListFormatter(val) { + if (!val) return ''; + return val.first_name; + }, + customersManyListFormatterEdit(val) { + if (!val || !val.length) return []; + return val.map((item) => { + return { id: item.id, label: item.first_name }; + }); + }, + customersOneListFormatterEdit(val) { + if (!val) return ''; + return { label: val.first_name, id: val.id }; + }, + ordersManyListFormatter(val) { if (!val || !val.length) return []; return val.map((item) => item.order_date); @@ -134,25 +153,6 @@ export default { return { label: val.name, id: val.id }; }, - permissionsManyListFormatter(val) { - if (!val || !val.length) return []; - return val.map((item) => item.name); - }, - permissionsOneListFormatter(val) { - if (!val) return ''; - return val.name; - }, - permissionsManyListFormatterEdit(val) { - if (!val || !val.length) return []; - return val.map((item) => { - return { id: item.id, label: item.name }; - }); - }, - permissionsOneListFormatterEdit(val) { - if (!val) return ''; - return { label: val.name, id: val.id }; - }, - organizationsManyListFormatter(val) { if (!val || !val.length) return []; return val.map((item) => item.name); diff --git a/frontend/src/menuAside.ts b/frontend/src/menuAside.ts index a7cf8b4..5a373ae 100644 --- a/frontend/src/menuAside.ts +++ b/frontend/src/menuAside.ts @@ -8,14 +8,6 @@ const menuAside: MenuAsideItem[] = [ label: 'Dashboard', }, - { - href: '/users/users-list', - label: 'Users', - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - icon: icon.mdiAccountGroup ?? icon.mdiTable, - permissions: 'READ_USERS', - }, { href: '/categories/categories-list', label: 'Categories', @@ -28,15 +20,15 @@ const menuAside: MenuAsideItem[] = [ permissions: 'READ_CATEGORIES', }, { - href: '/customers/customers-list', - label: 'Customers', + href: '/payments/payments-list', + label: 'Payments', // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore icon: - 'mdiAccount' in icon - ? icon['mdiAccount' as keyof typeof icon] + 'mdiCreditCardOutline' in icon + ? icon['mdiCreditCardOutline' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable, - permissions: 'READ_CUSTOMERS', + permissions: 'READ_PAYMENTS', }, { href: '/furniture_types/furniture_types-list', @@ -49,36 +41,6 @@ const menuAside: MenuAsideItem[] = [ : icon.mdiTable ?? icon.mdiTable, permissions: 'READ_FURNITURE_TYPES', }, - { - href: '/orders/orders-list', - label: 'Orders', - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - icon: - 'mdiPackageVariantClosed' in icon - ? icon['mdiPackageVariantClosed' as keyof typeof icon] - : icon.mdiTable ?? icon.mdiTable, - permissions: 'READ_ORDERS', - }, - { - href: '/roles/roles-list', - label: 'Roles', - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - icon: icon.mdiShieldAccountVariantOutline ?? icon.mdiTable, - permissions: 'READ_ROLES', - }, - { - href: '/payments/payments-list', - label: 'Payments', - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - icon: - 'mdiCreditCardOutline' in icon - ? icon['mdiCreditCardOutline' as keyof typeof icon] - : icon.mdiTable ?? icon.mdiTable, - permissions: 'READ_PAYMENTS', - }, { href: '/reports/reports-list', label: 'Reports', @@ -98,6 +60,44 @@ const menuAside: MenuAsideItem[] = [ icon: icon.mdiShieldAccountOutline ?? icon.mdiTable, permissions: 'READ_PERMISSIONS', }, + { + href: '/customers/customers-list', + label: 'Customers', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + icon: + 'mdiAccount' in icon + ? icon['mdiAccount' as keyof typeof icon] + : icon.mdiTable ?? icon.mdiTable, + permissions: 'READ_CUSTOMERS', + }, + { + href: '/orders/orders-list', + label: 'Orders', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + icon: + 'mdiPackageVariantClosed' in icon + ? icon['mdiPackageVariantClosed' as keyof typeof icon] + : icon.mdiTable ?? icon.mdiTable, + permissions: 'READ_ORDERS', + }, + { + href: '/users/users-list', + label: 'Users', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + icon: icon.mdiAccountGroup ?? icon.mdiTable, + permissions: 'READ_USERS', + }, + { + href: '/roles/roles-list', + label: 'Roles', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + icon: icon.mdiShieldAccountVariantOutline ?? icon.mdiTable, + permissions: 'READ_ROLES', + }, { href: '/organizations/organizations-list', label: 'Organizations', diff --git a/frontend/src/pages/dashboard.tsx b/frontend/src/pages/dashboard.tsx index d6d5f07..4178ccf 100644 --- a/frontend/src/pages/dashboard.tsx +++ b/frontend/src/pages/dashboard.tsx @@ -28,15 +28,15 @@ const Dashboard = () => { defaultValue: 'Loading...', }); - const [users, setUsers] = React.useState(loadingMessage); const [categories, setCategories] = React.useState(loadingMessage); - const [customers, setCustomers] = React.useState(loadingMessage); - const [furniture_types, setFurniture_types] = React.useState(loadingMessage); - const [orders, setOrders] = React.useState(loadingMessage); - const [roles, setRoles] = React.useState(loadingMessage); const [payments, setPayments] = React.useState(loadingMessage); + const [furniture_types, setFurniture_types] = React.useState(loadingMessage); const [reports, setReports] = React.useState(loadingMessage); const [permissions, setPermissions] = React.useState(loadingMessage); + const [customers, setCustomers] = React.useState(loadingMessage); + const [orders, setOrders] = React.useState(loadingMessage); + const [users, setUsers] = React.useState(loadingMessage); + const [roles, setRoles] = React.useState(loadingMessage); const [organizations, setOrganizations] = React.useState(loadingMessage); const [widgetsRole, setWidgetsRole] = React.useState({ @@ -51,27 +51,27 @@ const Dashboard = () => { async function loadData() { const entities = [ - 'users', 'categories', - 'customers', - 'furniture_types', - 'orders', - 'roles', 'payments', + 'furniture_types', 'reports', 'permissions', + 'customers', + 'orders', + 'users', + 'roles', 'organizations', ]; const fns = [ - setUsers, setCategories, - setCustomers, - setFurniture_types, - setOrders, - setRoles, setPayments, + setFurniture_types, setReports, setPermissions, + setCustomers, + setOrders, + setUsers, + setRoles, setOrganizations, ]; @@ -185,38 +185,6 @@ const Dashboard = () => { id='dashboard' className='grid grid-cols-1 gap-6 lg:grid-cols-3 mb-6' > - {hasPermission(currentUser, 'READ_USERS') && ( - -
-
-
-
- Users -
-
- {users} -
-
-
- -
-
-
- - )} - {hasPermission(currentUser, 'READ_CATEGORIES') && (
{ )} - {hasPermission(currentUser, 'READ_CUSTOMERS') && ( - + {hasPermission(currentUser, 'READ_PAYMENTS') && ( +
{
- Customers + Payments
- {customers} + {payments}
@@ -278,8 +246,8 @@ const Dashboard = () => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore path={ - 'mdiAccount' in icon - ? icon['mdiAccount' as keyof typeof icon] + 'mdiCreditCardOutline' in icon + ? icon['mdiCreditCardOutline' as keyof typeof icon] : icon.mdiTable || icon.mdiTable } /> @@ -325,112 +293,6 @@ const Dashboard = () => { )} - {hasPermission(currentUser, 'READ_ORDERS') && ( - -
-
-
-
- Orders -
-
- {orders} -
-
-
- -
-
-
- - )} - - {hasPermission(currentUser, 'READ_ROLES') && ( - -
-
-
-
- Roles -
-
- {roles} -
-
-
- -
-
-
- - )} - - {hasPermission(currentUser, 'READ_PAYMENTS') && ( - -
-
-
-
- Payments -
-
- {payments} -
-
-
- -
-
-
- - )} - {hasPermission(currentUser, 'READ_REPORTS') && (
{ )} + {hasPermission(currentUser, 'READ_CUSTOMERS') && ( + +
+
+
+
+ Customers +
+
+ {customers} +
+
+
+ +
+
+
+ + )} + + {hasPermission(currentUser, 'READ_ORDERS') && ( + +
+
+
+
+ Orders +
+
+ {orders} +
+
+
+ +
+
+
+ + )} + + {hasPermission(currentUser, 'READ_USERS') && ( + +
+
+
+
+ Users +
+
+ {users} +
+
+
+ +
+
+
+ + )} + + {hasPermission(currentUser, 'READ_ROLES') && ( + +
+
+
+
+ Roles +
+
+ {roles} +
+
+
+ +
+
+
+ + )} + {hasPermission(currentUser, 'READ_ORGANIZATIONS') && (
{

{organizations?.name}

- <> -

Users Organizations

- -
- - - - - - - - - - - - - - - - {organizations.users_organizations && - Array.isArray(organizations.users_organizations) && - organizations.users_organizations.map((item: any) => ( - - router.push(`/users/users-view/?id=${item.id}`) - } - > - - - - - - - - - - - ))} - -
First NameLast NamePhone NumberE-MailDisabled
{item.firstName}{item.lastName}{item.phoneNumber}{item.email} - {dataFormatter.booleanFormatter(item.disabled)} -
-
- {!organizations?.users_organizations?.length && ( -
No data
- )} -
- - <>

Categories organizations

{ <> -

Customers organizations

+

Payments organizations

{ - + - + - + - {organizations.customers_organizations && - Array.isArray(organizations.customers_organizations) && - organizations.customers_organizations.map((item: any) => ( + {organizations.payments_organizations && + Array.isArray(organizations.payments_organizations) && + organizations.payments_organizations.map((item: any) => ( router.push( - `/customers/customers-view/?id=${item.id}`, + `/payments/payments-view/?id=${item.id}`, ) } > - + - + - + ))}
FirstNameAmountLastNameMethodEmailVerified
{item.first_name}{item.amount}{item.last_name}{item.method}{item.email} + {dataFormatter.booleanFormatter(item.verified)} +
- {!organizations?.customers_organizations?.length && ( + {!organizations?.payments_organizations?.length && (
No data
)} @@ -251,6 +200,92 @@ const OrganizationsView = () => { + <> +

Reports organizations

+ +
+ + + + + + + + + + {organizations.reports_organizations && + Array.isArray(organizations.reports_organizations) && + organizations.reports_organizations.map((item: any) => ( + + router.push(`/reports/reports-view/?id=${item.id}`) + } + > + + + + + ))} + +
TitleGeneratedAt
{item.title} + {dataFormatter.dateTimeFormatter(item.generated_at)} +
+
+ {!organizations?.reports_organizations?.length && ( +
No data
+ )} +
+ + + <> +

Customers organizations

+ +
+ + + + + + + + + + + + {organizations.customers_organizations && + Array.isArray(organizations.customers_organizations) && + organizations.customers_organizations.map((item: any) => ( + + router.push( + `/customers/customers-view/?id=${item.id}`, + ) + } + > + + + + + + + ))} + +
FirstNameLastNameEmail
{item.first_name}{item.last_name}{item.email}
+
+ {!organizations?.customers_organizations?.length && ( +
No data
+ )} +
+ + <>

Orders organizations

{ <> -

Payments organizations

+

Users Organizations

{ - + - + - + + + + + - {organizations.payments_organizations && - Array.isArray(organizations.payments_organizations) && - organizations.payments_organizations.map((item: any) => ( + {organizations.users_organizations && + Array.isArray(organizations.users_organizations) && + organizations.users_organizations.map((item: any) => ( - router.push( - `/payments/payments-view/?id=${item.id}`, - ) + router.push(`/users/users-view/?id=${item.id}`) } > - + - + - + + + + ))}
AmountFirst NameMethodLast NameVerifiedPhone NumberE-MailDisabled
{item.amount}{item.firstName}{item.method}{item.lastName} - {dataFormatter.booleanFormatter(item.verified)} + {item.phoneNumber}{item.email} + {dataFormatter.booleanFormatter(item.disabled)}
- {!organizations?.payments_organizations?.length && ( -
No data
- )} - - - - <> -

Reports organizations

- -
- - - - - - - - - - {organizations.reports_organizations && - Array.isArray(organizations.reports_organizations) && - organizations.reports_organizations.map((item: any) => ( - - router.push(`/reports/reports-view/?id=${item.id}`) - } - > - - - - - ))} - -
TitleGeneratedAt
{item.title} - {dataFormatter.dateTimeFormatter(item.generated_at)} -
-
- {!organizations?.reports_organizations?.length && ( + {!organizations?.users_organizations?.length && (
No data
)}
diff --git a/frontend/src/stores/store.ts b/frontend/src/stores/store.ts index b5bc1ec..abc8145 100644 --- a/frontend/src/stores/store.ts +++ b/frontend/src/stores/store.ts @@ -4,15 +4,15 @@ import mainReducer from './mainSlice'; import authSlice from './authSlice'; import openAiSlice from './openAiSlice'; -import usersSlice from './users/usersSlice'; import categoriesSlice from './categories/categoriesSlice'; -import customersSlice from './customers/customersSlice'; -import furniture_typesSlice from './furniture_types/furniture_typesSlice'; -import ordersSlice from './orders/ordersSlice'; -import rolesSlice from './roles/rolesSlice'; import paymentsSlice from './payments/paymentsSlice'; +import furniture_typesSlice from './furniture_types/furniture_typesSlice'; import reportsSlice from './reports/reportsSlice'; import permissionsSlice from './permissions/permissionsSlice'; +import customersSlice from './customers/customersSlice'; +import ordersSlice from './orders/ordersSlice'; +import usersSlice from './users/usersSlice'; +import rolesSlice from './roles/rolesSlice'; import organizationsSlice from './organizations/organizationsSlice'; export const store = configureStore({ @@ -22,15 +22,15 @@ export const store = configureStore({ auth: authSlice, openAi: openAiSlice, - users: usersSlice, categories: categoriesSlice, - customers: customersSlice, - furniture_types: furniture_typesSlice, - orders: ordersSlice, - roles: rolesSlice, payments: paymentsSlice, + furniture_types: furniture_typesSlice, reports: reportsSlice, permissions: permissionsSlice, + customers: customersSlice, + orders: ordersSlice, + users: usersSlice, + roles: rolesSlice, organizations: organizationsSlice, }, });