Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2022-08-25 release #1427

Merged
merged 313 commits into from
Aug 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
313 commits
Select commit Hold shift + click to select a range
9407b7d
fix: merge conflicts
emilyjablonski Mar 10, 2022
75e0218
Merge branch '989/partner-user-groups' of https://github.com/CityOfDe…
YazeedLoonat Mar 10, 2022
157ca8c
fix: now can save without ami info
YazeedLoonat Mar 10, 2022
0dbf5bc
fix: for when rent value is missing
YazeedLoonat Mar 10, 2022
6c91c77
fix: occupancy max 8, selects can be deselected
YazeedLoonat Mar 10, 2022
a26a27c
fix: add hearing mobility visual to a11y features (#1032)
emilyjablonski Mar 10, 2022
58ba6cb
Merge remote-tracking branch 'detroit/dev' into 989/partner-user-groups
YazeedLoonat Mar 10, 2022
ae5ea59
fix: removing placeholder
YazeedLoonat Mar 10, 2022
392b5bd
fix: readding label, removing placeholder
YazeedLoonat Mar 10, 2022
d11a0ce
fix: was too specific
YazeedLoonat Mar 10, 2022
19788fa
fix(backend): import script percentageOfIncomeValue retrieval logic (…
pbn4 Mar 10, 2022
137317e
fix: ami percentage
seanmalbert Mar 10, 2022
889ddd9
Merge branch '989/partner-user-groups' of https://github.com/CityOfDe…
seanmalbert Mar 10, 2022
6e335e0
Merge pull request #1025 from CityOfDetroit/989/partner-user-groups
YazeedLoonat Mar 10, 2022
2fd21de
fix: listing view detail list order
seanmalbert Mar 10, 2022
852a4a5
fix: partner listing grid address column
seanmalbert Mar 10, 2022
feda799
fix: properly set monthlyRentDeterminationType in import script
seanmalbert Mar 11, 2022
9ea7c16
fix: account for space after comma in spreadsheet for split types
seanmalbert Mar 11, 2022
4d3169a
fix: hide hmi link if no hmi table (#1035)
emilyjablonski Mar 11, 2022
1ab6764
feat: catch up for migrations (#1030)
YazeedLoonat Mar 11, 2022
a3ec517
fix: fix for when rent range was empty (#1038)
YazeedLoonat Mar 11, 2022
bac51af
fix: styling issues in features section (#1039)
emilyjablonski Mar 11, 2022
7364297
fix: preview close alert style fixes (#1040)
emilyjablonski Mar 11, 2022
1506a13
fix: stray zero if no programs (#1042)
emilyjablonski Mar 11, 2022
ef2b80f
fix: pagination fix for partner listing grid (#1041)
YazeedLoonat Mar 11, 2022
7bb7ec6
fix: update neighborhood list, unit type string
emilyjablonski Mar 14, 2022
6ed75a4
1045/allows re-request confirmation on partners (#1047)
YazeedLoonat Mar 15, 2022
c73c1ec
fix: update neighborhood list, unit type string
emilyjablonski Mar 15, 2022
bde897e
fix: linting fixes (#1057)
YazeedLoonat Mar 15, 2022
774a73d
fix: fixes pagination issue on detroit user grid (#1063)
YazeedLoonat Mar 18, 2022
6629c89
feat(backend): update listing filters (#1050)
pbn4 Mar 24, 2022
4127092
feat: Update listing table columns (#1067)
dominikx96 Mar 24, 2022
91107b2
feat: filters to show only active listings (#1070)
seanmalbert Mar 29, 2022
bf59226
feat(backend): add marketingType to Listing entity
pbn4 Mar 29, 2022
81e64bb
Bump actions/setup-node from 2.5.0 to 3 (#999)
dependabot[bot] Mar 30, 2022
c2b5e86
fix: frontend type fix
emilyjablonski Mar 30, 2022
963bbc8
fix: change verified string (#1088)
emilyjablonski Mar 30, 2022
b652907
feat(backend): add marketingType to Listing entity
pbn4 Mar 31, 2022
0924c15
fix: select programs working with single jurisdiction (#1100)
seanmalbert Mar 31, 2022
5219f85
Bump actions/checkout from 2 to 3 (#1010)
dependabot[bot] Apr 5, 2022
703f01f
fix: verify link should work on second application tab (#1068)
emilyjablonski Apr 5, 2022
b415d26
feat: exposing leasing company website (#1069)
YazeedLoonat Apr 5, 2022
7429347
feat: adds unit summaries to listings list to backend (#1077)
seanmalbert Apr 5, 2022
1e05cc2
78/favorites refactor test2 (#1089)
YazeedLoonat Apr 5, 2022
cab7164
feat: load overlay to partner listings grid (#1116)
seanmalbert Apr 5, 2022
866c1ab
feat: disables overdue listings status cron (#1109)
seanmalbert Apr 6, 2022
d0bcfda
feat: Remove signup subscription fields (#1112)
dominikx96 Apr 6, 2022
415be65
feat: Add summary tables into the listing (#1118)
dominikx96 Apr 6, 2022
52ea058
feat(backend): create property.region from property.neighborhood (#1110)
pbn4 Apr 8, 2022
9c49fb2
fix: about page content edit and margin top and bottom fix (#1133)
adriencyberspace Apr 11, 2022
316ed9d
feat: updated content & styles on homepage, footer
jaredcwhite Apr 11, 2022
0c05a69
fix: move new copy to translations
jaredcwhite Apr 11, 2022
76d5c96
feat: update email copy (#1135)
adriencyberspace Apr 12, 2022
0ef926d
feat: can add a marketing status to a listing in partners (#1128)
emilyjablonski Apr 12, 2022
7de0195
fix: fix migration to check for new object (#1139)
emilyjablonski Apr 13, 2022
fc5c008
2022-04-06 sync upstream (#1132)
seanmalbert Apr 14, 2022
f4ad494
feat: update summary tables and tags with coming soon (1076) (1098) (…
emilyjablonski Apr 14, 2022
f28dae2
chore: merge dev and resolve conflicts
seanmalbert Apr 14, 2022
7de874c
fix: listing list dupes in pagination (#1140)
seanmalbert Apr 14, 2022
d90ad44
feat: add 100 to ag page options (#1149)
seanmalbert Apr 14, 2022
bf295e0
feat: Add .5 and 1.5 bathroom options to min and max dropdown in Add …
adriencyberspace Apr 15, 2022
49b74e7
feat: disable mfa for Detroit (#1148)
seanmalbert Apr 15, 2022
58101d0
fix: adds check for unitSummaries?.unitGroupSummary on listing (#1156)
seanmalbert Apr 18, 2022
9532450
973/favorites on dashboard (#1095)
YazeedLoonat Apr 18, 2022
b9e3bba
fix: homepage layout/copy
jaredcwhite Apr 18, 2022
5acf743
feat: show tags on listing cards for community programs, a11y (#1146)
emilyjablonski Apr 19, 2022
1b94d2a
fix: improve presentation of the City regions section
jaredcwhite Apr 19, 2022
3a9182b
Feature/region enum (#1137)
dominikx96 Apr 20, 2022
73d8e8c
fix: update styling of coming soon tag (#1154)
emilyjablonski Apr 20, 2022
92c323c
1091/listing sort order (#1157)
seanmalbert Apr 20, 2022
da75c46
fix: wrap DashBlock anchor tag in Link component to display selected …
adriencyberspace Apr 20, 2022
f4c410e
chore: replace hero background image (for now)
jaredcwhite Apr 21, 2022
4bf1988
Merge pull request #1134 from CityOfDetroit/1060/homepage-and-footer-…
jaredcwhite Apr 21, 2022
3f88755
fix: eslint errors in dev (#1163)
adriencyberspace Apr 22, 2022
234b83c
1115/min max validation (#1155)
adriencyberspace Apr 25, 2022
67d298a
fix: error when passing empty string as phone number to usToIntlPhone…
adriencyberspace Apr 25, 2022
c5c4d58
feat(backend): update how order by comingSoon works (#1174)
pbn4 Apr 25, 2022
6a9e8a0
fix: coming soon tag color on listing detail page (#1170)
emilyjablonski Apr 25, 2022
b4ab573
fix: cannot update waitlist status to open (#1171)
emilyjablonski Apr 25, 2022
c621a05
feat: new verified tag icon (#1172)
emilyjablonski Apr 25, 2022
37dc7e2
feat: add new sign up link to home page (#1173)
emilyjablonski Apr 25, 2022
fe4b4e0
style: add void before trigger functions to avoid eslint errors (#1178)
adriencyberspace Apr 25, 2022
173a822
style: Arabic RTL layout changes (#1166)
adriencyberspace Apr 27, 2022
66ecfb3
feat: tooltip component
dominikx96 Apr 27, 2022
174cb6d
* feat: updates to UI of public listing filters (#1138)
YazeedLoonat Apr 27, 2022
12ee52d
1083/header hover issues (#1177)
ColinBuyck Apr 27, 2022
b2a42da
fix: add leasing agent address field back to listing form (#1195)
emilyjablonski Apr 28, 2022
2e08a02
1168/arabic listing section overlap (#1184)
adriencyberspace Apr 28, 2022
0492c46
fix: check for empty translations before sending to google translate …
emilyjablonski Apr 28, 2022
2a8e86b
1167/page-not-found-ui (#1185)
adriencyberspace Apr 28, 2022
f3f0607
feat: default what to expect text and additional what to expect field…
emilyjablonski Apr 29, 2022
8780f71
fix: authservice.token data null issue (#2703) (#1197)
seanmalbert Apr 29, 2022
5f5dbfe
fix: show street2 for addresses (#1209)
emilyjablonski Apr 29, 2022
5e84d3c
feat: set default what to expect text for coming soon listings (#1210)
emilyjablonski Apr 29, 2022
ee32558
fix: update homepage subtext copy (#1217)
emilyjablonski Apr 29, 2022
0288219
fix: remove link to eligibility calculator (#1216)
emilyjablonski Apr 29, 2022
9208829
fix: Fix tooltip visibility (#1212)
dominikx96 Apr 29, 2022
a30566a
Removes listing queue imports (#1211)
seanmalbert Apr 29, 2022
6d4f40e
feat: adds new filter, fix region (#1214)
YazeedLoonat Apr 29, 2022
902e534
fix: content update (#1220)
ColinBuyck May 2, 2022
8aaa37a
style: listing page rtl css changes (#1221)
adriencyberspace May 2, 2022
79877a2
fix: fixes bedrooom and accessibility filters
YazeedLoonat May 2, 2022
abe4ea4
1090/resources page (#1181)
jaredcwhite May 2, 2022
947c9f9
2022-05-03 sync main (#1228)
seanmalbert May 4, 2022
b1c17f7
1202/min max rent filter validation (#1230)
adriencyberspace May 5, 2022
2e5484b
feat: add new ami charts (#1236)
emilyjablonski May 5, 2022
b0ede82
1188/terms and conditions (#1233)
ColinBuyck May 5, 2022
47fe5e5
fix: add missing translations (#1238)
emilyjablonski May 5, 2022
8418d02
1225/resources translations (#1239)
jaredcwhite May 5, 2022
c406b35
1014/remap neighborhood fix (#1240)
pbn4 May 6, 2022
d3895ef
1234/minor copy updates (#1241)
ColinBuyck May 6, 2022
b2f072d
fix: updated privacy policy (#1242)
ColinBuyck May 6, 2022
53a7681
fix: add new google translate strings (#1237)
emilyjablonski May 6, 2022
88d01c9
* feat: tooltip scroll bug
adriencyberspace May 6, 2022
0302733
feat: adds sorting to partners listing grid (#1232)
seanmalbert May 9, 2022
bc01d3a
style: rtl margin and padding fixes (#1250)
adriencyberspace May 9, 2022
7d9fb60
1245 & 1247 fix page not found and pagination (#1255)
seanmalbert May 9, 2022
1d8fb74
fix: add missing translations (#1259)
emilyjablonski May 10, 2022
a821b07
feat: add new hero image (#1260)
adriencyberspace May 10, 2022
31c7e0a
style: change primary color from blue to green (#1261)
adriencyberspace May 10, 2022
3650509
fix: min max rent inputs have type number, and padding fix on error (…
adriencyberspace May 11, 2022
76f8e61
1252/mobile fixes (#1268)
adriencyberspace May 11, 2022
5187d0e
refactor: remove common app question from listing form (#1262)
emilyjablonski May 11, 2022
34dc815
fix: removed made by exygy footer (#1277)
ColinBuyck May 12, 2022
4328f3c
fix: Fixes favorite saving issues (#1266)
YazeedLoonat May 12, 2022
37f9360
feat: update terms copy (#1275)
emilyjablonski May 12, 2022
f513be3
1243/filter form accessibility (#1274)
adriencyberspace May 17, 2022
90c9fc3
feat: add sections into listing detail page (#1280)
dominikx96 May 18, 2022
f62b45b
fix: remove duplicated sections (#1282)
dominikx96 May 19, 2022
0565fa4
feat: creating views for public and partner lists (#1271)
YazeedLoonat May 19, 2022
fc8bc77
1165/design items (#1270)
adriencyberspace May 23, 2022
0a1a40b
1226/casing (#1283)
adriencyberspace May 23, 2022
db050bb
1248/mobile scroll issue (#1279)
ColinBuyck May 23, 2022
c0bb725
test: public cypress tests (#1257)
emilyjablonski May 26, 2022
5c2bc91
* fix: filter buttons missing on mobile
ColinBuyck May 31, 2022
b837f80
fix: check for existing marketing season (#1295)
emilyjablonski May 31, 2022
86facdf
fix: netlify oom build issues (#1299)
emilyjablonski Jun 1, 2022
14e17e7
feat: automatically set region based on neighborhood (#1300)
emilyjablonski Jun 3, 2022
6aa935c
feat: new what to expect default text based on marketing (#1298)
emilyjablonski Jun 3, 2022
456a558
fix: scrollTo fix to pagination (#1288)
ColinBuyck Jun 3, 2022
873ca1b
tests: creates/updates cypress tests for detroit
YazeedLoonat Jun 6, 2022
5d7e2fa
fix: region and variable naming update (#1304)
ColinBuyck Jun 7, 2022
341494a
feat: adding new features and fixing labelling (#1307)
YazeedLoonat Jun 9, 2022
c6c1a1e
fix: added translations and table message
ColinBuyck Jun 9, 2022
2777912
feat: adds update region script (#1320)
seanmalbert Jun 10, 2022
7027b7d
fix: conditional display of section 8 message
ColinBuyck Jun 10, 2022
81e361d
fix: remove console log
ColinBuyck Jun 10, 2022
fc0c312
fix: added form field and strings to listing form
ColinBuyck Jun 10, 2022
8b59146
fix: adding section 8 field to backend
ColinBuyck Jun 10, 2022
14867dd
refactor: partners cleanup of unused fields, translations
ColinBuyck Jun 10, 2022
d336ad4
feat: bringing percent of income in (#1319)
YazeedLoonat Jun 10, 2022
d78d340
fix: updating seed files to have section 8
ColinBuyck Jun 13, 2022
3ed6651
fix: data showing in form data but not persisting
ColinBuyck Jun 13, 2022
f851d41
fix: now storing user input
ColinBuyck Jun 13, 2022
90470db
fix: remove rental assistance
ColinBuyck Jun 13, 2022
e037dd1
fix: only remove rental assistance on partners side
ColinBuyck Jun 13, 2022
5e1c32b
fix: display rental assistance section only if section 8 specified
ColinBuyck Jun 13, 2022
63a0848
fix: update field check to new variable name
ColinBuyck Jun 13, 2022
e221bf0
Merge branch 'dev' into 1310/partners-section-8-update
ColinBuyck Jun 14, 2022
c441e3d
fix: vary listing seeds for better testing
ColinBuyck Jun 14, 2022
b8e6b7b
fix: remove typo in seed files
ColinBuyck Jun 14, 2022
e2cefe2
fix: fixing forgot password redirect (#1334)
YazeedLoonat Jun 15, 2022
bb88d53
fix: translation update for forgot password email (#1335)
YazeedLoonat Jun 15, 2022
2075e80
Merge branch '1310/partners-section-8-update' into 1321/listing-secti…
ColinBuyck Jun 21, 2022
37f435a
Merge branch 'dev' into 1321/listing-section-8-details
ColinBuyck Jun 21, 2022
dff295b
fix: split translations to allow for bolding style
ColinBuyck Jun 21, 2022
cfda50e
fix: split up arabic translations to enable bolding
ColinBuyck Jun 21, 2022
85e96e6
Merge branch '1310/partners-section-8-update' into 1322/section-8-fil…
ColinBuyck Jun 21, 2022
cb96607
fix: adding section8Acceptance to filtering files
ColinBuyck Jun 22, 2022
b9620a5
fix: further debugging of filtering issue
ColinBuyck Jun 22, 2022
65806da
fix: filtering functional after adding to listing-filter-params.ts
ColinBuyck Jun 22, 2022
8959f9a
fix: added translations for filter label
ColinBuyck Jun 22, 2022
9121d49
fix: remove console logs and update styling
ColinBuyck Jun 22, 2022
3780461
fix: clean up testing lines
ColinBuyck Jun 22, 2022
79232f2
1310/partners section 8 update (#1333)
ColinBuyck Jun 23, 2022
045d7c7
1311/adding utility options (#1345)
ColinBuyck Jun 23, 2022
67719d0
Merge branch 'dev' into 1321/listing-section-8-details
ColinBuyck Jun 23, 2022
e30697f
fix: additional fees header showing bug fix
ColinBuyck Jun 23, 2022
075ca14
fix: clean up deleted files from merge
ColinBuyck Jun 23, 2022
70b7b94
fix: removed unused rental assistance references
ColinBuyck Jun 23, 2022
b7d7a7e
Merge branch 'dev' into 1322/section-8-filtering
ColinBuyck Jun 23, 2022
1cd1b03
fix: remove unused detail rental assistance from merge
ColinBuyck Jun 23, 2022
f257702
fix: whitespace changes
ColinBuyck Jun 24, 2022
9b5edc5
Merge pull request #1356 from CityOfDetroit/additional-fees-bug-fix-c…
ColinBuyck Jun 24, 2022
9f5fd9b
Merge pull request #1355 from CityOfDetroit/1322/section-8-filtering-…
ColinBuyck Jun 24, 2022
131500d
Merge branch 'dev' into 1321/listing-section-8-details-clean
ColinBuyck Jun 28, 2022
3da371a
Merge pull request #1354 from CityOfDetroit/1321/listing-section-8-de…
ColinBuyck Jun 28, 2022
cc50a78
fix: update gitignore and github workflows (#1359)
ColinBuyck Jun 28, 2022
603c4ba
fix: changed waitlist status default to open (#1360)
ColinBuyck Jun 28, 2022
bfd86ac
1314/copy updates unit group partners (#1361)
dominikx96 Jun 28, 2022
76930c4
fix: corrected string to match JSON (#1366)
ColinBuyck Jun 29, 2022
dfb4652
1338/sro removal (#1364)
ColinBuyck Jun 30, 2022
e9a16e4
fix: restoring changes of previous branch (#1358)
ColinBuyck Jul 5, 2022
45e9691
refactor: update translations (#1362)
dominikx96 Jul 5, 2022
201beb8
feat: core uptake 6-1-22 (#1357)
ColinBuyck Jul 7, 2022
c9edc93
fix: button and icon updated
ColinBuyck Jul 11, 2022
8629478
fix: button spacing updated
ColinBuyck Jul 11, 2022
ef522cf
fix: support for both filter strings
ColinBuyck Jul 11, 2022
35eba17
fix: spacing in mobile
ColinBuyck Jul 12, 2022
45282b4
fix: full-width button on mobile
ColinBuyck Jul 12, 2022
5597dca
feat: Add FontAwesome icon support (#2768)
seanmalbert Jul 12, 2022
79014f6
Merge branch '2768/font-awesome' into 1344/prominent-filter-button
ColinBuyck Jul 12, 2022
51d5769
fix: updated icon on filtered page
ColinBuyck Jul 12, 2022
7a661f3
fix: removed hover state from search icon
ColinBuyck Jul 13, 2022
6814990
fix: confirmed casing of filter button
ColinBuyck Jul 13, 2022
e35efe5
fix: added translations
ColinBuyck Jul 13, 2022
d72755a
2819/get assistance page (#1386)
adriencyberspace Jul 14, 2022
08ebefb
1337/homepage coming soon (#1370)
ColinBuyck Jul 19, 2022
cc4c057
refactor: remove rental assistance section (#1393)
dominikx96 Jul 19, 2022
3b3b743
Merge branch dev into 1344/prominent-filter-button
ColinBuyck Jul 19, 2022
d738b55
Merge pull request #1387 from CityOfDetroit/1344/prominent-filter-button
ColinBuyck Jul 19, 2022
0bc19d3
fix: hide management section if there is no data (#1401)
dominikx96 Jul 20, 2022
f6d8c9b
feat: add the "costs not included" field helper (#1402)
dominikx96 Jul 20, 2022
b1204b4
build: updates ts-node version (#2757) (#1394)
seanmalbert Jul 20, 2022
f385f88
fix: icon changes color on hover (#1400)
ColinBuyck Jul 20, 2022
2729af6
fix: user repo error (#1404)
seanmalbert Jul 26, 2022
4821cd9
feat: add the last updated column (#1406)
dominikx96 Jul 26, 2022
b0b608b
feat: allow multiple photo uploads for listings
jaredcwhite Jul 28, 2022
2d41b73
feat: set up separate drawer state from form images list
jaredcwhite Jul 29, 2022
b4d1146
feat: add Make primary photo button
jaredcwhite Jul 29, 2022
78491bf
test: fix the add photos test
jaredcwhite Aug 1, 2022
57a6762
test: fix save button id
jaredcwhite Aug 1, 2022
853bdd5
fix: remove empty image data for edit listings
jaredcwhite Aug 3, 2022
6270ea2
fix: default dropzone upload to single file, add maxFiles
jaredcwhite Aug 5, 2022
8172320
1373/housing basics page (#1405)
ColinBuyck Aug 9, 2022
6145519
fix: removed extra header padding (#1412)
ColinBuyck Aug 9, 2022
a701235
fix: added placeholder to field (#1416)
ColinBuyck Aug 9, 2022
7a4286c
fix: card vertical spacing fix (#1413)
ColinBuyck Aug 9, 2022
000fa07
1348/partners listing search (#1407)
ColinBuyck Aug 9, 2022
3760454
fix: updated homepage spacing (#1414)
ColinBuyck Aug 9, 2022
4982c50
1388/basics card section (#1411)
ColinBuyck Aug 9, 2022
7b9c2f4
1389/content + translation updates (#1409)
ColinBuyck Aug 9, 2022
66b2cda
fix: translation strings and simplied boolean expression
jaredcwhite Aug 15, 2022
1162181
1419/housing basics cleanup (#1420)
ColinBuyck Aug 17, 2022
804f0a7
fix: update labels and button placement in Photos upload
jaredcwhite Aug 17, 2022
01105e1
fix: address some UI feedback for listing photo upload
jaredcwhite Aug 19, 2022
abf8308
fix: max upload image count, translation keys
jaredcwhite Aug 22, 2022
094a317
test: verify multiple photo upload in E2E test
jaredcwhite Aug 24, 2022
528957a
test: rename image upload with uuid
jaredcwhite Aug 24, 2022
55271bf
Merge pull request #1410 from CityOfDetroit/1342/multiple-photos-upload
jaredcwhite Aug 24, 2022
95a2615
feat(users): add filtering and sorting to users (#1425)
ludtkemorgan Aug 25, 2022
6384b26
chore: merge dev
seanmalbert Aug 25, 2022
00581d2
Fix code style issues with ESLint
lint-action Aug 25, 2022
3f5053e
Fix code style issues with Prettier
lint-action Aug 25, 2022
8fdc5be
build: bad merge for listings-query-params
seanmalbert Aug 25, 2022
208072d
Merge remote-tracking branch 'remotes/origin/2022-08-25-release' into…
seanmalbert Aug 25, 2022
0ca3ee8
Fix code style issues with ESLint
lint-action Aug 25, 2022
f160511
build: bad merge of sites/partners/pages/users
seanmalbert Aug 25, 2022
ebfeb2c
style: unnecessary type assertion in FormUserManage
seanmalbert Aug 25, 2022
e5f6739
Revert "Merge pull request #1410 from CityOfDetroit/1342/multiple-pho…
seanmalbert Aug 25, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 0 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,20 +103,6 @@ On every merge to master (roughly bi-weekly), a release of the backend/core and

Once staging has been QAed, we manually update `production`.

### Committing, Versioning, and Releasing

We are using [lerna](https://lerna.js.org/) as a monorepo management tool. It automatically versions, releases, and generates a changelog across our packages. In conjunction with lerna we are also using [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/), a specification for commit messages that helps lerna understand what level of change each commit is in order to automate our processes.

On commit, two steps automatically run: (1) linting and (2) a verification of the conventional commit standard. We recommend not running `git commit` and instead globally installing commitizen (`npm install -g commitizen`) and committing with `git cz` which will run a commit message CLI. The CLI asks a series of questions and builds the commit message for you in the conventional commit format. You can also `git commit` with a message if you are 100% confident you have indicated the right level of change (it will still lint the message format).

In addition to commits needing to be formatted as conventional commits, if you are making version changes across multiple packages, your commits must also be separated by package in order to not improperly version a package.

On every merge to dev, a pre-release of the ui-components package is automatically published to npm, and our Netlify dev environment is updated.

On every merge to master (bi-weekly), a release of the backend/core and ui-components packages are automatically published to npm, and our Netlify staging environment is updated.

Once staging has been QAed, we manually update production.

### Pull Requests

Pull requests are opened to the dev branch, not to master. When opening a pull request please fill out the entire pull request template which includes tagging the issue your PR is related to, a description of your PR, indicating the type of change, including details for the reviewer about how to test your PR, and a testing checklist. Additionally, officially link the issue to the PR using GitHub's linking UI.
Expand Down
2 changes: 1 addition & 1 deletion backend/core/scripts/import-listings-basic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ function destructureYearBuilt(yearBuilt: string): number {
}

if (yearBuilt.includes("/")) {
const [year1, year2] = yearBuilt.split("/")
const [_year1, year2] = yearBuilt.split("/")
return Number.parseInt(year2)
}

Expand Down
2 changes: 1 addition & 1 deletion backend/core/scripts/import-listings-from-csv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ async function main() {
}

// Add data about unitsSummaries
const unitsSummaries: UnitsSummaryImport[] = []
// const unitsSummaries: UnitsSummaryImport[] = []
// TODO: Update with new unit groups model
// if (listingFields["Number 0BR"]) {
// unitsSummaries.push({
Expand Down
6 changes: 3 additions & 3 deletions backend/core/scripts/import-realpages-availability-report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,13 +115,13 @@ async function main(): Promise<void> {
}
}

const listingsService = new client.ListingsService()
const listing = await listingsService.retrieve({ id: args.listingId })
// const listingsService = new client.ListingsService()
// const listing = await listingsService.retrieve({ id: args.listingId })
// TODO: Update with new unit groups model
// const listingUnitTypeNameSummaryMap = listing.unitsSummary.reduce((a, s) => {
// return { ...a, [s.unitType.name]: s }
// }, {})
const listingUnitTypeNameSummaryMap = {}
// const listingUnitTypeNameSummaryMap = {}

// Make sure that the listing has all specified mapped unit type names.
/* const listingUnitTypeNames = new Set(Object.keys(listingUnitTypeNameSummaryMap))
Expand Down
3 changes: 0 additions & 3 deletions backend/core/src/ami-charts/entities/ami-chart.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@ import {
PrimaryGeneratedColumn,
UpdateDateColumn,
} from "typeorm"
import { Expose, Type } from "class-transformer"
import { IsDate, IsDefined, IsString, IsUUID, ValidateNested } from "class-validator"
import { AmiChartItem } from "./ami-chart-item.entity"
import { ValidationsGroupsEnum } from "../../shared/types/validations-groups-enum"
import { Jurisdiction } from "../../jurisdictions/entities/jurisdiction.entity"

@Entity()
Expand Down
4 changes: 2 additions & 2 deletions backend/core/src/auth/dto/user-filter-type-to-field-map.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { UserFilterKeys } from "../types/user-filter-keys"

export const userFilterTypeToFieldMap: Record<keyof typeof UserFilterKeys, string> = {
isPartner: "user_roles.isPartner",
isPortalUser: "user_roles",
isPartner: "userRoles.isPartner",
isPortalUser: "userRoles",
}
39 changes: 22 additions & 17 deletions backend/core/src/auth/services/user.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
UnauthorizedException,
} from "@nestjs/common"
import { InjectRepository } from "@nestjs/typeorm"
import { DeepPartial, FindConditions, Repository } from "typeorm"
import { Brackets, DeepPartial, FindConditions, Repository } from "typeorm"
import { paginate, Pagination, PaginationTypeEnum } from "nestjs-typeorm-paginate"
import { decode, encode } from "jwt-simple"
import dayjs from "dayjs"
Expand Down Expand Up @@ -108,11 +108,11 @@ export class UserService {
PaginationType: PaginationTypeEnum.TAKE_AND_SKIP,
}
// https://www.npmjs.com/package/nestjs-typeorm-paginate
const distinctIDQB = this._getQb(false)
const distinctIDQB = this.userRepository.getQb()
distinctIDQB.select("user.id")
distinctIDQB.groupBy("user.id")
distinctIDQB.orderBy("user.id")
const qb = this._getQb()
const qb = this.userRepository.getQb()

if (params.filter) {
addFilters<Array<UserFilterParams>, typeof userFilterTypeToFieldMap>(
Expand All @@ -126,12 +126,30 @@ export class UserService {
qb
)
}

if (params.search) {
distinctIDQB.andWhere(
new Brackets((subQb) => {
subQb.where("user.firstName ILIKE :search", { search: `%${params.search}%` })
subQb.orWhere("user.lastName ILIKE :search", { search: `%${params.search}%` })
subQb.orWhere("user.email ILIKE :search", { search: `%${params.search}%` })
subQb.orWhere("leasingAgentInListings.name ILIKE :search", {
search: `%${params.search}%`,
})
subQb.orWhere(
"CONCAT(user.firstName, ' ', user.lastName, ' ', user.email, ' ', leasingAgentInListings.name) ILIKE :search",
{ search: `%${params.search}%` }
)
})
)
}

const distinctIDResult = await paginate<User>(distinctIDQB, options)

qb.andWhere("user.id IN (:...distinctIDs)", {
distinctIDs: distinctIDResult.items.map((elem) => elem.id),
})
const result = await qb.getMany()
const result = distinctIDResult.items.length ? await qb.getMany() : []
/**
* admin are the only ones that can access all users
* so this will throw on the first user that isn't their own (non admin users can access themselves)
Expand Down Expand Up @@ -448,19 +466,6 @@ export class UserService {
return this.authService.generateAccessToken(user)
}

private _getQb(withSelect = true) {
const qb = this.userRepository.createQueryBuilder("user")
if (withSelect) {
qb.leftJoinAndSelect("user.leasingAgentInListings", "listings")
qb.leftJoinAndSelect("user.roles", "user_roles")
} else {
qb.leftJoin("user.leasingAgentInListings", "listings")
qb.leftJoin("user.roles", "user_roles")
}

return qb
}

async invitePartnersPortalUser(dto: UserInviteDto, authContext: AuthContext) {
const password = crypto.randomBytes(8).toString("hex")
const user = await this._createUser(
Expand Down
15 changes: 15 additions & 0 deletions backend/core/src/listings/dto/listings-query-params.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
IsOptional,
IsString,
ValidateNested,
MinLength,
} from "class-validator"
import { ValidationsGroupsEnum } from "../../shared/types/validations-groups-enum"
import { OrderByFieldsEnum } from "../types/listing-orderby-enum"
Expand Down Expand Up @@ -65,4 +66,18 @@ export class ListingsQueryParams extends PaginationAllowsAllQueryParams {
@IsOptional({ groups: [ValidationsGroupsEnum.default] })
@IsEnum(OrderDirEnum, { groups: [ValidationsGroupsEnum.default] })
orderDir?: OrderDirEnum

@Expose()
@ApiProperty({
type: String,
example: "search",
required: false,
})
@IsOptional({ groups: [ValidationsGroupsEnum.default] })
@IsString({ groups: [ValidationsGroupsEnum.default] })
@MinLength(3, {
message: "Search must be at least 3 characters",
groups: [ValidationsGroupsEnum.default],
})
search?: string
}
21 changes: 20 additions & 1 deletion backend/core/src/listings/listings.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ export class ListingsService {
.groupBy("listings.id")

innerFilteredQuery = ListingsService.addOrderByToQb(innerFilteredQuery, params)

innerFilteredQuery = ListingsService.addSearchByListingNameCondition(
innerFilteredQuery,
params.search
)
if (params.filter) {
addFilters<Array<ListingFilterParams>, typeof filterTypeToFieldMap>(
params.filter,
Expand Down Expand Up @@ -314,6 +317,16 @@ export class ListingsService {
return { programs, unitTypes }
}

private static addSearchByListingNameCondition(
qb: SelectQueryBuilder<Listing>,
searchName?: string
) {
if (searchName) {
qb.andWhere(`${qb.alias}.name ILIKE :search`, { search: `%${searchName}%` })
}
return qb
}

private static addOrderByToQb(qb: SelectQueryBuilder<Listing>, params: ListingsQueryParams) {
switch (params.orderBy) {
case OrderByFieldsEnum.mostRecentlyUpdated:
Expand Down Expand Up @@ -351,6 +364,12 @@ export class ListingsService {
"listings.name": "ASC",
})
break
case OrderByFieldsEnum.updatedAt:
qb.orderBy({
"listings.updatedAt": params.orderDir ?? "ASC",
"listings.name": "ASC",
})
break
case OrderByFieldsEnum.name:
case undefined:
// Default to ordering by applicationDates (i.e. applicationDueDate
Expand Down
1 change: 1 addition & 0 deletions backend/core/src/listings/types/listing-orderby-enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ export enum OrderByFieldsEnum {
name = "name",
status = "status",
verified = "verified",
updatedAt = "updatedAt",
}
2 changes: 1 addition & 1 deletion backend/core/src/seeder/detroit-seed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ async function seed() {
const userRepo = app.get<Repository<User>>(getRepositoryToken(User))
const rolesRepo = app.get<Repository<UserRoles>>(getRepositoryToken(UserRoles))
const jurisdictions = await createJurisdictions(app)
const listings = await seedListings(app, rolesRepo, jurisdictions)
await seedListings(app, rolesRepo, jurisdictions)

let user1 = await userService.findByEmail("[email protected]")
if (user1 === undefined) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { ListingDefaultSeed } from "./listing-default-seed"
import { BaseEntity, DeepPartial } from "typeorm"
import { Listing } from "../../../listings/entities/listing.entity"
import { UnitGroup } from "../../../units-summary/entities/unit-group.entity"
import { UnitGroupAmiLevel } from "../../../units-summary/entities/unit-group-ami-level.entity"
import { MonthlyRentDeterminationType } from "../../../units-summary/types/monthly-rent-determination.enum"
import { ListingMarketingTypeEnum } from "../../../listings/types/listing-marketing-type-enum"

Expand Down
3 changes: 3 additions & 0 deletions backend/core/types/src/backend-swagger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1259,6 +1259,8 @@ export class ListingsService {
orderBy?: OrderByFieldsEnum
/** */
orderDir?: OrderDirEnum
/** */
search?: string
} = {} as any,
options: IRequestOptions = {}
): Promise<PaginatedListing> {
Expand All @@ -1273,6 +1275,7 @@ export class ListingsService {
view: params["view"],
orderBy: params["orderBy"],
orderDir: params["orderDir"],
search: params["search"],
}
let data = null

Expand Down
4 changes: 2 additions & 2 deletions sites/partners/cypress/integration/listing.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ describe("Listing Management Tests", () => {
cy.fillFormFields("listing", listingDetailsFieldsToType, listingDetailsFieldsToSelect)

cy.getByTestId("addUnitsButton").contains("Add unit group").click()
cy.get(`[data-testid="unitTypeCheckBox"]`).first().click()
cy.get(`[data-testid="openWaitListQuestion"]`).last().click()
cy.get(`[data-test-id="unitTypeCheckBox"]`).first().click()
cy.get(`[data-test-id="openWaitListQuestion"]`).last().click()
cy.fillFormFields("listing", unitFormFieldsToType, unitFormFieldsToSelect)

cy.getByTestId("openAmiDrawer").contains("Add AMI level").click()
Expand Down
73 changes: 46 additions & 27 deletions sites/partners/lib/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,17 @@ interface UseSingleApplicationDataProps extends PaginationProps {
listingId: string
}

type UseUserListProps = PaginationProps
type UseUserListProps = PaginationProps & {
search?: string
}
export interface ColumnOrder {
orderBy: string
orderDir: string
}

type UseListingsDataProps = PaginationProps & {
search?: string
sort?: ColumnOrder[]
listingIds?: string[]
view?: string
}
Expand All @@ -48,17 +56,16 @@ export function useSingleListingData(listingId: string) {
export function useListingsData({
page,
limit,
search,
listingIds,
orderBy,
orderDir,
sort,
view = "base",
}: UseListingsDataProps) {
const params = {
page,
limit,
search,
view,
orderBy,
orderDir: OrderDirEnum.ASC,
}

// filter if logged user is an agent
Expand All @@ -73,10 +80,20 @@ export function useListingsData({
})
}

if (orderBy) {
Object.assign(params, { orderBy, orderDir })
if (search?.length < 3) {
delete params.search
} else {
Object.assign(params, { search })
}

if (sort) {
Object.assign(params, {
orderBy: sort?.filter((item) => item.orderBy).map((item) => item.orderBy)[0],
})
Object.assign(params, {
orderDir: sort?.filter((item) => item.orderDir).map((item) => item.orderDir)[0],
})
}
const { listingsService } = useContext(AuthContext)
const fetcher = () => listingsService.list(params)

Expand Down Expand Up @@ -115,7 +132,6 @@ export function useApplicationsData(
}

const paramsString = qs.stringify(params)

const endpoint = `${process.env.backendApiBase}/applications?${paramsString}`

const fetcher = () => applicationsService.list(params)
Expand Down Expand Up @@ -353,29 +369,32 @@ export function useReservedCommunityTypeList() {
}
}

export function useUserList({ page, limit }: UseUserListProps) {
const queryParams = new URLSearchParams()
queryParams.append("page", page.toString())
queryParams.append("limit", limit.toString())
export function useUserList({ page, limit, search = "" }: UseUserListProps) {
const params = {
page,
limit,
filter: [
{
isPortalUser: true,
$comparison: EnumUserFilterParamsComparison["="],
},
],
search,
}

if (search?.length < 3) {
delete params.search
} else {
Object.assign(params, { search })
}

const paramsString = qs.stringify(params)

const { userService } = useContext(AuthContext)

const fetcher = () =>
userService.list({
page,
limit,
filter: [
{
isPortalUser: true,
$comparison: EnumUserFilterParamsComparison["NA"],
},
],
})
const fetcher = () => userService.list(params)

const { data, error } = useSWR(
`${process.env.backendApiBase}/user/list?${queryParams.toString()}`,
fetcher
)
const { data, error } = useSWR(`${process.env.backendApiBase}/user/list?${paramsString}`, fetcher)

return {
data,
Expand Down
Loading