@@ -55,24 +55,7 @@ public async Task<ActionResult> AddForCharacter(int projectId, int characterid)
5555
5656 [ HttpGet ( "/{projectid}/apply" ) ]
5757 [ Authorize ]
58- public async Task < ActionResult > AddForGroup ( int projectid )
59- {
60- var projectInfo = await projectMetadataRepository . GetProjectMetadata ( new ProjectIdentification ( projectid ) ) ;
61-
62- if ( projectInfo . DefaultTemplateCharacter is not null )
63- {
64- return RedirectToDefaultTemplateCharacter ( projectInfo ) ;
65- }
66-
67- //TODO remove when groups claims will die
68- var project = await ProjectRepository . GetProjectAsync ( projectid ) ;
69-
70- if ( project . RootGroup . HaveDirectSlots )
71- {
72- return RedirectToAction ( "AddForGroup" , new { project . ProjectId , project . RootGroup . CharacterGroupId } ) ;
73- }
74- return Redirect ( $ "/{ projectInfo . ProjectId } /default-slot-not-set") ;
75- }
58+ public async Task < ActionResult > AddForGroup ( int projectid ) => await RedirectToDefaultTemplate ( projectid ) ;
7659
7760 [ HttpGet ( "/{projectid}/roles/{characterGroupId}/apply" ) ]
7861 [ Authorize ]
@@ -88,24 +71,11 @@ public async Task<ActionResult> AddForGroup(int projectId, int characterGroupId)
8871
8972 var viewModel = AddClaimViewModel . Create ( field , CurrentUserId , projectInfo ) ;
9073
91- if ( viewModel . ValidationStatus . Contains ( CommonUI . Models . AddClaimForbideReasonViewModel . NotForDirectClaims ) )
74+ if ( viewModel . ValidationStatus . Contains ( CommonUI . Models . AddClaimForbideReasonViewModel . NotForDirectClaims ) && field . IsRoot )
9275 {
93- if ( field . IsRoot && projectInfo . DefaultTemplateCharacter is not null )
94- {
95- return RedirectToDefaultTemplateCharacter ( projectInfo ) ;
96- }
97-
98- var childSlots = field . Characters . Where ( c => c . CharacterType == CharacterType . Slot ) . ToList ( ) ;
99- if ( childSlots . Count == 1 )
100- {
101- return RedirectToAction ( "AddForCharacter" , new { field . ProjectId , childSlots . Single ( ) . CharacterId } ) ;
102- }
103-
104- if ( field . IsRoot )
105- {
106- return RedirectToPage ( "DefaultSlotNotSetModel" ) ;
107- }
76+ return await RedirectToDefaultTemplate ( projectId ) ;
10877 }
78+
10979 return base . View ( "Add" , viewModel ) ;
11080 }
11181
@@ -440,9 +410,6 @@ public async Task<ActionResult> Move(int projectId, int claimId, ClaimOperationV
440410 }
441411 }
442412
443- [ MustUseReturnValue ]
444- private ActionResult ReturnToClaim ( int projectId , int claimId ) => RedirectToAction ( "Edit" , "Claim" , new { claimId , projectId } ) ;
445-
446413 [ HttpGet ( "/{projectId}/myclaim" ) ]
447414 [ Authorize , HttpGet ]
448415 public async Task < ActionResult > MyClaim ( int projectId )
@@ -451,8 +418,7 @@ public async Task<ActionResult> MyClaim(int projectId)
451418
452419 if ( claims . Count == 0 )
453420 {
454- var project = await ProjectRepository . GetProjectAsync ( projectId ) ;
455- return RedirectToAction ( "AddForGroup" , new { projectId , project . RootGroup . CharacterGroupId } ) ;
421+ return await RedirectToDefaultTemplate ( projectId ) ;
456422 }
457423
458424 var claimId = claims . TrySelectSingleClaim ( ) ? . ClaimId ;
@@ -866,9 +832,34 @@ public async Task<ActionResult> TransferClaimPayment(int projectId, int claimId)
866832 return View ( "PaymentTransfer" , new PaymentTransferViewModel ( claim , claims ) ) ;
867833 }
868834
869- private RedirectToActionResult RedirectToDefaultTemplateCharacter ( PrimitiveTypes . ProjectMetadata . ProjectInfo projectInfo )
835+ private async Task < ActionResult > RedirectToDefaultTemplate ( int projectid )
870836 {
871- ArgumentNullException . ThrowIfNull ( projectInfo . DefaultTemplateCharacter ) ;
872- return RedirectToAction ( "AddForCharacter" , new { projectInfo . ProjectId , CharacterId = projectInfo . DefaultTemplateCharacter . CharacterId } ) ;
837+ var projectInfo = await projectMetadataRepository . GetProjectMetadata ( new ProjectIdentification ( projectid ) ) ;
838+
839+ if ( projectInfo . DefaultTemplateCharacter is not null )
840+ {
841+ return RedirectToAction ( "AddForCharacter" , new { projectid , CharacterId = projectInfo . DefaultTemplateCharacter . CharacterId } ) ;
842+ }
843+
844+ //TODO Start of HACKS remove when groups claims will die
845+ var project = await ProjectRepository . GetProjectAsync ( projectid ) ;
846+
847+ if ( project . RootGroup . HaveDirectSlots )
848+ {
849+ return RedirectToAction ( "AddForGroup" , new { projectid , project . RootGroup . CharacterGroupId } ) ;
850+ }
851+
852+ var childSlots = project . RootGroup . Characters . Where ( c => c . CharacterType == CharacterType . Slot ) . ToList ( ) ;
853+ if ( childSlots . Count == 1 )
854+ {
855+ return RedirectToAction ( "AddForCharacter" , new { projectid , childSlots . Single ( ) . CharacterId } ) ;
856+ }
857+
858+ //TODO end of hacks
859+
860+ return Redirect ( $ "/{ projectInfo . ProjectId } /default-slot-not-set") ;
873861 }
862+
863+ [ MustUseReturnValue ]
864+ private ActionResult ReturnToClaim ( int projectId , int claimId ) => RedirectToAction ( "Edit" , "Claim" , new { claimId , projectId } ) ;
874865}
0 commit comments