示例#1
0
        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);
        }
示例#2
0
        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);
        }