/// <summary> /// This will demonstrate Use case of: /// 1. Fetching forecast configuration list /// 2. Fetching forecast configuration using the name /// 3. Fecthing forecast Periods for the forecast configuration /// 4. Fetching all the forecast Instances for the given forecast configuration and forecast period /// 5. Updating their column value using update simple column API by forecast Instance Id /// 6. Validating the updates are successful. /// </summary> /// <param name="da">Forecast Data Access Object</param> private void PerformUsecase(ForecastDataAccess da) { // Fetching full Forecast Configuration List var fcs = da.GetFCList(); LogWriter.GetLogWriter().LogWrite($"Num FCs:{fcs.Count}"); LogWriter.GetLogWriter().LogWrite($"FCs Names: {string.Join(",", (fcs.Select(c => c.Name).ToList().ToArray()))}"); // fetching forecast configuration by name var fcsByName = da.GetFCListByName(Constants.forecastConfigurationName); if (fcsByName.Count == 0) { LogWriter.GetLogWriter().LogWrite("Please provide a valid fc Name"); return; } LogWriter.GetLogWriter().LogWrite($"FCs Found:{fcs.Count > 0}"); LogWriter.GetLogWriter().LogWrite($"FCs Id: {string.Join(",", (fcs.Select(c => c.ForecastConfigurationId).ToList().ToArray()))}"); // fetching forecast periods for the forecast configuration var fps = da.GetForecastPeriodsList(fcsByName[0].ForecastConfigurationId); LogWriter.GetLogWriter().LogWrite("FPs Names: " + string.Join(",", (fps.Select(c => c.Name).ToList().ToArray()))); var fpResults = fps.Where(o => o.Name == Constants.forecastperiodName).ToList(); if (fpResults.Count == 0) { LogWriter.GetLogWriter().LogWrite("Please provide a valid forecast period Name"); return; } var fis = da.FetchFullFIList(fcsByName[0].ForecastConfigurationId, fpResults[0].Id); Dictionary <Guid, double> dataSet = UtilityImpl.prepareDataSet(fis); LogWriter.GetLogWriter().LogWrite("FIs fetched: " + fis.Count); LogWriter.GetLogWriter().LogWrite("FIs Guids: " + string.Join(",", (fis.Select(c => c.ForecastInstanceId).ToList().ToArray()))); LogWriter.GetLogWriter().LogWrite("DataSet Size: " + dataSet.Count()); LogWriter.GetLogWriter().LogWrite("DataSet build: " + UtilityImpl.DictToDebugString(dataSet)); var res = da.UpdateSimpleColumnByFIId(fcsByName[0].ForecastConfigurationId, fpResults[0].Id, fis, dataSet); fis = da.FetchFullFIList(fcsByName[0].ForecastConfigurationId, fpResults[0].Id); UtilityImpl.VerifyDataSet(fis, dataSet); Console.WriteLine("Completed"); Console.ReadKey(); }