@@ -1606,6 +1606,7 @@ async function updateChallenge(currentUser, challengeId, data) {
1606
1606
/* END self-service stuffs */
1607
1607
1608
1608
let isChallengeBeingActivated = false ;
1609
+ let isChallengeBeingCancelled = false ;
1609
1610
if ( data . status ) {
1610
1611
if ( data . status === constants . challengeStatuses . Active ) {
1611
1612
if (
@@ -1631,6 +1632,32 @@ async function updateChallenge(currentUser, challengeId, data) {
1631
1632
}
1632
1633
}
1633
1634
1635
+ if ( _ . includes ( [
1636
+ constants . challengeStatuses . Cancelled ,
1637
+ constants . challengeStatuses . CancelledRequirementsInfeasible ,
1638
+ constants . challengeStatuses . CancelledPaymentFailed ,
1639
+ constants . challengeStatuses . CancelledFailedReview ,
1640
+ constants . challengeStatuses . CancelledFailedScreening ,
1641
+ constants . challengeStatuses . CancelledZeroSubmissions ,
1642
+ constants . challengeStatuses . CancelledWinnerUnresponsive ,
1643
+ constants . challengeStatuses . CancelledClientRequest ,
1644
+ constants . challengeStatuses . CancelledZeroRegistrations ,
1645
+ ] , data . status ) ) {
1646
+ isChallengeBeingCancelled = true ;
1647
+ }
1648
+
1649
+ if (
1650
+ data . status === constants . challengeStatuses . CancelledRequirementsInfeasible ||
1651
+ data . status === constants . challengeStatuses . CancelledPaymentFailed
1652
+ ) {
1653
+ try {
1654
+ await helper . cancelProject ( challenge . projectId , cancelReason , currentUser ) ;
1655
+ } catch ( e ) {
1656
+ logger . debug ( `There was an error trying to cancel the project: ${ e . message } ` ) ;
1657
+ }
1658
+ sendRejectedEmail = true ;
1659
+ }
1660
+
1634
1661
if ( data . status === constants . challengeStatuses . Completed ) {
1635
1662
if (
1636
1663
! _ . get ( challenge , "legacy.pureV5Task" ) &&
@@ -1723,9 +1750,9 @@ async function updateChallenge(currentUser, challengeId, data) {
1723
1750
1724
1751
let phasesUpdated = false ;
1725
1752
if (
1726
- ( data . phases && data . phases . length > 0 ) ||
1753
+ ( ( data . phases && data . phases . length > 0 ) ||
1727
1754
isChallengeBeingActivated ||
1728
- timelineTemplateChanged
1755
+ timelineTemplateChanged ) && ! isChallengeBeingCancelled
1729
1756
) {
1730
1757
if (
1731
1758
challenge . status === constants . challengeStatuses . Completed ||
@@ -1754,6 +1781,10 @@ async function updateChallenge(currentUser, challengeId, data) {
1754
1781
phasesUpdated = true ;
1755
1782
data . phases = newPhases ;
1756
1783
}
1784
+ if ( isChallengeBeingCancelled ) {
1785
+ data . phases = await phaseHelper . handlePhasesAfterCancelling ( challenge . phases ) ;
1786
+ phasesUpdated = true ;
1787
+ }
1757
1788
if ( phasesUpdated || data . startDate ) {
1758
1789
data . startDate = convertToISOString ( _ . min ( _ . map ( data . phases , "scheduledStartDate" ) ) ) ;
1759
1790
}
0 commit comments