@@ -1594,6 +1594,7 @@ async function updateChallenge(currentUser, challengeId, data) {
1594
1594
/* END self-service stuffs */
1595
1595
1596
1596
let isChallengeBeingActivated = false ;
1597
+ let isChallengeBeingCancelled = false ;
1597
1598
if ( data . status ) {
1598
1599
if ( data . status === constants . challengeStatuses . Active ) {
1599
1600
if (
@@ -1619,6 +1620,20 @@ async function updateChallenge(currentUser, challengeId, data) {
1619
1620
}
1620
1621
}
1621
1622
1623
+ if ( _ . includes ( [
1624
+ constants . challengeStatuses . Cancelled ,
1625
+ constants . challengeStatuses . CancelledRequirementsInfeasible ,
1626
+ constants . challengeStatuses . CancelledPaymentFailed ,
1627
+ constants . challengeStatuses . CancelledFailedReview ,
1628
+ constants . challengeStatuses . CancelledFailedScreening ,
1629
+ constants . challengeStatuses . CancelledZeroSubmissions ,
1630
+ constants . challengeStatuses . CancelledWinnerUnresponsive ,
1631
+ constants . challengeStatuses . CancelledClientRequest ,
1632
+ constants . challengeStatuses . CancelledZeroRegistrations ,
1633
+ ] , data . status ) ) {
1634
+ isChallengeBeingCancelled = true ;
1635
+ }
1636
+
1622
1637
if (
1623
1638
data . status === constants . challengeStatuses . CancelledRequirementsInfeasible ||
1624
1639
data . status === constants . challengeStatuses . CancelledPaymentFailed
@@ -1723,9 +1738,9 @@ async function updateChallenge(currentUser, challengeId, data) {
1723
1738
1724
1739
let phasesUpdated = false ;
1725
1740
if (
1726
- ( data . phases && data . phases . length > 0 ) ||
1741
+ ( ( data . phases && data . phases . length > 0 ) ||
1727
1742
isChallengeBeingActivated ||
1728
- timelineTemplateChanged
1743
+ timelineTemplateChanged ) && ! isChallengeBeingCancelled
1729
1744
) {
1730
1745
if (
1731
1746
challenge . status === constants . challengeStatuses . Completed ||
@@ -1754,6 +1769,10 @@ async function updateChallenge(currentUser, challengeId, data) {
1754
1769
phasesUpdated = true ;
1755
1770
data . phases = newPhases ;
1756
1771
}
1772
+ if ( isChallengeBeingCancelled ) {
1773
+ data . phases = await phaseHelper . handlePhasesAfterCancelling ( challenge . phases ) ;
1774
+ phasesUpdated = true ;
1775
+ }
1757
1776
if ( phasesUpdated || data . startDate ) {
1758
1777
data . startDate = convertToISOString ( _ . min ( _ . map ( data . phases , "scheduledStartDate" ) ) ) ;
1759
1778
}
0 commit comments