From 6c3758e6a95674abab7df0363f218fbe6bff0f52 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 20 Jul 2025 07:30:27 +0000 Subject: [PATCH] BugPulse-V1 --- .gitignore | 5 + app-shell/src/_schema.json | 7 +- backend/src/db/api/bugs.js | 12 +- backend/src/db/api/companies.js | 12 +- backend/src/db/api/modules.js | 12 +- backend/src/db/api/projects.js | 13 +- backend/src/db/api/projects.js.temp | 337 ++++++++++++++++++ backend/src/db/api/status_history.js | 12 +- backend/src/db/api/sub_modules.js | 13 +- backend/src/db/api/tenantScope.js | 9 + backend/src/db/api/users.js | 12 +- .../Projects/configureProjectsCols.tsx | 52 +-- frontend/src/pages/_app.tsx | 6 +- frontend/src/pages/_app.tsx.temp | 192 ++++++++++ 14 files changed, 618 insertions(+), 76 deletions(-) create mode 100644 backend/src/db/api/projects.js.temp create mode 100644 backend/src/db/api/tenantScope.js create mode 100644 frontend/src/pages/_app.tsx.temp diff --git a/.gitignore b/.gitignore index e427ff3..d0eb167 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ node_modules/ */node_modules/ */build/ + +**/node_modules/ +**/build/ +.DS_Store +.env \ No newline at end of file diff --git a/app-shell/src/_schema.json b/app-shell/src/_schema.json index 0b50dae..b8804f3 100644 --- a/app-shell/src/_schema.json +++ b/app-shell/src/_schema.json @@ -1,5 +1,4 @@ - - { - "Initial version": "{\"iv\":\"+LejjDClJbHUkpwh\",\"encryptedData\":\"5GpkNGY/8wzcGN1q6nt/48cNe3Th2w/T/SCr+Tl+EnodP64l8LuvPLpDdxd1765PUpAyUJX9ux/6vnEyB+eVnbzPTvgLkMKvWGfNgvzXJtzOryrP6rnZ3pzNXZb9+cqaWgZdVMwddyp/kvjGJTtiTJW2ypcsitQDRKZRqVDtZ/a2Hc+uaDKP/V56BESjuVjXr+UCcBBpDyn/WxsfKtizRq7dC4edt1QnlTpb+W2dBKcXyB3Z15tM0Dvc1lKjoDGsM7BK4in01omOghDgi/kvAQ0Dtv2JoNqTMI/egKaGbc1ZAnFEp6R1qeAJIdLc1nA1UiSPzzHPvqJRUQWPNmxNT3xTc6I+i9d34XkMs6szJ9qB977aK4OsAWdThGrZpGVvOegMFtn99LwIwIcfXneikmmxEDH4ZhxtsVEYNNw0GGo+7OnkyKexqqzSZ99gCJ5GWxFOPImuIhOCf+fRnZPbjQwfmtcgFib75+AWPPCKpGahge7H9+bUjj9irhGjmSmbMvkaxkVycUsjgzv2yt1VlxaUJbmCko0lec6sR6mYAGAqiWAdrV/evFQXoPpoL3zmL4h7xszYTES/llQcLraowPfoeXzg5UpFXfeZvKCVBv9Ok8Dw498Z2adpuGMVsiLCEmnuNws9eucMhOuvpU3o0l+R+hzRO6IuhphIN/u+80irqWjNYBhW6WCDk3gB6cYbszYJWSQ2EoWUX6rftjJqLSj3TQSNuRg54PLsuTZvKlZth6fFPjsQyI3CMEWI6lLiYe7AIQGKenXrjcs8DvKONCWfS6qv1xWOyuOwUgnkoVmHDzMEenErAoaPRe/+Ly6qDgpZrQKSnC1Dm6IeWof7CSez34ED2kMgRsMXMkdnN8/QqpCLCZCCa05A3Pe4ZC66hz7THvypkKHhpGyoJjG/JQKdx7GFznup/EJvv/ZIbDXV4iZo6yxYHnyoBw9TI7zICxJZ26sWAeXrYw4u6AggFd3ZWTHo6Sv5Jg1PHMWD+tlfChkq12qGFh/lfcTFEGBUhQaJv2KE/WUbsM8XQWgtat20D9BRASXfxVKUvrp9FTlF9vtwPpZuGMcwWZIrBTGsxRb5RuDwXSbyr2EYkAf3Y89+/3UcECndcRmmtbx3hy2ZlGsQDjc/Zop0kXXI7N7me/F+UB+Z/EP8aVxAUD0QKBPAeL5ZiAf2UFyCrIWtavCX7ydFRKUX1/4i6Wnox6iBjkxJucOm8Fqg/+qk/+rB/+wwhFY8YWOQ4DBebbh/5zSvuEVLCG/yKbWAhF2GA8WHT1TFQyClWU1Vx9M2iU7oNfLG9hyV2jE54u05Vxr8iwcV47pnzo+U++D3wAfidCtk8G/yK/yFggXge5/65JdbPO7JuW0kxT6sTLNW1YtM7J4h6q7yzFgMFEtKHLmqi0Sh16kn+7+E47rf0mRruu30ZQ8U9Af15Mx6nZ2CEFg0ABjtOU3Gb8+wNrD5HJGM/7eLXqhgB1GNZFJHtHrbHNeM0g8eO+5aOc2S8+F1g70lL/L+MyQdi/7t+esGQjVAG4ivdDV9xoJ8449jaQ+wi57n1cTjCDpnm/5GlmM7kryE0sofr2XglMlek4YWxf7yAjD91tLufBhrfupmXhIN39pXjPj9c0xzEX+bSBt/MxHUny88oFfFDF6qnftQBXoNPZaJ5pbkpgKiWjlehDT7injtrGIJwV0aVHsnPE0AbRP8Fh5NLmS1v8NddhmX4E6gQjqPoiDxXMg3hcegFJtFoUVYe5mPt+M5SHDNHCgmU/7Ngt/zB8Ea0q/BICzfJnSzVkd+PBQEHi5mIcZHCDE04YwB7nmApL5rmbhhMR+txLTc0XW5iXdujJ8779AOA6hOOrA7OGwC4OHzuLZQGDddSbJKxCfQsvXYp7ufevCW8BfbcSeD69Eeq++WsN9lDet6FIcQVAvYLC1lbWo/Elbm3OZepyJm7sfK/GwWH7rSSQq/Iz6c0CtCZb3gSvtbrsD+JFy6C827GRUSiCBW5EFp1DObeOVBtRQq1Ga9svkUxs6Y1v2GeBKU0nqnBExTUh5tGaMVxmMLoTb+V4jnhZhZmW83lJ41FbQciWg4N2QmuzOjuvgeL4ViHFJTu9cq97sZdH+S5P60elzddFdEZataljZKs351qQlYaGSL2Wpkqixooq/Cu/K6OChvT2KTTPI6XFt42drYpCNoo4HuSqTsPNvKkVhgNxFgBrk7pLeZkqrFkfz5htrUkb/fWkHpL0a29P2CAb6VZiIWOxsvQJBGetXjHPBa2GarB/AbOEy6eKXFFTqKD43MC0izn3r5n8ROTQdlFToJEX5xCKVjyjQxGexVRVb7cnMG0/zlrM/TjFz7NP+HMKhyXIvVhxtf8GHEAkexPqxSMXZIci0YpOS/Thr5xsba9EnYw1JzXprxnEC7icxskU8aYAiEz4U21AtwfUCQOrA2N70lX7h28oGqvlx5sUJS5uUJMxNla/uP0FXt5w4nb2rwIgq0hiHZewnJV5XqbgrtGOok2piw1/rvn74LEaPor2qSIiFVqOK/oHjWIsMzhgLRDqV0k2JMkOVCr03ki+i8UBJHJFRAOI9L1WhaIahyLXiRV9dv8cS9ouzwct+G4ANsdgX/8oUP58YSkEMyUZgc7mHrV4LhoFOBwxmoFXR/DGKWRcJS6utpprdhb1T4cbSy5ojKNG+y7f729EW/ErXFwaSJ4K2t8Uz+gz4xJ5yqJlEnK5tfUsMJX6IwsbQ6tPAz59XijWwR8/hGQB/TRfxBCx7K1VuIcNjRcP4zkLWdnCoeE41zdXhtSWoF3B8urPqP2C6PTPm8lwdxxmts0V7wMGO1bhuPe3UaL5z49ESeEjbPKOMO0062fxpLHKX9P5HKquy9r0rSHYLEA4c3NAQ1C8CKcoPj9nFQa1lSGvwlHSDIWbfEII31y8Whkc+cnza5GEisp0CRwn4S4NcHe1vWCzpHGyIgHDCyczW4i/tRX1AoyGuUY1arOmi9oQTqcQTW3/RGphpUZDXhXz2wHIwI3znGT+0CMlRuASKIV73GgihZPfdcIXfZWOWLcbFgdFCJIb6Dd9k/VLuk96b4BvVTxHy7LI6jMJ/I8ENHK+gEo6qQnch/3xbjiE1WVKpzEOmrAhWM20BduGcldrJhVcYVaKy3CcFvRmUuLB8MBpHrtWTuSOvPy48YrW2iWbijHECFg/qAO+k2TFTh77Qg+PqVTK2f1sFGp7+i0Lb3zUIelllLqcHxCIf3P8W6/BWWuKmqoZ38lqRbVHODaz0JR/jA4LRBfpU5tf/h3LSo4LY6MtQa/qCAURaybD1IZXLnkS3GxgB5SmMEFXiHID5uc3I5rtrQMtLjEKAopyAhbNcKNLRTEIpD37OaGP2nj50dXeD4oycWKawqYpFXULB0DJi/qCbBaj0yuvylpBWrtkUqRdHUYvVMRgsNeF7y/REjgGP+TjGIvhoR2cJuqvVRTkPxtDoZ0mkhb74wc2xCv+MDSH0uUccKS7ZlR/FiL29jW6nqL+QzkIZBjn8Ft5EEFwlaw7wFz9+40gS5TyX5jOPfa3FLhLTISeJcrKbz+hqdpI4uV+BLEi1MMI24dvfxq7X61faK9/i7MLON9TjHL4zpWzfCgI18TJf4Vg3S3y4udsnOiP2LF4qxnbUIUdquk2NIyAN1uZuCLVANyG6HU+PWS7S0GsBjOGOuOD9POIte+VZta8vaNwfCJB8jDub/GClauRWSx/OusuMhkMuOfGvT5K7Ny2054lWIY0qghu7K6ZWi+XOS7CShZDcHyh8TBDjdL6IrKC2ylgHWkaFjfgmUK8mkaih0nFf7IKNdR3y27qyucwwc/+8Wc6A5BuoZ8WwzL6XmhRPFBqPU1gfKR/XfU2dTUlVeNYxkbgCo9i7m6LJj6U+HkGB4dfEyb42asdrGkWkgM8cha8T6tH4RibCEf6tdpryCORXlMSguvtsRomhEevJwO470J1DmcZ3GBDLgfXxfKhRxH1m5Ix8wS5vW32RuZksqlWViutUfzHXddChwhigqkE6qqDzCpSzI7nnUsmsqBq9kfGAVHOsRMCtqHxHGjt1nuBbahGNsfqCXHg2fbVlce0K3LSNGlE/dBYTLEoJwpN76s+KqI3zNQBrLli5n43rjGWNmFXykvgAvDxskivZ6KxuSlkgF7ym3ysqtOJRISPU2RAml46u1F4tMsBvDoM0W614vG15cdTDdOp8SARFk6r/v/OLO6qTT4JfjmV6JDa65VNtS2aSyKNAMMTYO7OYYNbVDZXe93VE8VdmhaqifBNZymZhFqslYiYZFDw1sZXNFH0fBkyB2qlkDewpdI3/JpGoMpkQ5QcHLYZf6w/UuWhDToaPMI6GZzdaLEUJI+g7a3tZ4u1Ec+6PmhxJ7qN7ZeMQjd7eHCIzJsY3VqpIhsXiec9YHNwLuGqZsMV3C7XI9B7EDbEFX3OEigF66jdQqcO7AXsXbsLxMZqruy1Eo8OFRilnWMePneinARQwhlVabnK1fXuq8OLGxWuFSmD7jNw9r+ViVAKvh9in0Q2HK7bxKQfS+hblDHnI4tNLThKqNC/4KMfG3vdc21w9qpAq9TZ2/vi6l8TTzEl/5K9MduXF2DL05dwECrQZUCMVFBoeJvTsuw56q/bJlToGUtNZtntu3BVAoGOZxMeVinIq7UEBAiSfXmui6c34p7kGQqmTwOB45tXrJEs4vrwPC3Z8UHNRxqtRhCoZuD4gLK6zJUn8Z+7UxpG0TVVY1Gc+UaaNifLxahZFEJ9bMP9qcEDRStg2d6bXxbKGyXXc9LNXVS2nyqjuR04keE9y4mjKPMn9L/YYizHTF5TZzS5gT/j9LcfgIwxYf8QmzqF3jLsYqlzxqpRdtukTsHJ3cwO4UBvJ5rZrgUnKaFxPEiMI5MuLPD6gEz7bL9O6rZnjuxhkGp7492MgNM8FJyd1gbI9F3aRNBgXxHdx4phKtB08dkLiDI5FXvIKx0Bi7aIsLQ5deWmjXaNuEcSfLIo82RoWRK53XKLLRqM+qfsYemHwyztxP628fsq4JiZlkrUuXctYAAIn5oHRkc/b/6HyXpWdOcJ/T37xxARFnJpM7QnTVqNTN943hojMt9atynnQsOA0gEHWnLODYqmyC1mYuxGTzCveVkle98Hrc2lIiLw1aG+xiwCJJ+cMNQhYkDp6Uo+Ac5ZxVoPa0QG4V1xXb9gBlFwCM12x9AgfyDYmzUV8PsDoz9dUR4dIKnrVra0hWL/PUbKZ5sr/JLdmI4s/j/DIhNVK4++5/FYMMPo1ysAhob+ll8YZc/qhbviZYyNOj01jaHK0cHTt8mQI9T9BqxJI8dntk151b1auuOQckhuI3nMl9N7vrROBInDJeUopl7G0KKdRsmXU6c2WVIQyUDaXIGeKFRbh5vr8RY83Ny5zgTFxCIjq8Nl2snQk6lC/8CUNyTVK/GkWjSPVX/x+V+58FiEbIiyRfpAxgt27NhpczK/WSR1yQ8dFz79WDvYKLOwMnLoWW+0NE7LovEOzoR6CpP39qcAzytKiDJQAbv2sObzOYWkpAxGv13KjKhXk3b/ksLIhBEzBGBtJN5excrheJNfWBsodbzyQdFGbKquTkxGiE8lzWnYPyMZC+09+IMCgGPPmEbSYhu71VfSuTyrikO9zYEsdz326pCej5P3rNeMx7Ckv1GVCK4jMV8fQIoAAL/fRNYGkgxdoTNGh6g9QrEt8gPRDmEIP/bI3qENJKWfgoEIZ6D5aSNkQWBEPjY+EPfVF38BNE+Kvu313irbCEoFLDrS/C2DGbC4JkgVGKirYOikqCaO0QaSHtzhYLvZlRIdSzo450qJd65ZxYydK7db/28MhtERCUmR3mUFFpJ3dkVoMJFxB+N1YH16i3fxXquZSMG5rkJ21nc0Rpb7jQLv/Uv9oG3AKmvNJhfJpmjmUgXCqRUg9KiBLhLFH1LNe3F0uGM5AA371q+4pgpVSSKHVvX9KBsNUNkrVrpNDWBazATrK9eNFDNdFKf873oZFw4s0578klls81ydf3B6LxfxfD4DX0Sl8Lgq6JvB7y5wFAWVOzR4qZnoCYZp6Cb2tHITYOL0/qnR5eutMc+HMsUUCyE/2lhbsdI7oN9tdH/d6MSPk46nkTJIlduKdjiWWF3F4YF64Rn2s71L8veOGj2SilxZbekajf0LOn6M49ckSz+JfqQALy2NO7Ibqc9nYtfLolkMjImKClaLOWEQESEgM2NF/oZ5TsJtRDBEidRtSiHjRtTfBj7oy07Kr7yVitME+fw8vrnKBnnhIenREVX6Ai81iQfD6u02mKxJOn9fiNbp+7SOMngjtk7HliiokV9F6yHdm4BN3zbsmdc1ocE4IYG0YBDc7PY8GwWNX0bBCog8ZUM6WoVjYtHcIdduj+BjmHTj3FQCCShnAztkkwE3fxdA8sJVkqc9WcwTqcjUZSvZNUQwUyeKKFVUDLaRqrRz5A81qTuQ1856B42ZTt3gfc8MHgaA7rOgRBzDfdVhlhcezK3F4kbBUEpczKdPTaav3sqKbNJAd4DzN6ffEtATKP/zH/X9mXdj9WqbOf5h6ok5VIOQViJWVnQNTLHkevjYFyrEOzJUHPUni4j+4du86F3oXlcwvM69JCdF3nVeG/BmroJI+jfIP5Ui2oGeeUtr9+g5BiuuwBylq6aAxmz1sOOIXj+qaLAMLMuIJqlUsfaGigvgSWSWL53RA9q1YrQC8OjBu0aDIgUddfoBb7WSbp/IzGfWpfuwNkvHPlx61Ot5If1YgvVT1ji9DJK+4/xgAjC9v7UpbVP4ZrrhGrJC6XMCAiEi8rMqnn1iIlxzUwPWplUlAGf8t7+XNftGCkoS6x8QZMepwn3tpc7/Q1n59+hIYULyFZw8eQ1NXfOgeGgBqgwS848EFf0nlbDGRq58U3kjHLZgzN+ufkPtXQAL1xCGgkzLzK311TGWPiMhUi8dhPQDH3MF5Ev69pZI+wXstIff8TaSigxjYsJvLEBdz0BUk4tDv8PCGXp2Y0QrmIxw5NuXON0vRWiOxa4gwlwpRMfUxze8u6kMsmkAG5NXyhn4nNrLtF5tFg0Est8uPnNUP3NrTN9Gy8V27Cq4vpmCG/3AkwOyI1JWwAAsHV/hacRpmx53O/AKh+RLgSDwk0d5urJeijUJxLYN7eXlJyRFPDY2pS79iuVQ3vDMXxVhKGJjaJTGOMOpXL9OmEp1h6JOnNgzxdg43Tp2DC3220w+75RGPRGNzQ/FPeGsj6DNK/oT87XssL/xu/qaekfKahhgMZpfspAtwq34ZWb9+DyKG7hUS3TmFDiJzRcSCYlnY1+w+7QBo1eAKpjhVxEgXbTjkPpLFmrjzkkg6h/jPhanGnDBOLIcFTqvkck30pgxti32yqPkQfilMV3T/o54pFJ3uLg1yiM5f2pFUV6IqqhNkEiLFackZMVrTpt0/xLKiZIELMYDVm42dbaMEW/vSEt/j5F3mVLNk5ntNrTP0LGs0cfM5CA6IdbEGYMl9H4bBxEH7ojym5sR8FCL8YgjJYpX1cSA1uZeDCcEsBeNyqfUVJSsixAPECm2VnHsTFmWn21fJERGotgXh8INU2gnpH1sAH4pqnX7nIa8XXE+ERwKat8Yjr5h9LBuEKkzRK+omBdpHl0NFBsi4Pwo+ERumQJQqOqirzPtT/5CL4wWbXydl0wMQFAMyjHTzFJ3x0LaGyB5a4ETC/eesvyDAS5g3UYkelSLe00NngyzB70oEI5nSIkdpNxJ5ob+7NKA6Cff4p/yCF1VojkmxL8EeKPXUz4wcvLc3q+0vJIFd78MwPyl14haN1yGIDe5LUMa/P0aCrFVgANPbGIR346KVz0V4ao7UCTACvuFXp7co+cwCxUY05xescMRux8MIhW1S1PWG6aJF2byZo1J6Zttv7K6cjbSJWVR2Znnv83nF7h24tc+bTVFV/cXcHyhJ3VYiy/XwvrbKuBFaPRMcHYdc5FDgq3VHMLk8cMG8EZVrLg8YprOMtnRxpol3Xa9a8lj45w/uXJJHoKJqnWbF5hsn5/VACs3eiICo+uQDGVVXv9bCeh0kDdwt2rpIuazPwdEFn+mWpUb+A6+ADyEbHH9BpjPp1/C3dwl83baARR5kGjJspPDXpPgW8ZLIw1paDSl8vvWQxPVG3xyBywkHG/w53yZEqTEDpbSpK9e+qAWIB++m2HtfAJD3UYk27xJB8F5mOHj4Uw2MCFnrP316eW7U/wehYAsyv/cQHa2hp8pd8j6Gf0xMFWcIYB9r4WDcPfmaPT1WFJX75C8YEpDcl4/UChmU8h0NcRx497sNv2UWYcDk8dew0YS1IxG5fVzKW53YFC7I68Nrgn/jX114wezJBWDnJiikjorMY7AryiirRlXa6KBQ7Rf0VMGhEg3lqqBu30xRKZk8+yx+J1VvQKzXK36UI9lJz1kbxmrguk3GNfOBOjwhpZ0XCgKuw3SwoxFwM1dB8eC0KaV6nlrhDgIHAICudU7OqhB2grDoGywxWFuLfb6JH0T0U3kL7lj4T5orRxj9VsTNZK7l7TkY31jqSPvC1Q2TYnSEfLZ43nZsYB0Mnb+1Z9hE6/qFRiESPLuW6W69a+UP8K0QVDWvwyPP8M3hFRugyodcIxKYU+4ntWF4JPhbu7t5hW50shJ7N8R3NVN68qL6qbAhPGgN0/w/c4PVzUjE9iBAkPrXqwgxLZSDJRFwSxYZzKaOkDJfILeWCerOkDy+4FG3/1SCrEneU+s54J1IbMLNIknG11wfPDbCtDtSbgoYOx+XSFptIfMwu1DyTPIrznmx9dasb+GYtQr8UcNyVBJwDvHeUdESf/uc/Vuo2Ut4uvF2Lf0zI68JUCLIxBUerVKnnH1fdl/Pbx3+c8kGSe3dqIaC1w9uDchttnARCl6RcFZ28gV2KuU3rFLGzojNIOsZ9wNKXU1KogBgG3BWw7ZzQdNkulsQ19VSGr/Cd2O+/0tzfqXY6/eyM2iOpC/GPpgjGIqfWFdHBYMa7MSh7Zguv/iJ1DKk6MTEd4BE5g7VaHhFmeIcuc5ePVjffCW7PEAGlz181/9Kz01x8AK00aTcH9wnSFdTj7a6LAuIJQaZHSpfHsCNC8Ra4GRSZ5Z9yyVDQm7A0h6BlbpLK34hl5FhLXfYGQs9bN/KI7x5rLm+R8IJggrlMjFBM6FkEpsuuBCdfgRM+uyT/5CrFMepfJ9L/1xQsn2t3NPnhZksui5x77XA4XUS2Kh68p4n+F0DP8b4kPlwP8nRcCohj423aMwXMN2+mA+sHNdAYyDcuJM02R6IQcUqT1hvS8DBBBNcVXxKRiJeKvnPPU70zzmFKPRQA7uP0IHB2hZ0cg+w05Lcul1Su+x5ifSMhUT8yiba7vAwXdHXlcyk3FRUe9CS8hVwboHCEcQ1NHnrn2ABDYvYCLYCRCe9GXvWM7lx7HsiNMyPoj+iuBlgrTvq00ABvWjzH0cdEhgGjmyfpB/wBW5NM60J6yMj+JgYOQMwZt6wgfKxXLQ+ooDivGyn/zeSafC5ViF3IztxKBYmOYrVYzQe8vWu1MDoC30Fs6YyqXXrnG3moDw3p240NTGbPoWniJe232cC6D8tWTtwIbVh87r2nAfWtd2iC1k5R35M3MadBtQJN79eZanKSb6ad9Gv7RDLpFm2ctsnmLJQPGZ1MFnco8WuAm93xFeoNDqR5MFH6yBk95f5lrJNlALPQc9MFljjhOrS2mju06IU+csArH5QozD1ao4ewAhsKPuS2tjIjVil6UdTWXM4hUZgCBJoOs6+c+CxOebng+GmdoS/9wru8YFS/vRnh9+n4pNsKRJI4E7838wOtfGZpjich40kZUl1gCZ+T/38uyBAlOe7A5lrc2KOqEZPMI8OAGAynnvSh0E5ZELNPfkZhhd7XtdxLqefn9ZO5LQRi0NATklgDzUAqtPk1TIUw8oCar7DJseikCd7e+CyYJwsZaOuivYMzWKObI5/l3Ej9ST+Qwd+1ZChIL1HouXat1dpO/ADfvpXuueeHYaWxbOv2kiWrZevFBRMvsnGFZvxJgnm5i7cZV+Z0MungCzGywuM/QLGhydhPdwcpRJjlwhuREY0lqFGYfTR0QXoCUPD7U2GAj684w6RnKeYHMIGbrGr4ovmh9vW8m2TR3RY1xDgf0ktXLGbjwx2fOdpo21mTu1zyO0djKWtyDNYLqoDBmNSMnQOrSJmsWN++ySVitI9c01EsADDs0lLnzct33M1Y1dSPfXtAiE1vRrL4dxwGER18U3v0u2NcLD9IZ71ZpwdVbngx9zDMQKWYk/xynhiGa38IPNTV8nYpO6MLPwOMdzxBV0G04lMMqwDsgpwa0Boy8kgybvaylUQrThFPgNhieCZgq14YcRPwkdRjr16BbcqsqttsIkh7FBEcDB0s+N0+IDp7UI9IoxqdZhw8QKYwmkOspuAQgNqCWwRDum31OEZkL+c3yYjkHvtEsi0siFhvqLzRWzr+kMjX1KbTExsxE6R8lhLNzuX+l95nAtTxpJQSaULLaKx0J5TW8qdp4zwArW/BsKM8xIfDebmjd9YhwrHopxF56mN4EHKW7m6quPik6h+pTkNi4jKdfoG5X7bcY3rocf+9M6nMffBYetjDhm58fsqYXyPeGwXaRCbNVL5lRMUr/UY9mikK/Ku04IqLpl1ThK0PIBu+Rtit9ZBdNgV+zirtnVcwyxn2ZEw/+V5Hg4I2jetXHwIxpchO3V8hIEQhqUjDBYPyjC8eTlaDYqLGWd/qmMUw253nqsCXQtMQVHd9u3IM/BOAfqZO3RhS24WrRPbcqDIQIB2enavyVwreJqO6wLK6uo45X/3IAwUrfTf3Jx3uqwZtcXwpINfNi1ZkKBsCLt6VK8/nqUgETRMRZH+qB42NjJuHZUzkTDCarh8t6ILwDICBWu07cMiC5mK//0XIC3ZlEgSZnLwz5fOaP3Mif/f9L7rdrW57O+7aEWoDld2RZ0o62vWKfrWdrr4N6CuyNY/g/++jMvoWZqsqGwcTfvBlafuxnH4YGezZBOM3ML0DKjvRvDuk95V+ngq5vzFIctKAE4lVCqwJt1mQn19U1f2HitGDHTVFDGuo3bN7jt1s60aUskUKZyL7UPL/+hkJDgiHtocVp/4p08JX7bmNaVPQr7E8p6sMlq3FSHg49R167hs8gK4PVxLrCGP2idDeS3um7QgVgqwrIVhhq4NxSgWWOQTX3gMj7pP9Z3ZTLbvTiz90zuqqPTVchdRNrYFTwGBQ1H1x5s4G3obZv2+T1cGxCLEbqmcRoEsPIQDrGb2COmgIM8Z+iaCI5+dqlkVXw2AqhsxU7cw2EqGu+F2ogFK6APu+1rdAWLOWtGq+/YLoQJVUWiBRIDbh7thtK++zAjK+d1dfIXpB1akucTkqxStAiDnnx1Ilx6XeAdq2tE2l8BLrTLYCMUt1jVvMNQ4PuurGI1sU+XAxIFcyQDrAEr5vZkDng2Iv07/1+C8D1vZR+DGL0M6dpqC4nAH4hy62mcYQWIgWS+TJhK3wTQ0eTjNiaHN9BOlhssR458vABsM0NYF88uC0FO8ZvYrJtA8OmRsQVn2Y85ybJ5UmLcpBzrYv/o8WYezNiQ0zJdOOuZbtXz+vNgQpKKyGmVnv5rO8FgWCnmNSuOS5xvlQLD1IxumZxjlpexohW9hTlUXeazGNPG3pIH7A308N0ELx6St/Dgx0sbc8clDe/0SDcIrT4KwktHLqbLJ9T1uzVs+FMXiyLRE33IjotsAOaHX3oWxSoNO9OVGbKEr3ggbTHj0qlQQWMe+L56NJuU6NIMSuzZjDukFcwSiUbWNL4K2df1MuuUJv03bC/5zABnVGGIqESCrq4Bcqo59M36gLj3RkOnjifx9OY0Ot2uq5tgLe0MKK5Fdr6euH7GD2fnq/plPTLKLJnY8Ur6TfEZE2DLQdnOfH8KcLxLh73CLMag5yTriN2hSdc5MW9jw9aFHGtMri4dtzNCItNhjf+HWV/Hra/wvyF0NDT6ltLiuH4iFulHLqqO3/aSBvp9czztTtTcEmAzu0nj3SFIEZaEe5KlsBk7KjQegIRez2iOftvQGDpi38aL+dSbJ9gcl+I4SoaTbui9Wb7iAHoG6clzQ6BnaUEDOIt1KrUmhd2f8k86oV8amd2e3XO9UpvnYrWGxYD4Rpa2MbJBURlLwJTiyApPX2Fpgckzrj+oXVCoXFW9fHSf6bCOxtpjhiX4HhUj7olKW00tCCYp6KjVf1lmWc0kWVNoO9kz3e8FLg7QXB3ZFPPBmj+Yzwbucn77oVpLGBW/Ma9Na1rN+z79Q4sE3scnsF+Nj8xDD2rqJF+XSZvaMxe43PyuZgsPQPshK0cAgwOLJmQi6/cc0/aQCjgRKEU0PHrFGI8cmO4CCbtblGjJ3CS2T/bR/o2iAxMitOnpf2BtypcjpSdIo55rcQDNl5B1Sboyew+9/dmO+qmFt+sloOX51HHZ+MjnHGbVsE/45LQL212YRGUIUzL52qGdFgJ/PUF3mJPNu2OsTzkvacn7YpWMLASjG1YkdhWsnSN+jdyKfxxWdHOjmm5jd07SFNmrMdhXPmsD7Kb0Hg9+faE9dn1HADUEGPWiR3EhpftSnjO67/m43tPfS1mTzmrTOPLiujCxcBkZV63zdwppWGJVKa9iCY1AxpAuwsQn2KA7K2YoLyFK0p0+mRxrSYAGkbu+NgmyOdYqa0XVSbumC5YjgYCHXCyQrmfQfV0tzmktd2B1dy3eALhpkDAjUO/iec1twJdghfJSMR2lpRGpHjth8XjBs8GLY9VqHZi7zrlh9jCeQV/LBdBAnLldUFUXH59Bh9Rn/oJuhl3xL3gcALM7poGEkbXbquOZTp3sYeycdh5tpB9pclG5pg1gjQDVZm2gFsTeHAQNa6IHnyDRuCNRikMq8uWB7mQO5p6j14JYUhNyHC+RK6+wYH20pKfaKz1TLUBwx5IhgyEiuN5K7GmTRFcnNCfzBPPSklYiobNMWkS54oJgQQY4RfbPR0Bfgsehn/ZD+YQGPpAJNQj8vZw5Zc7bJrskB6bbvg6lNhC/UEibrQb0AonUk08dYFkCmzFagfsGYcJfjI4x8YgjN9lILM6Unt7lPzvQI8UdJGK8CfNftNP3W9k2FeiebIk7NHXyLCuEP2EhtWNR3jh1v9WL3YP+y7aVXXb/VAubeM0rSFuATKqoonXYklK2hTi//bewXPfUdsXdIFH4uKeCBmN4a0AazkWxlbCl3yqUJ1oq2HLMWiUhpeft3fRT4gjHdAsh/c9shjmcJDAblrZ9Qxamm6CZkKbMNhkZXaQN6IgBF7tJ7f7I5Xoat92lkR2bo3V7e69xZS+TnJ6AKJJfss7ZuhB8D4C2W/H+sqmq8VUWmVB7uOuANuDmgAv/0dh8LeISWkwAeeKYFo5wbp+S6E8PVS0g77HJF9l7e5T8syDgMrlLve6actvSmRg08LdZe4+FSpeJZRdEbsnlpSYqJtWq2ZixhmZEbas+XkCAIIg/Xs5fwuaUWDOYxG9ox7R8NZc6mY4JztE5g8LsrjUShoL65bIZiyFTJFYV1MhKAnzUWtO0qZHZi/F3cu0WXiYFDRIptWCN0ZZm1KHdDtksAvLqEG+1q6UdVC+j5OF5CznL+jLk2mvHulmrWGz7BgJmeaq2dBJLJkKC/ZAnlXwp2BhFePgXQuLckb1zgxb4nlUIOcjggObf8+KDkpzUj26SC9qSiY8L61DspwutdJC8fYo3EE76nBIkb9aoCfVkzPp5mI7iX3vrLSkfGBkONldWZMMemVh23hVKuO2VWXUUT/IC6qyJA8dlPen0+bedHmERH5TVU/ydyEA5jvjTxFA6FS8MtgwjR1GntQij9K7q0KNY3VWL87b3D7A5Zd0dOdyTtJ9cjqmZjN8yvvYEQNjQeDAn68vTFVUPKzSUCfdAkZlSmK/ReoDrjMHdBderlNXpEEiagHWnHdigFtQlPHUcehYjulh42XKckBcaUTBz6jP7i1BIHQ3vBznM7RnzV1QyCZuGB/hKQ1IHhZEoOO2DEFRE/RK3QNwNwfRvAcDELaiU5cV6WalFaxKF7AsGdGBg6KOz25MIovuvrRlw7UDhUWgmIxmUckWwBbimMC/2pjiFoyJPPC3ZiIuLUITVAW1gf94+duLd14Y2YPMiDqHqYY9pHLw6aXewlgfROwaGwpVgfPu4R9GePaCtD2mLxgUpWPH/JgeCvm7uohYOFtapOikrFeS1TDqhDABhMqvgQfkcv1tCKayxMlqR/Eew1zNtbdUUdFA13/JGXUX/9MWadKGuiTkr6PBRxtQOf2c8jYoUj2VpykqzhOhbXJKQW6w3Z2BtojvyzsW26Hq6OzRvPFXz4qBXj8k3q2U7JcCcAUb4PEhLRbBoijtKo7PQkz49ccFX4iaZSfUcTuevn2/aOH8UkZemwAkdLguSOMGi+509zZiK/uPGPDJT55w/vMfZDbsCc+qDWYvPvRbXPeQzTcSSo+kS+ebcmpteNVr65Jxj337E23gXPo1Q1TkFgQ2jqHrQNrOmRPOu2CqDrhZ4fzpayL56ekcA86g0heoQ/dsgxi6qoTR7o968BxWfiG3UN250KUuxHAijJpLj+1QdduXmvj2TS/klq5WlGZmffIL2hjU82TFJFYteGLmHZg0tmersXXxnOrL1Gl7pZIvxzRn/RAAJqNAfdTTXZEgIsWk8B7i+Rv8ZrlLqRzcyrdyjGXUqLh+HYZAe84wEA+yXiOd2ttt+a/y++IvOUVyAB2XREJGbTpVKPKexRkFukGzKTjXWlcN7Plx0GVDkwpzuOrks5FYeuLo8vFdFsOQ/YJMrmikdd2QJ+gBoUUkb8NAb6URIBVTJ5t86i5+XcYc8/tw5ith2adHfOik3cQLsk/LDxYk6W5oSkyP/STQUb+W458WgNb5CydBPl1rlW+pgEs+zHH4tImOWVhHLH4hpzJ+TRDAsOUR3HiGtyaoFNVCUyWmquJyZ7sHYWFtYz+FvzdAG0ut86DlskQX5KSO5fhKpjLf57V0OddDKfh9cVylSaRNN2KRWM1vZVDkQE3Gi2uzFySkXgN4hmAHWZ8nF9fZ9hXRjLpnwUGIPulI0sHQCIgLWOVK55NIxyRxgTPeyvCIwbCzkpHW14mUzZjQpCNnmVngD9zDPZacy/20vobvLzeMgOAJR8X5eUUQVXV14CDZg7j6yqRsED9yZ2/3cySDnA3IAZTn5xY6KRj/eWStfJ5mgBSaW3W2PNiwz0Uj3V1NUeIHb8dVIp/caoTXC3L+xGK+o1NcLTltO8ZgqRmAgsLPLYdrLETsA6814AH/AE6BkPu8yFeorUdnU0Xo5occtznRTktxPJ5x1uMPTYpHumrl3oovckSs5uPqfXdpUTSN1udEk+lXpQpoteSCvJjUp29JgMkWaphWNiPhPyOv/8kVBCxaUkaoA5MrWXgSZsKJG0jZEJ9TYyzlN9U6/aomYzBuNNFPhe0aQADVlTgtSDMjpw3NCKANYXhk3EAAagFpC+L15CVvE6Uc106qkGYIxHsm2JGrZmJEkfad+xvEjKDvQBNqmUN9Xkd0qXCKVp22DfDviJlOdnEIua4PcIahoYhERV+Ej8j6CkD7EcGd16BNxPd8m/UZqbCeX2vFKloCY+CU24sZXMvVK793+Regwt6Y5QEzWvQx7AzsAd2/aGhPcbWfXLBaEI2Wex0tNbuisoXYtmwFPHTdli2cY3uowGquV4Ry2TguKKHLvVyso3r8RtQ3jbHDusVPAnsNe3DTkddqrFmI8RrJ91r72yTBcrQixZ8+GgV+FaH481OsZaSRTTffkyOJRkeTwI7gTIb5oyj5K1joFi3bqoYUzDBSY3da4wL7mGz/JoqhMEXkrTVXqczsTznu7Jiu+SGACIRoAqkExYKaeNtza7T90M5F5hERUEFq/oPQmzSUPkMG5xWZ/ZjjCKXktPYINZcAoS7iTs1ghEDUStx8/kuU1Xj/omaetmUeR210cn++qvfYp8edUyRnxsoprwoUjnLpdEoj/x6PBkLgSZj4jogQlHUbv0k5LVHusqnEYdas2FeN1URvBbQTXIC3qb9s2t/mbHoGRgo+UJjWWjpN0+sbxvdURgttCLDHCoSpgeeFk9uxKtr6tNRpDNMYuhJXEW8MeTUfyGbATfRusTmpFH3PF5xMqZxEmEmtxn5iRVrsJc3K3ZgjefTd2SO+KdiUFzL9gkYLCo1nP+RtZqr0IqAJ0gCvcIBZY1gwNLuq2X4fZSvRjs9pT+MKwOirxgt7WFlMB6/K+aYWT9CEjfGd6G2iODxowCUz4iSUMqIbpmWDVmzt+cQ/AZVFpg/Fnkp0ysbeVCNohM5qUwx9Udotbehf+VNMlMLyAfH4lJJMET+tkG4NkAZfxCKE0YcLh/emsLVthpmCvYN7B24LnI3i1OktfYvBLM9Pw8MFV5t/O5l9Bg0T2xqXJDvm+RNHOR5FmX1ejahZZoZ+PAus/V8WUFkMMKDvaookRiMzBv5k7WDQRtwSVpQlUT9zcvSF/3ecRFwujZssCrUFi/eGWeEznwyuA9iBbn6iwblnu2x2+MDj+e+0EUVLSfBLdj8s63R3XVM0IBR0eatCuZZrO/yzBgOKY+VBmlYo4yYFnoxCmn6X/R9H2RF0qc1Mgc9IcXP0H3hAZr7YxCJcK0z4WgLGi5tqg38MUxBFF9DBXSrZYYylFuHhO3kGnzHg/Lc6AGm4GBXCTjzF/GBtOPD17YnC7AVc/Hi+fNZqVzDKxUReVO7eQ47rd9P7hqE7JKeFfnlrYzWxuz07e2CTAC/Pm0WM/BaVaHp2tyxceo2RM6l6qOdWL876hrYYPn8zGb8k/jgY3MEwnsPkUjTn7DYJxAA0KRqtscIS50bnxWnYK7XRfVhqs23ANDaBOUFJfl6RBEXMpVtw4HvcU2nhLwe/R2skGAGIxPdxem1kiAwAObWswtck8yWLpE5z7AsGES39aLPkNbjoVLO5Ejh82Hs/pFuOjdTQYRaMIL1e8gw9o99egO/Dd59u1hqZBTVl3Rj/cRPQv3k9XAjz9dmn5AiGUoHztnll2cgAO+Ty/vbXFgDu5o6BVP3rF5/mkTRvCrvgO7Jvw0hjESkrCofxzWsKJPriCVg4FX0GTTy19m+4seFyqG1ss8lVmUH5pJ/xFmJt5HMbvrkpfe/b3glwSIDCmie8Ec1ge4epO04WxZUl3mzgePO4/ANfgQX0X89HUIMZIowraQaDlFXB2C0Juj26f7syxd1LoeXDKBYvc81nN7qpjxJMRjhaL37lywCuNyQ2JSkZXFUjysZMzq/I/MfL3fmEHEOTTe5skWJS8Dl739BWX7E/JSDCWhnh0nV+TqGoWEd/H2ggk/1Bnvp3azMiYYx9TfgBMIr/YDspbi1OSqTyD0T3WTzz/R4YOBCIepF528tBXOPnajJGsY68ejz5wVRnvkJaOq2KDELlt43CkhD7w2OXTFMfuoRI7I+naeiq543QhE2fqMmOzLjiSBnmY2KseDv0ZjXc45Zea9CHXT3sGUE0EQVTPXfpK3YJBtE/l+crwW4uIUXuc7dQbRyEyaNasmRA2J8R09OAIhe4ws79hDItePt8jH/K9EyaHwRu/ORz92AI84/YJgETxolZoTeSkhj4A433jQfGIWf2FWTs8xcA5Lsdcsuw1YIxCmzAEK72rv//BkGwCxgA43c2LYJhpXJ7k1q3JgaImxQ1yFRJLQrTI89BDaqgA2Qu4xoP3nlpBF8TBma7GPtc8KatzuyiP5hD84xVObmxY1kFXuhwn8Ai5o7NZbX73Q5jq2TU2KnILMa1/Wop41d57oCWR3t5BxVRyOUiWdU5zaJVeDjMf3k4SDkMK5RxsZULhjd4P6fhjESUZQO2x/JsuyfIzWFSt5Js2OVQldkZQAByWvMAYn4D9Y0VAtSEr2nmnYsMDT8Fb3C49++ZRPDTR4alnFZAtwfxc6LrDlBQpvfTQC4URLIRuz4lilWceWqhnkzZz1CQ6QKglfLwHnuerWPafP9FL5e44Ys6NfoYKXusBiNoSTmAXd4ahbuHSUpqLmFpdKmNKSwgVacAg1/aSKuAYyCWX2B62/wJaShHPjNUQHKCAT2w00iRotRMMSTSHp4FY1R4rjPUJFqukSQCXGDlP6uyxXX3zXTA42JLGuCW+s7Wrt8ED4Lw9OXdctwqFD6LpkLhN8tQjD8mNi78XgHVQ7IaPBux9ehXAiSmrAgyjIIEFwyDA1tShMazOSI8xnAklNDvNlQySHg5d0AYb8Bq4jpWKbZ8Ho0CfzxkeL4x2z1Bh/xUuHL8GeegWwGCgPbT92D7YGEea7qC7IhcQFPhvGKVY4MYG08zO9FZsVoP8AMCo7T3ZS/R0p6zY6wNhSsBso4p5AZDGmb0M7zViZw83HfduY2XfrKoCK0OBfI5mg/MXLrD2hfBYD0NDV71xi7waBYwphbkfMere+pmu6zf1dFDWH43KuSYtHPZSHu/yzFrdfRFVjwL3AN7yIYYhAZwhfeVYydAz5OmGFRIw6Ax4PS7pNa72A+XShXs89pzEUHr/DN/hYqt8qrvjQmtOox4+IehAV/vtp4NSpuosdI3IIhZOeE545jG7ke/VyqFXfpZ00c8CeCJYyQVvF5corwvepq5bQQSskrMnsUaCYEcxqm6kKbL38E3ouZpY+uxEgnVyQDHBbFmBRMdR8aAGFPUGz2Lul6hjT8n0vcQRUtDLYmJULMFs/A4zK+CYaBI5NY56mLSS9+26v5J8mcu9TPCHioll8dw3NjVodMSVyWT2ms3VSwyPJ4XQ41U+Kh/xaKbYtBHYRJl4ASdoMegFAgsKZQwkZweK6oYyo7wnfJ5+tU7+2bZ7Kk3VEpNwzJ9tlGJtTi9XtpWShs4KwzeumK4huyOUCOoig/fbLTY3zgSNj+YMG9vo2o6CyUcOe4KM/oR1chfHQN7IAtOw2rQJAO3BUZd6+e+K28UzFsG75EvTEeLvW2wH1nlXdV6J3b2eabo3fPPcxKlodfnRIPTUTrLBMcfFaKc7EXc39o4sPGT2TuWMG9V+6xxwU0okSaR7v+52gL/9l6NW+0B79cQMTkQgC9xjYYfVt3IlLGJ8QGmCbYbi1v71qBc3wk+x9qropwBICnODuwOvefM6LiRbF/IBUey7xc4oDXfvEsrvQqOvMniPH3cl6FPyutFKMsY4Z3zxwKbH8OoL8XSp8MvdXnrxOrhPg0kerkwSsAjFiGRRL780THvvi3ZRt1rHRXYGT3Cln30IZkEPItZsI2T17SaPzWXEp9KGOiYXg/Umf+mhLmN+pWN/YxAWbTpzA6Ec75WTNvz97161dYZGI9yFfZ80khcA4RYbtuPPeu/CPV2aKmwqX94oBW00X5vXBDtYBGyT8ohL+/4ZkDOqfqKYzHCsVkI3yDntJb7iSbER7sqEdwUvbTQJb+3yw8q4SPRXKaPCWxptd12Gee61++mxcrqTpFwKe7qQkQVYDcFnGaEWO7lIY/E275p68Z3/Kx0Z+sMETlD6l4HE768C+6igez3kXmjdb5I/772oURU2PPVoXVjvO5kiiS4PbFCU95iKjk38QskZOOLuN4nNDXhrp2gziIxPtzfZxxo/70FFOcLUiTey4qQNGX8xK8Lm9AKRLBEboVKMIKifAFIcjsI3Fmz39MqNyrLcK5xSqY4xkaQC8J19MCROIP3uq1K52OGixy2MUhD5mOUWcjuK/DY1GHfOSq0iGrsbblT363susanoMU+9kVTdJVxBm8kRzjnaBZyDsRlhxntNX2EgUwr6MO5DtpXAnEzpTYxc4juCI84GM0r0taGpaPgr64OAb4ll2v7aNrSBn2OHMBfB2XSExRd/Q+uaCHnarRkiaJI3v08Qad9g4rm06ziAEOV6ojdtkaiA/XAfEeZ3N2560lcvYBOQT+wbvib6yeZqMf76Mq+WJNQSzSmWoxJN7J5+OHEgE4Mhvd+i0mR5cTfbPwV0SfT2WE1QLH7JsH/otY8fjEy/TWe/cFL+i6826KwDRcUHbmYVMBHKiUcsaqLbm/tXt12dKBugtx+KnrNC+vdYcVSl0IlDZ6uCejklw8Fa01aiJmW9w7YzkJ0R3wdB6a7tsKUiWPaw2JJjuNHsTLUY7ZBEUnEB5dgU374XEgRz+3lUV2HV7k0jMUwMtwj9fjwAcb2q3YHlVZtTvRzfqsl4fmDAR84GZFsOoIDCy5jKF/kgzO0Mw9RPvHhJecmlwEcZv4gh4g+Eh5ydANiFf57yYd4bsUT+yPUoyFq3L4zTP1RvsROPxCkWqjLmC+brlNgcFCeEvPMznwNHUKUG+WLxNI3ZfyA5DdNUgGEaY0hpalxmlz6KghBXIre+juwMaZwYM/SeaKhT10Su/BixGs9P1JJngjeRanTjMjcV1l87hI7784VtihWgIDw1NtKj3Jko2/oUruSdJYn6+mzKxtXuaOVpWs82hdUvtRvzh0KpI+tdTQMozAPHDzs6Q7e9TDmoLsn4C54GBNM3ch+Hq8ETxqs0EX1ldDVy96eLJ5XXv40Asi6lCtGwUuplhIewq7ifanpkawG7s16y3IHteu2FcrJMGlgpqjFkRI/wDTKvSebv4jdKt10/DuEySoNn46yil+OXPL36dQVTsPYSFNJulomuizEI/zKDT4qHKrG3kN88vOc0/EobmhSsmwN1j+yjJqi3saiKeMta0HhAZ3TkWlG2botTaYCIGD9unv/94BpicfK2hdz6SaTys++1oHs8gFiXt+NAw938gk2y9NKQ5cV/dup8ypn2zMRpOJMQGSuXv6VMBTCuj9y5QhSGq0djVVdg0qy9UyLLjzv9djH0Js4xV+yydf3nPXdFZb+6Lzu6UV0g546nLidTANTbWaqD4kPEXbBCcd7Tu6J0xvnNXI/ZWdyP2ZSoHrPeErZIWr2G++2yy6RWOXUHAXK3KX0DMY6lma5rbY+ovIeATE+aRkjJDxvo/Njo2DZuK+QWzFgRn2R2tbkmB6SsB1iauKtj0sPrktQmeAkVzHGGRpgVMf4O1rp1bWW3fiKL7TIY6W10X57nQL0WY7d+jSKE+Wbj+6OJfmTHqyQDY3ic1Y8vMan0mVaEGyMIyChFlkGgFLdLRdVgSZ7T7XG6x1MUpkbDgPJhBqObB7ENE3GDhjdtIk0FhAptj1ATjBfaVhrqlh+eyPERu+4cK7KHwdhJ7J9loEnC4hM2MDJBpGjuL3gbu42rjD9ElUlrdjW5/iewy/FY0IwsB+rPY8It5PAq+5M7NQbGHi5qqWqtn1FhX/kQuBD2x7v8fR6Xnmjn6eSJ+Fu6QJe9COjNoJq06x7Z8fCADWnqFtEJ+q/kGDDVGw1OaJ0o735Pv6tSDYDRt2sbvxYTZjV1glc+uxRCTgSz9MEImFZKPiWm99OrCj0hz+sM7/OKe9C1KiY+ryviEBlLz8sj5L2flemWKr3kPTtqv4k1ccUxeNmET5W/nTZrYyzwRbe7hw5SNc+e6KjNlESvcU5mjBqzs/zdvl7yhy9PP3kAeVGT6IKIkMyKf2Jr235Qj/se8/+z5Pei3JSjv4cJ/zby58uFN4QW+4/GhzbIo2a+xVyaKtA5r4MdjkgMgXFXGOL8pQCM4sWpCnqrCDJGvqFkP+cONYuxsAzt9LUzFvYQJFeFsQ3E/mtNUAN45zai/ZIDG2EOcNSHWUYRy1c6v07ufV3jvtRmbuGwPj/JoInz8EfyTHIy46S17sy8H2vMfJBBRwNHnQXUxU5xSSyRe7Ue+uUUbZKx76uTed6c6lXZJoPfZUbsc3k8BgFEk8ig0IA0De8yvj34lSSJAgXewfuY5tRFXYe63ANdewiymfPTri6nYyjrxx7TJfWhmcJyfzkzi5H9jjS3FG25PXGhaFecL1RZ6CeW6Rh0pCrIynsF5dURlXo4i+byHFffqhR0EBFUhCPvk25UhfJk4pAhIWL34n0U7HuiGykKlCe7EZiREoeTvR+f+b0sdWVVjnDfy2oe+ZH0Cid7G72bzQugKQYmMt+jMCZlWBlVdRbXe/eZy0Rm+Aoqtk1nfjBGh+vgQ0PKazE/mkNkxbKR2hcKbmVcYTSKF03ZynY3I6D6zE7IiTdjvew1F0wUxdGrVclB0FncNV1fQEbMUgSR6N5EF1CRHAEAatgWJMEiznZwFd/iy96hxZUCkjXXMhhOjTwAwR7i72/B+UUWZEqdStwcd3BMcaheQ2JARmtBOyeOEm0bMyfTjQAJuqJqEc5zie2VyFsl2dqwURbWdbcgdNsI2CGAaAuJft8elmbIR0CEpOfALDHNrU1xfJLRu2IqPY2TIHuhrqqPUqN9zKFaE11yU8rqYAlMnFY9WxRKxL5CBUfXF2YVuZSjWef0veBYbqGHx2C6OIiXM9r/RkZNkh0+cy2lwWeFnYEOLPpRJE9vZ5A3g4370vMXgIDKdy01+IBnnvkOpTk9GBa5hNiLcwUIWZmTc89csMcULm+YJ4RHeKNDDvICKHIsX0aCAam+gL11J48QyOqxpZrnaWKWBP/Cpwwiqg8zOThD8PXnRIgYBIo5ySOC8zbK6g0EOCsQ4eggo8u5M84ibXpQYFObusXKLtJq0HlVOMKMGpUBzFHXXQFPsDRUxYbV9EbI0uY1W25fkQjchQLV8HXFYHuKcGItnUUqF4ZTP7mV9Pja2lYTlu4PFb4AiNoKkJYyvEU5XQaWiCpXGZ0n/Aiv85VhAUHPuG9FT/G6VqVTT4sIYfMYV2lVKB+5raN+kiR/N3sP2fWN6Cjun17/fgHZbq3r9pVvI15zKbxGODmAAY9XEvagF13Z8NSzExXZnMegkPcq1UGPwzaEZnqLMc51ZqTHtK1W1xG8qgKmgIJZ50ZWGp5g+5I3oMLhmIf+xXTtvW6JRm0n8cCiB8bOQv7P5BJ9C7t0QXA6USo2rg0SjoYhiXxzH1G5vz34PI83Wh1aMBigDIG6pEboyBJSKDeXdhrxk9Phyezb1z35AHjwklRszk1Yg0smlpRXK2tT0+xYt1LF0nX8QOMmTuN/7KF/xG7zu6ut0ZPDbmgnfrPU4iX9X/Gbsruc8/IlQfyS3y+NPPBIKNcaq0Ayvwyfz11gKbFMr9/qOqYCpFflPF+QPnOZrDVdMS8RWdguog0/zs8A6jd3Hf0FsRCUSedfmOGxhigvOXG8jzCG6LO1+fSPfCdGZYHuiUZ4Imp8qP2jQy2JIZb+sDyEf7FEu/TgiCSS+4AIbPJOv/tfeoOh5u+xrnlzIoNK+qROEg8f1tlRLRj1TRdDzZKonDeEH5UQj/fj9vyspWl72OMdsmYNLOJZ+PWFQvlfPdMIYFa5rSjTGtChpK4hEFH+kAoDusCeXUH1frivQqpKtaiSaE5AD2JIasUrXUoeO/0YpFTcbsejVuObIeK1yySFcCNgpMSHFqdNfhDOKovHj4mDR0RfZVLeWb4/0n10+ZV8U/O3U3kffGJSxWb+vbdIwZKY8za/JZDUCdAuSy8vMgIXkrs8Z116BI8KjqiEMDxFoBC237mDm5WXOgo19ogZyXxr0B3KMd9ikN14WQkft97K7zw2C4uegb7TdlC200FzEsq2NMH7HYfFEqP89MzM8kfYXL8DwlONVjGuzdZBZjLKWN4K8tMyyEjoQNhUYu5gPgcD7Tqc5RMOIL/5tT8EW4jFdcVoHFqDYPTT/dsMSxoWRfXZ3+NSUXFS+T0xju/D3fAIhC6pgHje3DebSVgw3v3xmw1/lY9TlQXFNiZ9S5XnU9+Rz7ZZVWaAyyAAIlmKi5L1xipD+5Td+nruWcT/Nw8Irb4zl8qAfX8a3LyL9RPeTArsmw7gReezM8TTHtUUPlces+b+KX7U39ql486f6pt3G1qqbOc6XwKGkPQkOoFVFVd0eSioG9H5Th0hcBlIEs6xEsNEVVLwZ0AUfftM1f4q7/TbkRcvf7RxBMHe5xd5P87Zo5YRxh4pHU7Xv7AnkzJSIapPfHFiZKv9xRz+1yBWIR9nAHL3xIoz5zD2rJiBRCH+VqODyEWCC2678iTnjvS+cr7Y7Y+EinAMq6WfKaTj/az6NUMXVYGXAJjox1cJaARkf7O9B2VuRbqDlxRkFw8avclB/1iPhHlqnUBr8vGKxFvr3VR4gaug+Ym8LDGEErAGf+2N6zMrkiZVcBGpGwFZ1rFNvvjPXcyC1i9+FPZGoS3tV+FhwLBUsqtLfY7QaAy/LduplwVeqtfnGrHRA8Zsnm7iZQsP4QwLyK6wIPfjUTQHWtJENbnSWN11LPZxVT7dZQX8wkA8UM6vfhgqn0tXKkeMrNeZIXUqI7S+17WFlqspR1yklnyo+JVXNIfXfYG3EeBPOn6Zsz/uGlnF/4doYgLrK68IHvi68raYlvav+9jusnvi+ToFmbpDXO7aeKqxxZ0bXwdcSvCb0TkjPUHFYUPpR+vsu7dlAvcgEPNdK5W/+9fLxyXoTXTN6gk7L3H4oLO5s59iSL42U3U0I2JG9m+U3S4We7ukY8uIz9ejE2kluePlW7GnhYHMTYqGnEKbDixA36moSO29LCuIO/66lHV4OHoNCfnTuSO76ZCFqewwg0bPhG8StafGfx95JezQBC4gBjeweNY16zBRZXcf1R62kwNj96cBBiSSgwoG7jtSmKtJ1RGnYhKyJI0TzYA3CtXRC04wwyVOeNnthRP6gyemu4gyACPc7N1ms7gzivnze+mELBFwW5UAKk0OWDUrxmcXxnMd7S1mEXCL2kvq/GD0dLJJaNW+MEb+/3UBdsd2bEXfU/DGuP2un3yY/l+GwcWkTsDJIPzvY+XEru0bbjcgrprOocO/QINJOY1xZaDURO1s5Mt74ewIecqEboHd0PWm0fHxOVMetNCDS60PmxClvI3ApYYn35A1TCltQaW8lFfMFw23dtaUlAKn66T1elzJtsn2wkAM+C/fjLRXW3vJ3MUvNHTlq8R6t1Ug6twKgPFgygRMsvQxdMjjfzSWFE57qvHN9CXiZmdr3k4wH85GXwLHnEKOnfP+FE8HfnOK4/T25SCUVbC9kk49M4bqK2DUXAHtcNXNsWhNjLi9cbm7d3rKqO4/ngwpro+O11ct2cQmq5twTT5dzRnxU0HEOZRL475O/swynMeN2nIdJiKuYS4GQNtyeQlZjue0XJA7KxoOz4tk27MyqeP44emLWdGe6GIrW4PfiRxRv+5hTM/ewvCH9Bf/WM97gJPr8jgCBd8eDNpBEmjWYX/F51aHSBFN7k18WK32IIvaOZK6WjzzYoX9cchXr0n36zkdAsP63N8GikI4hGXm0xrWv6i6a5+McJsuwKOG+OniElQjrP0rRj9SSGO7PPBNmSor5AHsj1p3N5uGWj1PjH2/URXMclkf4HiwlAiyo9fI+T81WgIl6+Zino6u0tnSgMj0Oz5UsyJr+rsbRRrSkaSxYUQahJABNYjkcBPza/n5lLKbMVrI9qPyDV+SBMBz06p6GLQwIJrYeYXDqIKBsDNchunIOl7cYq3OZsTgc4ECXfLd2jXFW6tfPF3uI6+GXH9v0uPG7BgFUJj4O0cdIjvzh/D6gwAocnEVeWULd4guBVZ4doBBDBgNpTFMLYgnEJ1QOC50cm6fdoXjySJe8sJuKevPW9QUBF6DvHD756BZxrICTu5X+5qYYShsHoRIOY+Hfd0lSek+LLWrHAS36g9fvqh2aaHgCLeyO+D6jZRzE0ebl9j80VbvwmtheG1qd9hhuLYvEQLpyKzEIBjY9BkXL5O5y4gP8RebVdLAkxLgx6LL1+Qk94XjvcJ9BF92djBV8RozqiKCR+KZLgieqGGb6TwGG0IrvFU1xfUQL3RuElOlr1q70YJttG8h4dsUaHKgH9eTflpjhYzcnqVTXbjLvXaJCnQ7/AcH4pbYVSoE2Z6G1S7YbjaoIy1G6C57xV0NiBmn/WO2gCvwCFYWusT1Gv3NDfzkJLMlZlYVAyGN8CTuyZhpaglTTFOpffhcC2Reb6o5f73rCmh/u2aB1UfT1KMy7rXOnA0+uQ473ir8qc0Qv7gmhYGQc2DcV6tLwywZiS8wIPT1RjOkjGgX39t8W5//INFW0JoNSmJRfdJGGmO5MbrBkhrehDanRgc3JtnFXqDrhg7dK5cEPvlnkOP/wYD1uIQgHKDIyvFiKGhHHG9awQDMglZ9WEQ7frttqoHkWcr1EPlcHjtrElJOOY/BbWYW3kn5CN/SAmuDoXu2CfhXXrjKBFtBmhCOCQ/LvYkeqL5qhbfdsERhb/xg2+DOqTLOwwvGVL0BqvWI1cnOt4N0mXY4jKWCzFdL5bKJW/5vuLFfk9sELbhX2J+A3zIczaJ/SpWuVK8CPC1dbdD45UKPFckFAi5TyhOLy4tdJgPVFI9BmxNmlQiCrhaTJkSRBSqwCTn+bHFCFPYQJfZSpn+fcvLiyWSGPclnG1I9NVSAZiTb5y9qsn7saBrkW6JrgzkPcf16nVuI7VSuIKHp9+HMk5WXK3P80D1xFTChnbTVI2dqwLCouvxgjAL0gGZ8mM8fds5AwRddlOwPVpbqYQwYdKej6qusu5M67SJmivUQG3D7BvYlgNUEa7pM+HzbLndv7li5Z77dwoT3rloNczXi+OP5OkCIrFgJB3xVVPsVJPk91yy+MNTuh5H0tmTugBtARKaO5B9rvLjQsACavS5uGLw3g+yWVxKQ/QcKuTZ5RXTj5ToMdgHGLFv1KsAzkythRbdroBM9uEuxKjbqEryC23RAjwSpKhFKdM1hjpgW6snE2DtBLGBhR3ezrlc6zaOtPGSqxsYoE4VvsWiVprbQVDNatMkRPmo2KSplytTvkVK40IFKnh4KPZpyB5db2BLp16SGoG6ZUTn/BKG827w2GgZIDyiyesWUNzAth5JMgJXhuk91dDaA5RM+VLwvSqfj/38rAEk2HgkevXrVw3aBjhe1FElK3e8xm0Zxey9NCXMYDJG7KyCKaF09KrKXs6i2PmDwLcawgRhjG/8jgVCdxEFxT1dKkV80nD3JvBBSLY9kzu0cheGKQXMPVmMc0yQYEHgzvymd9k//9galc44vr3W74xniVGCC2YVOWgJHX66MtDCZyx7H2EHxnQGqVNjfA3DZu2cl7KqZ8qPg52fa8gddw/Mx1g4k0Vrj56aMcLwE/nZWeKbvVsJSNyOWp8RfSXy6XRNsdph43Zgkp3ncFGdyTIgoLH9/ZNkWPvRJ15Li7fCqk0oHXFlfcaNR6BQVVOwAgHlzv0p+XgWcbenBSoc0zyWrMWaUkKv0Eoh1wZUd0Z02at/Kc2ArbHsvi+7RmtF8P2ljNcyw63Qt8zGkIATlfpVfr7hS2FEZHMhFnnXtaGmuIae74hL+lveVBhPkQrZWmiDAPffApy7AAUSCuRl+Bic2e491lu/4YSrpthCpAJq36jFOM03NMdHKs5YgdlOy+acYjsmgf5/eMVH+ooBsKJiTRoSAFzp/Dou7ofTSpyELBhfQ3VkgK1vdRUHf5n8HL4Drxtim2x8hpD7eBbdOQBNjcEJfFE7I55mMmbRA5YnnFeNTSA+JScVe6Ga+znPCAUfuHGGxw=\"}" -} + "Initial version": "{\"iv\":\"+LejjDClJbHUkpwh\",\"encryptedData\":\"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\"}", + "BugPulse-V1": "{\"iv\":\"BHJREfD7rFOwfjAF\",\"encryptedData\":\"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\"}" +} \ No newline at end of file diff --git a/backend/src/db/api/bugs.js b/backend/src/db/api/bugs.js index a9fe47a..90f4688 100644 --- a/backend/src/db/api/bugs.js +++ b/backend/src/db/api/bugs.js @@ -2,6 +2,8 @@ const db = require('../models'); const FileDBApi = require('./file'); const crypto = require('crypto'); const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + const Sequelize = db.Sequelize; const Op = Sequelize.Op; @@ -295,12 +297,10 @@ module.exports = class BugsDBApi { const currentPage = +filter.page; const user = (options && options.currentUser) || null; - const userCompanies = (user && user.companies?.id) || null; - - if (userCompanies) { - if (options?.currentUser?.companiesId) { - where.companiesId = options.currentUser.companiesId; - } + const userCompanies = user?.companies?.id || null; + // Apply company filter only for users without full access + if (!globalAccess && userCompanies) { + where.companiesId = userCompanies; } offset = currentPage * limit; diff --git a/backend/src/db/api/companies.js b/backend/src/db/api/companies.js index 08612b5..8518233 100644 --- a/backend/src/db/api/companies.js +++ b/backend/src/db/api/companies.js @@ -2,6 +2,8 @@ const db = require('../models'); const FileDBApi = require('./file'); const crypto = require('crypto'); const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + const Sequelize = db.Sequelize; const Op = Sequelize.Op; @@ -162,12 +164,10 @@ module.exports = class CompaniesDBApi { const currentPage = +filter.page; const user = (options && options.currentUser) || null; - const userCompanies = (user && user.companies?.id) || null; - - if (userCompanies) { - if (options?.currentUser?.companiesId) { - where.companiesId = options.currentUser.companiesId; - } + const userCompanies = user?.companies?.id || null; + // Apply company filter only for users without full (global) access + if (!globalAccess && userCompanies) { + where.companiesId = userCompanies; } offset = currentPage * limit; diff --git a/backend/src/db/api/modules.js b/backend/src/db/api/modules.js index 43740ec..5c80e59 100644 --- a/backend/src/db/api/modules.js +++ b/backend/src/db/api/modules.js @@ -2,6 +2,8 @@ const db = require('../models'); const FileDBApi = require('./file'); const crypto = require('crypto'); const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + const Sequelize = db.Sequelize; const Op = Sequelize.Op; @@ -172,16 +174,8 @@ module.exports = class ModulesDBApi { const limit = filter.limit || 0; let offset = 0; let where = {}; - const currentPage = +filter.page; + applyTenantScope(where, globalAccess, options); - const user = (options && options.currentUser) || null; - const userCompanies = (user && user.companies?.id) || null; - - if (userCompanies) { - if (options?.currentUser?.companiesId) { - where.companiesId = options.currentUser.companiesId; - } - } offset = currentPage * limit; diff --git a/backend/src/db/api/projects.js b/backend/src/db/api/projects.js index 105aed7..12f9439 100644 --- a/backend/src/db/api/projects.js +++ b/backend/src/db/api/projects.js @@ -2,6 +2,8 @@ const db = require('../models'); const FileDBApi = require('./file'); const crypto = require('crypto'); const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + const Sequelize = db.Sequelize; const Op = Sequelize.Op; @@ -164,14 +166,11 @@ module.exports = class ProjectsDBApi { let offset = 0; let where = {}; const currentPage = +filter.page; - const user = (options && options.currentUser) || null; - const userCompanies = (user && user.companies?.id) || null; - - if (userCompanies) { - if (options?.currentUser?.companiesId) { - where.companiesId = options.currentUser.companiesId; - } + const userCompanies = user?.companies?.id || null; + // Apply company filter only for users without full (global) access + if (!globalAccess && userCompanies) { + where.companiesId = userCompanies; } offset = currentPage * limit; diff --git a/backend/src/db/api/projects.js.temp b/backend/src/db/api/projects.js.temp new file mode 100644 index 0000000..6554f48 --- /dev/null +++ b/backend/src/db/api/projects.js.temp @@ -0,0 +1,337 @@ +const db = require('../models'); +const FileDBApi = require('./file'); +const crypto = require('crypto'); +const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + + +const Sequelize = db.Sequelize; +const Op = Sequelize.Op; + +module.exports = class ProjectsDBApi { + static async create(data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + const projects = await db.projects.create( + { + id: data.id || undefined, + + name: data.name || null, + created_on: data.created_on || null, + importHash: data.importHash || null, + createdById: currentUser.id, + updatedById: currentUser.id, + }, + { transaction }, + ); + + await projects.setCompanies(data.companies || null, { + transaction, + }); + + return projects; + } + + static async bulkImport(data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + // Prepare data - wrapping individual data transformations in a map() method + const projectsData = data.map((item, index) => ({ + id: item.id || undefined, + + name: item.name || null, + created_on: item.created_on || null, + importHash: item.importHash || null, + createdById: currentUser.id, + updatedById: currentUser.id, + createdAt: new Date(Date.now() + index * 1000), + })); + + // Bulk create items + const projects = await db.projects.bulkCreate(projectsData, { + transaction, + }); + + // For each item created, replace relation files + + return projects; + } + + static async update(id, data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + const globalAccess = currentUser.app_role?.globalAccess; + + const projects = await db.projects.findByPk(id, {}, { transaction }); + + const updatePayload = {}; + + if (data.name !== undefined) updatePayload.name = data.name; + + if (data.created_on !== undefined) + updatePayload.created_on = data.created_on; + + updatePayload.updatedById = currentUser.id; + + await projects.update(updatePayload, { transaction }); + + if (data.companies !== undefined) { + await projects.setCompanies( + data.companies, + + { transaction }, + ); + } + + return projects; + } + + static async deleteByIds(ids, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + const projects = await db.projects.findAll({ + where: { + id: { + [Op.in]: ids, + }, + }, + transaction, + }); + + await db.sequelize.transaction(async (transaction) => { + for (const record of projects) { + await record.update({ deletedBy: currentUser.id }, { transaction }); + } + for (const record of projects) { + await record.destroy({ transaction }); + } + }); + + return projects; + } + + static async remove(id, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + const projects = await db.projects.findByPk(id, options); + + await projects.update( + { + deletedBy: currentUser.id, + }, + { + transaction, + }, + ); + + await projects.destroy({ + transaction, + }); + + return projects; + } + + static async findBy(where, options) { + const transaction = (options && options.transaction) || undefined; + + const projects = await db.projects.findOne({ where }, { transaction }); + + if (!projects) { + return projects; + } + + const output = projects.get({ plain: true }); + + output.bugs_project = await projects.getBugs_project({ + transaction, + }); + + output.modules_project = await projects.getModules_project({ + transaction, + }); + + output.companies = await projects.getCompanies({ + transaction, + }); + + return output; + } + + static async findAll(filter, globalAccess, options) { + const limit = filter.limit || 0; + let offset = 0; + let where = {}; + const currentPage = +filter.page; + applyTenantScope(where, globalAccess, options); + where.companiesId = userCompanies; + } + + offset = currentPage * limit; + + const orderBy = null; + + const transaction = (options && options.transaction) || undefined; + + let include = [ + { + model: db.companies, + as: 'companies', + }, + ]; + + if (filter) { + if (filter.id) { + where = { + ...where, + ['id']: Utils.uuid(filter.id), + }; + } + + if (filter.name) { + where = { + ...where, + [Op.and]: Utils.ilike('projects', 'name', filter.name), + }; + } + + if (filter.created_onRange) { + const [start, end] = filter.created_onRange; + + if (start !== undefined && start !== null && start !== '') { + where = { + ...where, + created_on: { + ...where.created_on, + [Op.gte]: start, + }, + }; + } + + if (end !== undefined && end !== null && end !== '') { + where = { + ...where, + created_on: { + ...where.created_on, + [Op.lte]: end, + }, + }; + } + } + + if (filter.active !== undefined) { + where = { + ...where, + active: filter.active === true || filter.active === 'true', + }; + } + + if (filter.companies) { + const listItems = filter.companies.split('|').map((item) => { + return Utils.uuid(item); + }); + + where = { + ...where, + companiesId: { [Op.or]: listItems }, + }; + } + + if (filter.createdAtRange) { + const [start, end] = filter.createdAtRange; + + if (start !== undefined && start !== null && start !== '') { + where = { + ...where, + ['createdAt']: { + ...where.createdAt, + [Op.gte]: start, + }, + }; + } + + if (end !== undefined && end !== null && end !== '') { + where = { + ...where, + ['createdAt']: { + ...where.createdAt, + [Op.lte]: end, + }, + }; + } + } + } + + if (globalAccess) { + delete where.companiesId; + } + + const queryOptions = { + where, + include, + distinct: true, + order: + filter.field && filter.sort + ? [[filter.field, filter.sort]] + : [['createdAt', 'desc']], + transaction: options?.transaction, + logging: console.log, + }; + + if (!options?.countOnly) { + queryOptions.limit = limit ? Number(limit) : undefined; + queryOptions.offset = offset ? Number(offset) : undefined; + } + + try { + const { rows, count } = await db.projects.findAndCountAll(queryOptions); + + return { + rows: options?.countOnly ? [] : rows, + count: count, + }; + } catch (error) { + console.error('Error executing query:', error); + throw error; + } + } + + static async findAllAutocomplete( + query, + limit, + offset, + globalAccess, + organizationId, + ) { + let where = {}; + + if (!globalAccess && organizationId) { + where.organizationId = organizationId; + } + + if (query) { + where = { + [Op.or]: [ + { ['id']: Utils.uuid(query) }, + Utils.ilike('projects', 'name', query), + ], + }; + } + + const records = await db.projects.findAll({ + attributes: ['id', 'name'], + where, + limit: limit ? Number(limit) : undefined, + offset: offset ? Number(offset) : undefined, + orderBy: [['name', 'ASC']], + }); + + return records.map((record) => ({ + id: record.id, + label: record.name, + })); + } +}; diff --git a/backend/src/db/api/status_history.js b/backend/src/db/api/status_history.js index 0dd3869..4588ab3 100644 --- a/backend/src/db/api/status_history.js +++ b/backend/src/db/api/status_history.js @@ -2,6 +2,8 @@ const db = require('../models'); const FileDBApi = require('./file'); const crypto = require('crypto'); const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + const Sequelize = db.Sequelize; const Op = Sequelize.Op; @@ -185,12 +187,10 @@ module.exports = class Status_historyDBApi { const currentPage = +filter.page; const user = (options && options.currentUser) || null; - const userCompanies = (user && user.companies?.id) || null; - - if (userCompanies) { - if (options?.currentUser?.companiesId) { - where.companiesId = options.currentUser.companiesId; - } + const userCompanies = user?.companies?.id || null; + // Apply company filter only for users without full access + if (!globalAccess && userCompanies) { + where.companiesId = userCompanies; } offset = currentPage * limit; diff --git a/backend/src/db/api/sub_modules.js b/backend/src/db/api/sub_modules.js index 8eda6b1..084c423 100644 --- a/backend/src/db/api/sub_modules.js +++ b/backend/src/db/api/sub_modules.js @@ -2,6 +2,8 @@ const db = require('../models'); const FileDBApi = require('./file'); const crypto = require('crypto'); const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + const Sequelize = db.Sequelize; const Op = Sequelize.Op; @@ -174,14 +176,11 @@ module.exports = class Sub_modulesDBApi { let offset = 0; let where = {}; const currentPage = +filter.page; - const user = (options && options.currentUser) || null; - const userCompanies = (user && user.companies?.id) || null; - - if (userCompanies) { - if (options?.currentUser?.companiesId) { - where.companiesId = options.currentUser.companiesId; - } + const userCompanies = user?.companies?.id || null; + // Apply company filter only for users without full (global) access + if (!globalAccess && userCompanies) { + where.companiesId = userCompanies; } offset = currentPage * limit; diff --git a/backend/src/db/api/tenantScope.js b/backend/src/db/api/tenantScope.js new file mode 100644 index 0000000..4f88a4e --- /dev/null +++ b/backend/src/db/api/tenantScope.js @@ -0,0 +1,9 @@ +// Helper to apply tenant (company) scoping in findAll methods +function applyTenantScope(where, globalAccess, options) { + const userCompany = options?.currentUser?.companies?.id || null; + if (!globalAccess && userCompany) { + where.companiesId = userCompany; + } +} + +module.exports = { applyTenantScope }; \ No newline at end of file diff --git a/backend/src/db/api/users.js b/backend/src/db/api/users.js index 56e24dd..3a52181 100644 --- a/backend/src/db/api/users.js +++ b/backend/src/db/api/users.js @@ -2,6 +2,8 @@ const db = require('../models'); const FileDBApi = require('./file'); const crypto = require('crypto'); const Utils = require('../utils'); +const { applyTenantScope } = require('./tenantScope'); + const bcrypt = require('bcrypt'); const config = require('../../config'); @@ -319,12 +321,10 @@ module.exports = class UsersDBApi { const currentPage = +filter.page; const user = (options && options.currentUser) || null; - const userCompanies = (user && user.companies?.id) || null; - - if (userCompanies) { - if (options?.currentUser?.companiesId) { - where.companiesId = options.currentUser.companiesId; - } + const userCompanies = user?.companies?.id || null; + // Apply company filter only for users without full (global) access + if (!globalAccess && userCompanies) { + where.companiesId = userCompanies; } offset = currentPage * limit; diff --git a/frontend/src/components/Projects/configureProjectsCols.tsx b/frontend/src/components/Projects/configureProjectsCols.tsx index a5d05b4..2110038 100644 --- a/frontend/src/components/Projects/configureProjectsCols.tsx +++ b/frontend/src/components/Projects/configureProjectsCols.tsx @@ -36,8 +36,9 @@ export const loadColumns = async ( } const hasUpdatePermission = hasPermission(user, 'UPDATE_PROJECTS'); + const globalAccess = user?.app_role?.globalAccess || false; - return [ + const columns: any[] = [ { field: 'name', headerName: 'Name', @@ -46,45 +47,52 @@ export const loadColumns = async ( filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', - editable: hasUpdatePermission, }, - { field: 'created_on', - headerName: 'CreatedOn', + headerName: 'Created On', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', - editable: hasUpdatePermission, - type: 'dateTime', - valueGetter: (params: GridValueGetterParams) => - new Date(params.row.created_on), + valueGetter: (params: GridValueGetterParams) => new Date(params.row.created_on), }, - { field: 'actions', type: 'actions', minWidth: 30, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', - getActions: (params: GridRowParams) => { - return [ -
- -
, - ]; - }, + getActions: (params: GridRowParams) => [ +
+ +
, + ], }, ]; + + // Insert Company column for Super Admin users + if (globalAccess) { + columns.splice(columns.length - 1, 0, { + field: 'companies', + headerName: 'Company', + flex: 1, + minWidth: 150, + valueGetter: (params: GridValueGetterParams) => params.row.companies?.name || '', + headerClassName: 'datagrid--header', + cellClassName: 'datagrid--cell', + }); + } + + return columns; }; diff --git a/frontend/src/pages/_app.tsx b/frontend/src/pages/_app.tsx index d0a10b7..0db3cc1 100644 --- a/frontend/src/pages/_app.tsx +++ b/frontend/src/pages/_app.tsx @@ -15,6 +15,7 @@ import 'intro.js/introjs.css'; import { appWithTranslation } from 'next-i18next'; import '../i18n'; import IntroGuide from '../components/IntroGuide'; +import html2canvas from 'html2canvas'; import { appSteps, landingSteps, @@ -79,9 +80,8 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) { if (event.data === 'getScreenshot') { try { - const html2canvas = (await import('html2canvas')).default; - const canvas = await html2canvas(document.body, { useCORS: true }); - const url = canvas.toDataURL('image/jpeg', 0.8); + const canvasElement = await html2canvas(document.body, { useCORS: true }); + const url = canvasElement.toDataURL('image/jpeg', 0.8); event.source?.postMessage({ iframeScreenshot: url }, event.origin); } catch (e) { console.error('html2canvas failed', e); diff --git a/frontend/src/pages/_app.tsx.temp b/frontend/src/pages/_app.tsx.temp new file mode 100644 index 0000000..331aaf4 --- /dev/null +++ b/frontend/src/pages/_app.tsx.temp @@ -0,0 +1,192 @@ +import React from 'react'; +import type { AppProps } from 'next/app'; +import type { ReactElement, ReactNode } from 'react'; +import type { NextPage } from 'next'; +import Head from 'next/head'; +import { store } from '../stores/store'; +import { Provider } from 'react-redux'; +import '../css/main.css'; +import axios from 'axios'; +import { baseURLApi } from '../config'; +import { useRouter } from 'next/router'; +import ErrorBoundary from '../components/ErrorBoundary'; +import DevModeBadge from '../components/DevModeBadge'; +import 'intro.js/introjs.css'; +import { appWithTranslation } from 'next-i18next'; +import '../i18n'; +import IntroGuide from '../components/IntroGuide'; +import html2canvas from 'html2canvas'; +import { + appSteps, + landingSteps, + loginSteps, + usersSteps, + rolesSteps, +} from '../stores/introSteps'; + +// Initialize axios +axios.defaults.baseURL = process.env.NEXT_PUBLIC_BACK_API + ? process.env.NEXT_PUBLIC_BACK_API + : baseURLApi; + +axios.defaults.headers.common['Content-Type'] = 'application/json'; + +export type NextPageWithLayout

, IP = P> = NextPage< + P, + IP +> & { + getLayout?: (page: ReactElement) => ReactNode; +}; + +type AppPropsWithLayout = AppProps & { + Component: NextPageWithLayout; +}; + +function MyApp({ Component, pageProps }: AppPropsWithLayout) { + // Use the layout defined at the page level, if available + const getLayout = Component.getLayout || ((page) => page); + const router = useRouter(); + const [stepsEnabled, setStepsEnabled] = React.useState(false); + const [stepName, setStepName] = React.useState(''); + const [steps, setSteps] = React.useState([]); + + axios.interceptors.request.use( + (config) => { + const token = localStorage.getItem('token'); + + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } else { + delete config.headers.Authorization; + } + + return config; + }, + (error) => { + return Promise.reject(error); + }, + ); + + // TODO: Remove this code in future releases + React.useEffect(() => { + const handleMessage = async (event: MessageEvent) => { + if (event.data === 'getLocation') { + event.source?.postMessage( + { iframeLocation: window.location.pathname }, + event.origin, + ); + return; + } + + if (event.data === 'getScreenshot') { + const canvasElement = await html2canvas(document.body, { useCORS: true }); + const url = canvasElement.toDataURL('image/jpeg', 0.8); + event.source?.postMessage({ iframeScreenshot: url }, event.origin); + } catch (e) { + console.error('html2canvas failed', e); + event.source?.postMessage({ iframeScreenshot: null }, event.origin); + } + } + }; + + window.addEventListener('message', handleMessage); + return () => window.removeEventListener('message', handleMessage); + }, []); + + React.useEffect(() => { + const isCompleted = (stepKey: string) => { + return localStorage.getItem(`completed_${stepKey}`) === 'true'; + }; + if (router.pathname === '/login' && !isCompleted('loginSteps')) { + setSteps(loginSteps); + setStepName('loginSteps'); + setStepsEnabled(true); + } else if (router.pathname === '/' && !isCompleted('landingSteps')) { + setSteps(landingSteps); + setStepName('landingSteps'); + setStepsEnabled(true); + } else if (router.pathname === '/dashboard' && !isCompleted('appSteps')) { + setTimeout(() => { + setSteps(appSteps); + setStepName('appSteps'); + setStepsEnabled(true); + }, 1000); + } else if ( + router.pathname === '/users/users-list' && + !isCompleted('usersSteps') + ) { + setTimeout(() => { + setSteps(usersSteps); + setStepName('usersSteps'); + setStepsEnabled(true); + }, 1000); + } else if ( + router.pathname === '/roles/roles-list' && + !isCompleted('rolesSteps') + ) { + setTimeout(() => { + setSteps(rolesSteps); + setStepName('rolesSteps'); + setStepsEnabled(true); + }, 1000); + } else { + setSteps([]); + setStepsEnabled(false); + } + }, [router.pathname]); + + const handleExit = () => { + setStepsEnabled(false); + }; + + const title = 'Bug reporting solution'; + const description = 'Bug reporting solution generated by Flatlogic'; + const url = 'https://flatlogic.com/'; + const image = `https://flatlogic.com/logo.svg`; + const imageWidth = '1920'; + const imageHeight = '960'; + + return ( + + {getLayout( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + {(process.env.NODE_ENV === 'development' || + process.env.NODE_ENV === 'dev_stage') && } + , + )} + + ); +} + +export default appWithTranslation(MyApp);