private List <NavigationOption> getNetworkOptions(navigationtype nType) { sm("Configuring Network options " + nType.ToString()); List <NavigationOption> options = new List <NavigationOption>(); options.Add(NavigationOption.StartPointLocationOption()); switch (nType) { case navigationtype.e_flowpath: options.Add(NavigationOption.LimitOption()); break; case navigationtype.e_networkpath: options.Insert(1, NavigationOption.EndPointLocationOption()); break; case navigationtype.e_networktrace: options.Insert(1, NavigationOption.DirectionOption()); options.Insert(2, NavigationOption.QuerySourceOption()); options.Add(NavigationOption.LimitOption()); break; default: sm("No navigation options exist " + nType); break; } return(options); }
private bool isValid(int navigationtypeID, List <NavigationOption> options) { NavigationOption option = null; try { navigationtype ntype = (navigationtype)navigationtypeID; switch (ntype) { case navigationtype.e_flowpath: // requires valid startpoint option = options.FirstOrDefault(x => x.ID == (int)NavigationOption.navigationoptiontype.e_startpoint); if (option == null || !isValid(option)) { return(false); } //limit option = options.FirstOrDefault(x => x.ID == 0); if (option != null && !isValid(option)) { return(false); } break; case navigationtype.e_networkpath: // requires valid startpoint and endpoint option = options.FirstOrDefault(x => x.ID == (int)NavigationOption.navigationoptiontype.e_startpoint); if (option == null || !isValid(option)) { return(false); } option = options.FirstOrDefault(x => x.ID == (int)NavigationOption.navigationoptiontype.e_endpoint); if (option == null || !isValid(option)) { return(false); } //limit option = options.FirstOrDefault(x => x.ID == 0); if (option != null && !isValid(option)) { return(false); } break; case navigationtype.e_networktrace: // requires valid startpoint and upstream/dowstream and data query option = options.FirstOrDefault(x => x.ID == (int)NavigationOption.navigationoptiontype.e_startpoint); if (option == null || !isValid(option)) { return(false); } option = options.FirstOrDefault(x => x.ID == (int)NavigationOption.navigationoptiontype.e_navigationdirection); if (option == null || !isValid(option)) { return(false); } option = options.FirstOrDefault(x => x.ID == (int)NavigationOption.navigationoptiontype.e_querysource); if (option == null || !isValid(option)) { return(false); } //limit option = options.FirstOrDefault(x => x.ID == 0); if (option != null && !isValid(option)) { return(false); } break; default: break; } sm("Options are valid"); return(true); } catch (Exception ex) { sm("Error occured while validating " + ex.Message, MessageType.error); return(false); throw; } }