Skip to content

Commit

Permalink
Merge pull request #469 from bcgov/development
Browse files Browse the repository at this point in the history
Merge development into master
  • Loading branch information
IanFonzie authored Apr 4, 2024
2 parents 352e578 + d0b56b3 commit 7a2a656
Show file tree
Hide file tree
Showing 14 changed files with 111 additions and 315 deletions.
29 changes: 15 additions & 14 deletions .github/workflows/sonar.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
name: Sonar
on:
# Trigger analysis when a pull request is merged.
pull_request:
push:
branches:
- development
- master

# Trigger analysis when a pull request is merged.
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarcloud:
if: github.event.pull_request.merged == true
name: SonarCloud
# if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- uses: actions/checkout@v3
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@
"body-parser": "^1.18.3",
"bowser": "^2.9.0",
"chalk": "^2.4.2",
"content-disposition": "^0.5.4",
"cookie-parser": "^1.4.4",
"cookie-signature": "^1.2.1",
"cors": "^2.8.5",
Expand Down Expand Up @@ -173,6 +174,7 @@
"@fsouza/prettierd": "^0.22.2",
"@testing-library/react": "^12.1.2",
"@types/chai": "^4.3.4",
"@types/content-disposition": "^0.5.8",
"@types/cookie-signature": "^1.1.0",
"@types/sharp": "^0.31.1",
"@types/sinon": "^10.0.13",
Expand Down
23 changes: 18 additions & 5 deletions sonar-project.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
sonar.tests=tests,cypress
sonar.projectName=digital_marketplace
sonar.organization=bcgov-sonarcloud
sonar.projectKey=bcgov_digital_marketplace
sonar.host.url=https://sonarcloud.io/

sonar.projectName=digital-marketplace
#Path to sources
sonar.sources=src/front-end,src/back-end
sonar.exclusions=openshift/templates/app/app-digmkt-deploy-prod.yaml
#sonar.inclusions=

# Path to tests
sonar.tests=tests
#sonar.test.exclusions=
#sonar.test.inclusions=

# Source encoding
sonar.sourceEncoding=UTF-8

sonar.organization=bcgov-sonarcloud
sonar.projectKey=bcgov_digital-marketplace
sonar.host.url=https://sonarcloud.io/
# Exclusions for copy-paste detection
#sonar.cpd.exclusions=

#sonar.projectVersion=Autoscan
45 changes: 32 additions & 13 deletions src/back-end/lib/db/proposal/sprint-with-us.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1678,19 +1678,38 @@ export const awardSWUProposal = tryDb<

for (const id of otherProposalIds) {
// Get latest status for proposal and check equal to Evaluated/Awarded

await connection<RawHistoryRecord & { id: Id; proposal: Id }>(
"swuProposalStatuses"
)
.transacting(trx)
.insert({
id: generateUuid(),
proposal: id,
createdAt: now,
createdBy: session.user.id,
status: SWUProposalStatus.NotAwarded,
note: ""
});
const currentStatus = (
await connection<{ status: SWUProposalStatus }>("swuProposalStatuses")
.whereNotNull("status")
.andWhere("proposal", id)
.select("status")
.orderBy("createdAt", "desc")
.first()
)?.status;

if (
currentStatus &&
![
SWUProposalStatus.Disqualified,
SWUProposalStatus.Draft,
SWUProposalStatus.NotAwarded,
SWUProposalStatus.Submitted,
SWUProposalStatus.Withdrawn
].includes(currentStatus)
) {
await connection<RawHistoryRecord & { id: Id; proposal: Id }>(
"swuProposalStatuses"
)
.transacting(trx)
.insert({
id: generateUuid(),
proposal: id,
createdAt: now,
createdBy: session.user.id,
status: SWUProposalStatus.NotAwarded,
note: ""
});
}

await connection<RawSWUProposal>("swuProposals")
.where({ id: id })
Expand Down
45 changes: 32 additions & 13 deletions src/back-end/lib/db/proposal/team-with-us.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1342,19 +1342,38 @@ export const awardTWUProposal = tryDb<

for (const id of otherProposalIds) {
// Get latest status for proposal and check equal to Evaluated/Awarded

await connection<RawHistoryRecord & { id: Id; proposal: Id }>(
"twuProposalStatuses"
)
.transacting(trx)
.insert({
id: generateUuid(),
proposal: id,
createdAt: now,
createdBy: session.user.id,
status: TWUProposalStatus.NotAwarded,
note: ""
});
const currentStatus = (
await connection<{ status: TWUProposalStatus }>("twuProposalStatuses")
.whereNotNull("status")
.andWhere("proposal", id)
.select("status")
.orderBy("createdAt", "desc")
.first()
)?.status;

if (
currentStatus &&
![
TWUProposalStatus.Disqualified,
TWUProposalStatus.Draft,
TWUProposalStatus.NotAwarded,
TWUProposalStatus.Submitted,
TWUProposalStatus.Withdrawn
].includes(currentStatus)
) {
await connection<RawHistoryRecord & { id: Id; proposal: Id }>(
"twuProposalStatuses"
)
.transacting(trx)
.insert({
id: generateUuid(),
proposal: id,
createdAt: now,
createdBy: session.user.id,
status: TWUProposalStatus.NotAwarded,
note: ""
});
}

await connection<RawTWUProposal>("twuProposals")
.where({ id: id })
Expand Down
78 changes: 1 addition & 77 deletions src/back-end/lib/mailer/notifications/proposal/code-with-us.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
import * as templates from "back-end/lib/mailer/templates";
import { makeSend } from "back-end/lib/mailer/transport";
import React from "react";
import { CONTACT_EMAIL, EMPTY_STRING } from "shared/config";
import { EMPTY_STRING } from "shared/config";
import { CWUOpportunity } from "shared/lib/resources/opportunity/code-with-us";
import {
CWUProposal,
Expand Down Expand Up @@ -97,41 +97,6 @@ export async function handleCWUProposalAwarded(
}
}

export async function handleCWUProposalDisqualified(
connection: db.Connection,
proposalId: Id,
session: AuthenticatedSession
): Promise<void> {
//Notify the disqualified proponent
const proposal = getValidValue(
await db.readOneCWUProposal(connection, proposalId, session),
null
);
const opportunity =
proposal &&
getValidValue(
await db.readOneCWUOpportunity(
connection,
proposal.opportunity.id,
session
),
null
);
const disqualifiedProponent =
proposal &&
getValidValue(
await db.readOneUser(connection, proposal.createdBy.id),
null
);
if (proposal && opportunity && disqualifiedProponent) {
await disqualifiedCWUProposalSubmission(
disqualifiedProponent,
opportunity,
proposal
);
}
}

export async function handleCWUProposalWithdrawn(
connection: db.Connection,
proposalId: Id,
Expand Down Expand Up @@ -338,47 +303,6 @@ export async function unsuccessfulCWUProposalSubmissionT(
];
}

export const disqualifiedCWUProposalSubmission = makeSend(
disqualifiedCWUProposalSubmissionT
);

export async function disqualifiedCWUProposalSubmissionT(
recipient: User,
opportunity: CWUOpportunity,
proposal: CWUProposal | CWUProposalSlim
): Promise<Emails> {
const title = "Your Code With Us Proposal Has Been Deemed Non-Compliant";
const description =
"The proposal that you submitted for the following Digital Marketplace opportunity was deemed non-compliant and will not be considered any further:";
return [
{
to: recipient.email || [],
subject: title,
html: templates.simple({
title,
description,
descriptionLists: [makeCWUOpportunityInformation(opportunity)],
body: (
<div>
<p>
We appreciate the time and effort you put into creating your
proposal. Thank you for your interest in this opportunity.
</p>
<p>
If you have any questions, please send an email to{" "}
<templates.Link text={CONTACT_EMAIL} url={CONTACT_EMAIL} />.
</p>
</div>
),
callsToAction: [
viewCWUOpportunityCallToAction(opportunity),
viewCWUProposalCallToAction(proposal)
]
})
}
];
}

export const withdrawnCWUProposalSubmissionProposalAuthor = makeSend(
withdrawnCWUProposalSubmissionProposalAuthorT
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
import * as templates from "back-end/lib/mailer/templates";
import { makeSend } from "back-end/lib/mailer/transport";
import React from "react";
import { CONTACT_EMAIL, EMPTY_STRING } from "shared/config";
import { EMPTY_STRING } from "shared/config";
import { SWUOpportunity } from "shared/lib/resources/opportunity/sprint-with-us";
import {
SWUProposal,
Expand Down Expand Up @@ -105,39 +105,6 @@ export async function handleSWUProposalAwarded(
}
}

export async function handleSWUProposalDisqualified(
connection: db.Connection,
proposalId: Id,
session: AuthenticatedSession
): Promise<void> {
//Notify the disqualified proponent
const proposal = getValidValue(
await db.readOneSWUProposal(connection, proposalId, session),
null
);
const opportunity =
proposal &&
getValidValue(
await db.readOneSWUOpportunity(
connection,
proposal.opportunity.id,
session
),
null
);
const disqualifiedProponent = getValidValue(
await db.readOneSWUProposalAuthor(connection, proposalId),
null
);
if (proposal && opportunity && disqualifiedProponent) {
await disqualifiedSWUProposalSubmission(
disqualifiedProponent,
opportunity,
proposal
);
}
}

export async function handleSWUProposalWithdrawn(
connection: db.Connection,
proposalId: Id,
Expand Down Expand Up @@ -347,47 +314,6 @@ export async function unsuccessfulSWUProposalSubmissionT(
];
}

export const disqualifiedSWUProposalSubmission = makeSend(
disqualifiedSWUProposalSubmissionT
);

export async function disqualifiedSWUProposalSubmissionT(
recipient: User,
opportunity: SWUOpportunity,
proposal: SWUProposal | SWUProposalSlim
): Promise<Emails> {
const title = "Your Sprint With Us Proposal Has Been Deemed Non-Compliant";
const description =
"The proposal that you submitted for the following Digital Marketplace opportunity was deemed non-compliant and will not be considered any further:";
return [
{
to: recipient.email || [],
subject: title,
html: templates.simple({
title,
description,
descriptionLists: [makeSWUOpportunityInformation(opportunity)],
body: (
<div>
<p>
We appreciate the time and effort you put into creating your
proposal. Thank you for your interest in this opportunity.
</p>
<p>
If you have any questions, please send an email to{" "}
<templates.Link text={CONTACT_EMAIL} url={CONTACT_EMAIL} />.
</p>
</div>
),
callsToAction: [
viewSWUOpportunityCallToAction(opportunity),
viewSWUProposalCallToAction(proposal)
]
})
}
];
}

export const withdrawnSWUProposalSubmissionProposalAuthor = makeSend(
withdrawnSWUProposalSubmissionProposalAuthorT
);
Expand Down
Loading

0 comments on commit 7a2a656

Please sign in to comment.