public ActionResult AddReactor(ReactorPO form)
        {
            ActionResult response = null;
            int          rowsAffected;

            try
            {
                _logger.LogMessage("Info", "Add Reactor Post request", MethodBase.GetCurrentMethod().ToString(),
                                   "Request to add Reactor information received.");
                if (ModelState.IsValid)
                {
                    _logger.LogMessage("Info", "Model State check passed", MethodBase.GetCurrentMethod().ToString(),
                                       "ReactorPO form model state is valid.");
                    //If thermal and electric power entered, calculate efficiency with BLO
                    if (form.ThermalPower != 0 && form.ElectricPower != 0)
                    {
                        _logger.LogMessage("Attempting to calculate efficiency.");
                        ReactorBO reactorBO = Mapping.Mapper.ReactorPOtoBO(form);
                        form.Efficiency = _reactorBLO.CalculateEfficiency(reactorBO);
                    }
                    else
                    {
                        _logger.LogMessage("Thermal Power or Electric Power not provided. Did not calculate efficiency.");
                    }
                    _logger.LogMessage("Attempting to map Reactor PO to DO.");
                    ReactorDO reactorDO = Mapping.Mapper.ReactorPOtoDO(form);
                    rowsAffected = _reactorDAO.AddNewReactor(reactorDO);

                    if (rowsAffected > 0)
                    {
                        _logger.LogMessage("Info", "New reactor information added", MethodBase.GetCurrentMethod().ToString(),
                                           form.Name + " reactor was added to database.");
                        TempData["addNew"] = "Reactor added successfully.";
                    }
                    else
                    {
                        _logger.LogMessage("Warning", "Add Reactor attempt failed", MethodBase.GetCurrentMethod().ToString(),
                                           "Attempt to add new reactor showed no database rows affected.");
                        TempData["addNew"] = "Failed to add new reactor to database.";
                    }
                    response = RedirectToAction("Index");
                }
                else
                {
                    _logger.LogMessage("Warning", "Model State check failed", MethodBase.GetCurrentMethod().ToString(),
                                       "ReactorPO form model state was not valid. Returning user to View.");
                    FillGenerationDropDown(form);
                    FillModeratorDropDown(form);
                    response = View(form);
                }
            }
            catch (Exception ex)
            {
                _logger.LogMessage(ex, "Fatal");
            }
            finally { }
            return(response);
        }
        public List <ReactorDO> ObtainAllReactors()
        {
            List <ReactorDO> reactorList     = new List <ReactorDO>();
            SqlConnection    connectionToSql = null;
            SqlCommand       obtainReactors  = null;
            SqlDataAdapter   adapter         = null;
            DataTable        reactorsTable   = new DataTable();

            try
            {
                //Instantiate SQL connection with connection string
                connectionToSql = new SqlConnection(_connectionString);
                //Instantiate SQL command for stored procedure to run
                obtainReactors             = new SqlCommand("OBTAIN_REACTORS", connectionToSql);
                obtainReactors.CommandType = CommandType.StoredProcedure;

                //Open connection to SQL
                connectionToSql.Open();
                //Instantiate Data Adapter to fill table with records obtained from query
                adapter = new SqlDataAdapter(obtainReactors);
                adapter.Fill(reactorsTable);

                //Map each row to a Data Object, and create list of DOs for the method to return
                foreach (DataRow row in reactorsTable.Rows)
                {
                    ReactorDO reactorDO = Mapping.Mapper.ReactorTableRowToDO(row);
                    reactorList.Add(reactorDO);
                }
            }
            catch (Exception ex)
            {
                //Log exceptions with DAL logger
                _logger.LogMessage(ex, "Fatal");
                throw ex;
            }
            finally
            {
                //Close and dispose of connection, and dispose adapter
                if (connectionToSql != null)
                {
                    connectionToSql.Close();
                    connectionToSql.Dispose();
                }
                else
                {
                }
                if (adapter != null)
                {
                    adapter.Dispose();
                }
                else
                {
                }
            }
            return(reactorList);
        }
        public int AddNewReactor(ReactorDO reactorDO)
        {
            int           rowsAffected    = 0;
            SqlConnection connectionToSql = null;
            SqlCommand    addReactor      = null;

            try
            {
                //Logging informational messages
                _logger.LogMessage("Info", "Add New Reactor start", MethodBase.GetCurrentMethod().ToString(),
                                   "Request to add new reactor to database received.");
                _logger.LogMessage("Instantiating SQL connection from connection string.");
                connectionToSql = new SqlConnection(_connectionString);
                _logger.LogMessage("Instantiating SQL command for stored procedure.");
                addReactor             = new SqlCommand("ADD_NEW_REACTOR", connectionToSql);
                addReactor.CommandType = CommandType.StoredProcedure;

                //Method that adds parameter values to stored procedure
                _logger.LogMessage("Adding parameters to stored procedure.");
                AddParameterValues(addReactor, reactorDO);

                _logger.LogMessage("Opening SQL connection.");
                connectionToSql.Open();
                //Execute non query stored procedure and obtain number of rows affected
                rowsAffected = addReactor.ExecuteNonQuery();

                //Check whether data was added successfully, and log accordingly
                if (rowsAffected > 0)
                {
                    _logger.LogMessage("Info", "Nonquery completed", MethodBase.GetCurrentMethod().ToString(),
                                       "New reactor information was added to the database.");
                }
                else
                {
                    _logger.LogMessage("Warning", "No rows affected in nonquery", MethodBase.GetCurrentMethod().ToString(),
                                       "Reactor information was not added to the database.");
                }
            }
            catch (Exception ex)
            {
                _logger.LogMessage(ex, "Fatal");
                throw ex;
            }
            finally
            {
                if (connectionToSql != null)
                {
                    connectionToSql.Close();
                    connectionToSql.Dispose();
                }
            }
            //Allow method to check for success from MVC as well
            return(rowsAffected);
        }
        public ReactorDO ObtainReactorByID(int id)
        {
            ReactorDO      reactorDO         = null;
            SqlConnection  connectionToSql   = null;
            SqlCommand     obtainReactorInfo = null;
            SqlDataAdapter adapter           = null;
            DataTable      reactorInfo       = new DataTable();

            try
            {
                connectionToSql               = new SqlConnection(_connectionString);
                obtainReactorInfo             = new SqlCommand("OBTAIN_REACTOR_BY_ID", connectionToSql);
                obtainReactorInfo.CommandType = CommandType.StoredProcedure;
                obtainReactorInfo.Parameters.AddWithValue("@ReactorID", id);

                connectionToSql.Open();

                adapter = new SqlDataAdapter(obtainReactorInfo);
                adapter.Fill(reactorInfo);

                if (reactorInfo.Rows.Count > 0)
                {
                    DataRow row = reactorInfo.Rows[0];
                    reactorDO = Mapping.Mapper.ReactorTableRowToDO(row);
                }
                else
                {
                    _logger.LogMessage("Warning",
                                       "Queried ID not found",
                                       MethodBase.GetCurrentMethod().ToString(),
                                       "Did not create reactorDO. No rows found in reactorInfo table.");
                }
            }
            catch (Exception ex)
            {
                _logger.LogMessage(ex, "Fatal");
                throw ex;
            }
            finally
            {
                if (connectionToSql != null)
                {
                    connectionToSql.Close();
                    connectionToSql.Dispose();
                }
                if (adapter != null)
                {
                    adapter.Dispose();
                }
            }
            return(reactorDO);
        }
        public void UpdateReactor(ReactorDO reactorDO)
        {
            int           rowsAffected    = 0;
            SqlConnection connectionToSql = null;
            SqlCommand    updateReactor   = null;

            try
            {
                _logger.LogMessage("Info", "Update Reactor start", MethodBase.GetCurrentMethod().ToString(),
                                   "Request to update reactor with ID #" + reactorDO.ReactorID + " received.");
                _logger.LogMessage("Instantiating SQL connection from connection string.");
                connectionToSql = new SqlConnection(_connectionString);
                _logger.LogMessage("Instantiating SQL command for stored procedure.");
                updateReactor             = new SqlCommand("UPDATE_REACTOR", connectionToSql);
                updateReactor.CommandType = CommandType.StoredProcedure;

                //Add parameters, including ID
                _logger.LogMessage("Adding parameters to stored procedure.");
                updateReactor.Parameters.AddWithValue("@ReactorID", reactorDO.ReactorID);
                AddParameterValues(updateReactor, reactorDO);

                _logger.LogMessage("Opening SQL connection.");
                connectionToSql.Open();
                rowsAffected = updateReactor.ExecuteNonQuery();
                //Check whether the row was affected, and log accordingly
                if (rowsAffected > 0)
                {
                    _logger.LogMessage("Info", "Nonquery completed", MethodBase.GetCurrentMethod().ToString(),
                                       "Reactor information was updated.");
                }
                else
                {
                    _logger.LogMessage("Warning", "No rows affected in nonquery", MethodBase.GetCurrentMethod().ToString(),
                                       "Reactor information was not updated.");
                }
            }
            catch (Exception ex)
            {
                _logger.LogMessage(ex, "Fatal");
                throw ex;
            }
            finally
            {
                if (connectionToSql != null)
                {
                    connectionToSql.Close();
                    connectionToSql.Dispose();
                }
            }
        }
 public void AddParameterValues(SqlCommand storedProcedure, ReactorDO reactorDO)
 {
     //Adding parameter values to stored procedure from DO
     //Check if nullable fields are null to pass DBNull
     storedProcedure.Parameters.AddWithValue("@Name", reactorDO.Name);
     storedProcedure.Parameters.AddWithValue("@FullName", (object)reactorDO.FullName ?? DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@IsThermal", reactorDO.IsThermal);
     storedProcedure.Parameters.AddWithValue("@ModeratorID", (reactorDO.ModeratorID != 0) ? (object)reactorDO.ModeratorID : DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@PrimaryCoolant", reactorDO.PrimaryCoolant);
     storedProcedure.Parameters.AddWithValue("@Fuel", reactorDO.Fuel);
     storedProcedure.Parameters.AddWithValue("@ThermalPower", (reactorDO.ThermalPower != 0) ? (object)reactorDO.ThermalPower : DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@ElectricPower", (reactorDO.ElectricPower != 0) ? (object)reactorDO.ElectricPower : DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@Efficiency", (reactorDO.Efficiency != 0) ? (object)reactorDO.Efficiency : DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@Year", reactorDO.Year);
     storedProcedure.Parameters.AddWithValue("@Generation", (object)reactorDO.Generation ?? DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@CountryOfOrigin", (object)reactorDO.CountryOfOrigin ?? DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@NumberActive", (reactorDO.NumberActive != 0) ? (object)reactorDO.NumberActive : DBNull.Value);
     storedProcedure.Parameters.AddWithValue("@Notes", (object)reactorDO.Notes ?? DBNull.Value);
 }
        public ActionResult UpdateReactor(int id)
        {
            ReactorPO form = new ReactorPO();

            try
            {
                _logger.LogMessage("Info", "Update Reactor Get request", MethodBase.GetCurrentMethod().ToString(),
                                   "Request for update form for reactor with ID#" + id + " received.");
                ReactorDO reactorDO = _reactorDAO.ObtainReactorByID(id);
                form = Mapping.Mapper.ReactorDOtoPO(reactorDO);
                FillGenerationDropDown(form);
                FillModeratorDropDown(form);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally { }
            return(View(form));
        }
Пример #8
0
        public static ReactorPO ReactorDOtoPO(ReactorDO from)
        {
            ReactorPO to = new ReactorPO();

            to.ReactorID       = from.ReactorID;
            to.Name            = from.Name;
            to.FullName        = from.FullName;
            to.IsThermal       = from.IsThermal;
            to.ModeratorID     = from.ModeratorID;
            to.PrimaryCoolant  = from.PrimaryCoolant;
            to.Fuel            = from.Fuel;
            to.ThermalPower    = from.ThermalPower;
            to.ElectricPower   = from.ElectricPower;
            to.Efficiency      = from.Efficiency;
            to.Year            = from.Year;
            to.Generation      = from.Generation;
            to.CountryOfOrigin = from.CountryOfOrigin;
            to.NumberActive    = from.NumberActive;
            to.Notes           = from.Notes;
            return(to);
        }
Пример #9
0
        public static ReactorDO ReactorTableRowToDO(DataRow row)
        {
            ReactorDO reactorDO = new ReactorDO();

            reactorDO.ReactorID       = int.Parse(row["ReactorID"].ToString());
            reactorDO.Name            = row["Name"].ToString().Trim();
            reactorDO.FullName        = row["FullName"].ToString().Trim();
            reactorDO.IsThermal       = bool.Parse(row["IsThermal"].ToString());
            reactorDO.ModeratorID     = (int.TryParse(row["ModeratorID"].ToString(), out int moderatorID)) ? moderatorID : default(int);
            reactorDO.PrimaryCoolant  = row["PrimaryCoolant"].ToString().Trim();
            reactorDO.Fuel            = row["Fuel"].ToString().Trim();
            reactorDO.ThermalPower    = (float.TryParse(row["ThermalPower"].ToString(), out float thermalPower)) ? thermalPower : default(float);
            reactorDO.ElectricPower   = (float.TryParse(row["ElectricPower"].ToString(), out float electricPower)) ? electricPower : default(float);
            reactorDO.Efficiency      = (float.TryParse(row["Efficiency"].ToString(), out float efficiency)) ? efficiency : default(float);
            reactorDO.Year            = int.Parse(row["Year"].ToString());
            reactorDO.Generation      = row["Generation"].ToString().Trim();
            reactorDO.CountryOfOrigin = row["CountryOfOrigin"].ToString().Trim();
            reactorDO.NumberActive    = (int.TryParse(row["NumberActive"].ToString(), out int active)) ? active : default(int);
            reactorDO.Notes           = row["Notes"].ToString().Trim();
            return(reactorDO);
        }
        public ActionResult ReactorDetails(int id)
        {
            ActionResult response = null;

            try
            {
                ReactorDO reactorDO = _reactorDAO.ObtainReactorByID(id);
                if (reactorDO != null)
                {
                    _logger.LogMessage("Info", "Reactor Details", MethodBase.GetCurrentMethod().ToString(),
                                       "User request to view details of reactor with ID #" + id + " is valid.");
                    ReactorPO reactorPO = Mapping.Mapper.ReactorDOtoPO(reactorDO);
                    if (reactorPO.ModeratorID != 0)
                    {
                        reactorPO.ModeratorName = _reactorDAO.ObtainModeratorNameByID(reactorPO.ModeratorID);
                    }
                    else
                    {
                    }

                    if (Session["ID"] != null)
                    {
                        List <BookmarkDO> bookmarkDOList = _bookmarkDAO.ObtainBookmarksByUserID(int.Parse(Session["ID"].ToString()));
                        if (bookmarkDOList.Count > 0)
                        {
                            List <int> bookmarkReactorIDs = new List <int>();
                            foreach (BookmarkDO bookmarkDO in bookmarkDOList)
                            {
                                bookmarkReactorIDs.Add(bookmarkDO.ReactorID);
                            }
                            if (bookmarkReactorIDs.Contains(id))
                            {
                                ViewBag.isBookmarked = true;
                            }
                            else
                            {
                                ViewBag.isBookmarked = false;
                            }
                        }
                        else
                        {
                            ViewBag.isBookmarked = false;
                        }
                    }
                    else
                    {
                    }
                    response = View(reactorPO);
                }
                else
                {
                    _logger.LogMessage("Warning", "Page not found", MethodBase.GetCurrentMethod().ToString(),
                                       "User attempted to navigate to ReactorDetails on null ID " + id + ". " +
                                       "Redirecting to Index.");
                    TempData["idNotFound"] = "The page you were looking for could not be found." +
                                             "You have been returned to the reactor list.";
                    response = RedirectToAction("Index");
                }
            }
            catch (Exception ex)
            {
                _logger.LogMessage(ex, "Fatal");
            }
            finally { }
            return(response);
        }