@@ -582,14 +582,33 @@ public IActionResult EditFrameworkFlag(CustomFlagViewModel model, int frameworkI
582582 {
583583 if ( ModelState . IsValid )
584584 {
585+ var flags = frameworkService . GetCustomFlagsByFrameworkId ( frameworkId , null )
586+ . Where ( fn => fn . FlagName == model . FlagName ) . ToList ( ) ;
587+
588+ bool nameExists = flags . Any ( x => x . FlagName == model . FlagName ) ;
589+ bool idExists = flags . Any ( x => x . FlagId == flagId ) ;
590+
585591 if ( actionname == "Edit" )
586592 {
587- frameworkService . UpdateFrameworkCustomFlag ( frameworkId , model . Id , model . FlagName , model . FlagGroup , model . FlagTagClass ) ;
593+ if ( nameExists && ! idExists )
594+ {
595+ ModelState . AddModelError ( nameof ( model . FlagName ) , "A custom flag already exists." ) ;
596+ return View ( "Developer/EditCustomFlag" , model ) ;
597+ }
598+ else
599+ frameworkService . UpdateFrameworkCustomFlag ( frameworkId , model . Id , model . FlagName , model . FlagGroup , model . FlagTagClass ) ;
588600 }
589601 else
590602 {
591- frameworkService . AddCustomFlagToFramework ( frameworkId , model . FlagName , model . FlagGroup , model . FlagTagClass ) ;
603+ if ( nameExists )
604+ {
605+ ModelState . AddModelError ( nameof ( model . FlagName ) , "A custom flag already exists." ) ;
606+ return View ( "Developer/EditCustomFlag" , model ) ;
607+ }
608+ else
609+ frameworkService . AddCustomFlagToFramework ( frameworkId , model . FlagName , model . FlagGroup , model . FlagTagClass ) ;
592610 }
611+
593612 return RedirectToAction ( "EditFrameworkFlags" , "Frameworks" , new { frameworkId } ) ;
594613 }
595614 return View ( "Developer/EditCustomFlag" , model ) ;
0 commit comments