private NextPreviousNavigationViewModel ProcessCalculateNavigation(NextPreviousNavigationViewModel mnvm) { var result = mnvm; var fields = _ud.GetFields(); var currentField = HttpContext.Request.Query["nme"]; if (fields.Count == 0) { result.PreviousAction = CoreSiteActions.SoilTest; result.PreviousController = AppControllers.Soil; result.NextAction = CoreSiteActions.Report; result.NextController = AppControllers.Report; return(result); } result.NextAction = CoreSiteActions.Calculate; result.NextController = AppControllers.Nutrients; result.PreviousAction = CoreSiteActions.Calculate; result.PreviousController = AppControllers.Nutrients; var currentFieldIndex = !currentField.Any() ? 0 : fields.FindIndex(f => f.fieldName.Equals(currentField.ToString(), StringComparison.CurrentCultureIgnoreCase)); if (currentFieldIndex == 0) { result.PreviousAction = CoreSiteActions.SoilTest; result.PreviousController = AppControllers.Soil; } else { result.PreviousParameters = new { nme = fields[currentFieldIndex - 1].fieldName }; } if (currentFieldIndex + 1 < fields.Count) { result.NextParameters = new { nme = fields[currentFieldIndex + 1].fieldName }; } else { result.NextAction = CoreSiteActions.Report; result.NextController = AppControllers.Report; } return(result); }
private Task <NextPreviousNavigationViewModel> GetManureNavigation(CoreSiteActions currentAction) { var hasAnimals = _ud.FarmDetails()?.HasAnimals ?? true; var importsManureCompost = _ud.FarmDetails()?.ImportsManureCompost ?? true; var mnvm = new NextPreviousNavigationViewModel { UseJSInterceptMethod = false, PreviousController = AppControllers.ManureManagement, NextController = AppControllers.ManureManagement }; if (currentAction == CoreSiteActions.Farm) { mnvm.NextAction = CoreSiteActions.ManureGeneratedObtained; if (!hasAnimals) { mnvm.NextAction = CoreSiteActions.ManureImported; } if (!importsManureCompost) { mnvm.NextAction = CoreSiteActions.Fields; mnvm.NextController = AppControllers.Fields; } } if (currentAction == CoreSiteActions.ManureGeneratedObtained) { mnvm.PreviousAction = CoreSiteActions.Farm; mnvm.PreviousController = AppControllers.Farm; if (importsManureCompost) { mnvm.NextAction = CoreSiteActions.ManureImported; } else if (hasAnimals) { mnvm.NextAction = CoreSiteActions.ManureStorage; } else { mnvm.NextAction = CoreSiteActions.Fields; mnvm.NextController = AppControllers.Fields; } } if (currentAction == CoreSiteActions.ManureImported) { mnvm.PreviousAction = CoreSiteActions.ManureGeneratedObtained; if (!hasAnimals) { //Skip Previous Generated mnvm.PreviousAction = CoreSiteActions.Farm; mnvm.PreviousController = AppControllers.Farm; } mnvm.NextAction = CoreSiteActions.ManureStorage; if (!hasAnimals && !importsManureCompost) { mnvm.NextAction = CoreSiteActions.Fields; mnvm.NextController = AppControllers.Fields; } } if (currentAction == CoreSiteActions.ManureStorage) { mnvm.PreviousAction = CoreSiteActions.ManureImported; if (!importsManureCompost && hasAnimals) { mnvm.PreviousAction = CoreSiteActions.ManureGeneratedObtained; } else { mnvm.PreviousAction = CoreSiteActions.Farm; mnvm.PreviousController = AppControllers.Farm; } if (hasAnimals || importsManureCompost) { mnvm.NextAction = CoreSiteActions.ManureNutrientAnalysis; } else { mnvm.NextAction = CoreSiteActions.Fields; mnvm.NextController = AppControllers.Fields; } } if (currentAction == CoreSiteActions.ManureNutrientAnalysis) { mnvm.PreviousAction = CoreSiteActions.ManureStorage; if (!hasAnimals && !importsManureCompost) { mnvm.PreviousAction = CoreSiteActions.Farm; mnvm.PreviousController = AppControllers.Farm; } mnvm.NextAction = CoreSiteActions.Fields; mnvm.NextController = AppControllers.Fields; } if (currentAction == CoreSiteActions.Fields) { if (hasAnimals || importsManureCompost) { mnvm.PreviousAction = CoreSiteActions.ManureNutrientAnalysis; } else { mnvm.PreviousAction = CoreSiteActions.Farm; mnvm.PreviousController = AppControllers.Farm; } mnvm.NextAction = CoreSiteActions.SoilTest; mnvm.NextController = AppControllers.Soil; } if (currentAction == CoreSiteActions.SoilTest) { mnvm.UseJSInterceptMethod = true; mnvm.PreviousAction = CoreSiteActions.Fields; mnvm.PreviousController = AppControllers.Fields; mnvm.NextAction = CoreSiteActions.Calculate; mnvm.NextController = AppControllers.Nutrients; } if (currentAction == CoreSiteActions.Calculate) { ProcessCalculateNavigation(mnvm); } mnvm.ViewPreviousUrl = Url.Action(mnvm.ViewPreviousAction, mnvm.ViewPreviousController, mnvm.PreviousParameters); mnvm.ViewNextUrl = Url.Action(mnvm.ViewNextAction, mnvm.ViewNextController, mnvm.NextParameters); return(Task.FromResult(mnvm)); }