/// <summary>
 /// Update the Project Info in the database
 /// </summary>
 /// <param name="model"></param>
 public void UpdateProjectInfo(InfoModel model)
 {
     using (SqlCommand command = new SqlCommand("[TIP].[UpdateProjectVersionInfo]") { CommandType = CommandType.StoredProcedure })
     {
         //model.Adoption != null ? (object)model.Adoption.Value : (object)DBNull.Value
         command.Parameters.AddWithValue("@PROJECTVERSIONID", model.ProjectVersionId);
         command.Parameters.AddWithValue("@TIPYEAR", model.TipYear);
         command.Parameters.AddWithValue("@PROJECTID", model.ProjectId);
         command.Parameters.AddWithValue("@PROJECTNAME", model.ProjectName);
         command.Parameters.AddWithValue("@ProjectTypeID", model.ProjectTypeId);
         //SponsorID is not stored - it's an attribute of the sponsor contact. -DB No, you are wrong. Unrelated concept. -DD
         command.Parameters.AddWithValue("@SponsorID", model.SponsorId != null ? (object) model.SponsorId.Value : (object) DBNull.Value);
         command.Parameters.AddWithValue("@SPONSORCONTACTID", model.SponsorContactId != null ? (object)model.SponsorContactId.Value : (object)DBNull.Value);
         command.Parameters.AddWithValue("@ADMINLEVELID", model.AdministrativeLevelId != null ? (object)model.AdministrativeLevelId.Value : (object)DBNull.Value);
         command.Parameters.AddWithValue("@IMPTYPEID", model.ImprovementTypeId != null ? (object)model.ImprovementTypeId.Value : (object)DBNull.Value);
         command.Parameters.AddWithValue("@ProjectPoolID", model.ProjectPoolId != null ? (object)model.ProjectPoolId.Value : (object)DBNull.Value);
         command.Parameters.AddWithValue("@ISPOOLMASTER", model.IsPoolMaster != null ? (object)model.IsPoolMaster.Value : (object)DBNull.Value);
         command.Parameters.AddWithValue("@TRANSTYPEID", model.TransportationTypeId != null ? (object)model.TransportationTypeId.Value : (object)DBNull.Value);
         command.Parameters.AddWithValue("@SelectionAgencyID", model.SelectionAgencyId != null ? (object) model.SelectionAgencyId.Value : (object) DBNull.Value);
         command.Parameters.AddWithValue("@SPONSORNOTES", model.SponsorNotes);
         command.Parameters.AddWithValue("@DRCOGNOTES", model.DRCOGNotes);
         command.Parameters.AddWithValue("@RegionallySignificant", model.IsRegionallySignificant != null ? (object)model.IsRegionallySignificant.Value : (object)DBNull.Value);
         command.Parameters.AddWithValue("@StipId", model.STIPID);
         this.ExecuteNonQuery(command);
     }
 }
 protected IDictionary<int, string> AvailableSponsorContacts(InfoModel info)
 {
     if (info.SponsorId.HasValue)
     {
         return GetSponsorContacts(info.SponsorId.Value);
     }
     return null;
 }
        /// <summary>
        /// Get a TipProjectVersionInfoModel. This is the model behind the
        /// Info Tab
        /// </summary>
        /// <param name="versionId"></param>
        /// <param name="tipYear"></param>
        /// <returns></returns>
        public InfoModel GetProjectInfo(int versionId, string tipYear)
        {
            InfoModel result = null;
            using (SqlCommand command = new SqlCommand("[TIP].[GetProjectVersionInfo]") { CommandType = CommandType.StoredProcedure })
            {
                command.Parameters.AddWithValue("@TipYear", tipYear);
                command.Parameters.AddWithValue("@TipProjectVersion", versionId);
                command.Parameters.AddWithValue("@IsActive", 1);

                using (IDataReader rdr = ExecuteReader(command))
                {
                    if (rdr.Read())
                    {
                        result = new InfoModel();
                        result.AdministrativeLevelId = rdr["AdministrativeLevelID"] != DBNull.Value ? (int?)rdr["AdministrativeLevelID"] : null;
                        result.DRCOGNotes = rdr["DRCOGNotes"].ToString();
                        result.ImprovementTypeId = rdr["ImprovementTypeId"] != DBNull.Value ? (int?)rdr["ImprovementTypeId"] : null;
                        result.PoolMasterVersionID = rdr["PoolMasterVersionID"] != DBNull.Value ? (int?)rdr["PoolMasterVersionID"] : null;
                        result.ProjectId = rdr["ProjectID"] != DBNull.Value ? (int?)rdr["ProjectID"] : null;
                        result.ProjectName = rdr["ProjectName"].ToString();
                        result.ProjectTypeId = rdr["ProjectTypeID"] != DBNull.Value ? (int?)rdr["ProjectTypeID"] : null;
                        result.ProjectVersionId = rdr["ProjectVersionID"] != DBNull.Value ? (int?)rdr["ProjectVersionID"] : null;
                        result.SponsorContactId = rdr["SponsorContactID"] != DBNull.Value ? (int?)rdr["SponsorContactID"] : null;
                        result.SponsorId = rdr["SponsorID"] != DBNull.Value ? (int?)rdr["SponsorID"] : null;
                        result.SponsorNotes = rdr["SponsorNotes"].ToString();
                        result.TipId = rdr["TipId"].ToString();
                        result.TipYear = rdr["TipYear"].ToString();
                        result.TransportationTypeId = rdr["TransportationTypeID"] != DBNull.Value ? (int?)rdr["TransportationTypeID"] : null;
                        result.SelectionAgencyId = rdr["SelectionAgencyID"] != DBNull.Value ? (int?)rdr["SelectionAgencyID"] : null;
                        result.ProjectPoolId = rdr["ProjectPoolId"] != DBNull.Value ? (int?)rdr["ProjectPoolId"] : null;
                        result.IsRegionallySignificant = rdr["RegionalSignificance"] != DBNull.Value ? (bool)rdr["RegionalSignificance"] : false;
                        result.LocationMapId = rdr["LocationMapID"].ToString().SmartParseDefault<int>(default(int));
                        result.STIPID = rdr["STIPId"].ToString();
                    }
                }
            }
            return result;
        }