public async Task <SaveScenarioReponse> saveScenario(SaveScenario scenarioInputs) { SaveScenarioReponse objResponse = new SaveScenarioReponse(); int scenarioId = 0; objResponse.Status = false; objResponse.StatusMessage = ""; var scenarioExist = await _dbContext.ScenarioDetails.Where(x => x.ScenarioName == scenarioInputs.scenarioDetails.ScenarioName && x.IsActive).FirstOrDefaultAsync(); if (scenarioExist == null) { ScenarioDetail scenariodtls = new ScenarioDetail() { ScenarioId = scenarioInputs.scenarioDetails.ScenarioId, ScenarioName = scenarioInputs.scenarioDetails.ScenarioName, ScenarioStatus = scenarioInputs.scenarioDetails.ScenarioStatus, IsActive = scenarioInputs.scenarioDetails.IsActive, CreatedBy = scenarioInputs.scenarioDetails.CreatedBy, CreatedDate = DateTime.UtcNow, ModifiedBy = scenarioInputs.scenarioDetails.ModifiedBy, ModifiedDate = scenarioInputs.scenarioDetails.ModifiedDate, // ApprovedBy = scenarioInputs.scenarioDetails.ApprovedBy, ApprovedDate = scenarioInputs.scenarioDetails.ApprovedDate, Comments = scenarioInputs.scenarioDetails.Remarks, ScenarioMode = scenarioInputs.scenarioDetails.ScenarioMode, BaseScenarioId = scenarioInputs.scenarioDetails.BaseScenarioId, IterationID = 1, IsEnergyBalanceIncluded = scenarioInputs.scenarioDetails.IsEnergyBalance }; _dbContext.ScenarioDetails.Add(scenariodtls); _dbContext.SaveChanges(); scenarioId = scenariodtls.ScenarioId; if (scenarioId > 0) { List <string> countries = new List <string>(); countries = scenarioInputs.scenarioCountryMapping; DataTable dtCountries = new DataTable(); dtCountries.Columns.Add("CountryName", typeof(string)); foreach (string str in countries) { DataRow row = dtCountries.NewRow(); row["CountryName"] = str; dtCountries.Rows.Add(row); } var countryType = new SqlParameter("@CountryType", SqlDbType.Structured); countryType.Value = dtCountries; countryType.TypeName = "E2MAS.CountryType"; DataTable scenarioSequence = ToDataTable(scenarioInputs.scenarioSequence); var ScenarioSequenceType = new SqlParameter("@ScenarioSequenceType", SqlDbType.Structured); ScenarioSequenceType.Value = scenarioSequence; ScenarioSequenceType.TypeName = "E2MAS.ScenarioSequenceType"; objResponse = await _dbContext.Database.SqlQuery <SaveScenarioReponse>("exec [E2MAS].[API_CreateScenario] @ScenarioID,@StartYear,@EndYear,@IsPricing,@Remarks,@ScenarioSequenceType,@CountryType", new SqlParameter { ParameterName = "@ScenarioID", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = scenarioId }, new SqlParameter { ParameterName = "@StartYear", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = scenarioInputs.scenarioInputDetail.StartYear }, new SqlParameter { ParameterName = "@EndYear", SqlDbType = SqlDbType.Char, Direction = ParameterDirection.Input, Value = scenarioInputs.scenarioInputDetail.EndYear }, new SqlParameter { ParameterName = "@IsPricing", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = scenarioInputs.scenarioInputDetail.IsPricing }, new SqlParameter { ParameterName = "@Remarks", SqlDbType = SqlDbType.Char, Direction = ParameterDirection.Input, Value = scenarioInputs.scenarioInputDetail.Remarks }, countryType, ScenarioSequenceType).FirstOrDefaultAsync(); if (objResponse.Status) { objResponse.scenarioId = scenarioId; string ModelCode = scenarioInputs.scenarioSequence[0].ModelName; ScenarioSequenceDetail setInProgress = await _dbContext.ScenarioSequenceDetails.Where(x => x.ScenarioId == scenarioId && x.ModelName == ModelCode).FirstOrDefaultAsync(); if (setInProgress != null) { setInProgress.ModelStatus = E2MASConstants.SCENARIOINPROGRESS; await _dbContext.SaveChangesAsync(); } } } objResponse.dxiStatusMessage = initateFirstModelDXI(scenarioId, scenarioInputs.scenarioSequence[0].ModelName, 1); } else { objResponse.StatusMessage = scenarioInputs.scenarioDetails.ScenarioName + " already exist"; } return(objResponse); }
public async Task <UpdateScenarioReponse> updateScenario(int ScenarioId, UpdateScenario sInputs) { UpdateScenarioReponse objResponse = new UpdateScenarioReponse(); using (var dbContextTransaction = _dbContext.Database.BeginTransaction()) { try { objResponse.Status = false; objResponse.StatusMessage = ""; int scenarioId = 0; ScenarioDetail scenariodtls = await _dbContext.ScenarioDetails.Where(x => x.ScenarioId == ScenarioId && x.IsActive).FirstOrDefaultAsync(); if (scenariodtls != null) { scenariodtls.ScenarioName = sInputs.scenarioDetails.ScenarioName; scenariodtls.ModifiedBy = sInputs.scenarioDetails.ModifiedBy; scenariodtls.ModifiedDate = DateTime.UtcNow; scenariodtls.Comments = sInputs.scenarioDetails.Remarks; scenariodtls.ScenarioMode = sInputs.scenarioDetails.ScenarioMode; scenariodtls.BaseScenarioId = sInputs.scenarioDetails.BaseScenarioId; scenariodtls.IsEnergyBalanceIncluded = sInputs.scenarioDetails.IsEnergyBalance; _dbContext.ScenarioDetails.Attach(scenariodtls); _dbContext.Entry(scenariodtls).State = EntityState.Modified; await _dbContext.SaveChangesAsync(); scenarioId = sInputs.scenarioDetails.ScenarioId; } if (scenarioId > 0) { List <string> countries = new List <string>(); countries = sInputs.scenarioCountryMapping; DataTable dtCountries = new DataTable(); dtCountries.Columns.Add("CountryName", typeof(string)); foreach (string str in countries) { DataRow row = dtCountries.NewRow(); row["CountryName"] = str; dtCountries.Rows.Add(row); } var countryType = new SqlParameter("@CountryType", SqlDbType.Structured); countryType.Value = dtCountries; countryType.TypeName = "E2MAS.CountryType"; DataTable scenarioSequence = ToDataTable(sInputs.scenarioSequence); var ScenarioSequenceType = new SqlParameter("@ScenarioSequenceType", SqlDbType.Structured); ScenarioSequenceType.Value = scenarioSequence; ScenarioSequenceType.TypeName = "E2MAS.ScenarioSequenceType"; objResponse = await _dbContext.Database.SqlQuery <UpdateScenarioReponse>("exec [E2MAS].[API_UpdateScenario] @ScenarioID,@StartYear,@EndYear,@IsPricing,@Remarks,@ScenarioSequenceType,@CountryType", new SqlParameter { ParameterName = "@ScenarioID", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = scenarioId }, new SqlParameter { ParameterName = "@StartYear", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = sInputs.scenarioInputDetail.StartYear }, new SqlParameter { ParameterName = "@EndYear", SqlDbType = SqlDbType.Char, Direction = ParameterDirection.Input, Value = sInputs.scenarioInputDetail.EndYear }, new SqlParameter { ParameterName = "@IsPricing", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = sInputs.scenarioInputDetail.IsPricing }, new SqlParameter { ParameterName = "@Remarks", SqlDbType = SqlDbType.Char, Direction = ParameterDirection.Input, Value = sInputs.scenarioInputDetail.Remarks }, countryType, ScenarioSequenceType).FirstOrDefaultAsync(); if (objResponse.Status) { dbContextTransaction.Commit(); objResponse.scenarioId = scenarioId; string ModelCode = sInputs.scenarioSequence[0].ModelName; ScenarioSequenceDetail setInProgress = await _dbContext.ScenarioSequenceDetails.Where(x => x.ScenarioId == scenarioId && x.ModelName == ModelCode).FirstOrDefaultAsync(); if (setInProgress != null) { setInProgress.ModelStatus = E2MASConstants.SCENARIOINPROGRESS; await _dbContext.SaveChangesAsync(); } objResponse.dxiStatusMessage = initateFirstModelDXI(scenarioId, sInputs.scenarioSequence[0].ModelName, 1); } } } catch (Exception ex) { objResponse.Status = false; objResponse.StatusMessage = ex.Message; dbContextTransaction.Rollback(); throw ex; } } return(objResponse); }