/// <summary>
 /// Create a new T_WQX_IMPORT_TEMP_SAMPLE object.
 /// </summary>
 /// <param name="tEMP_SAMPLE_IDX">Initial value of the TEMP_SAMPLE_IDX property.</param>
 /// <param name="uSER_ID">Initial value of the USER_ID property.</param>
 /// <param name="aCT_TYPE">Initial value of the ACT_TYPE property.</param>
 /// <param name="aCT_MEDIA">Initial value of the ACT_MEDIA property.</param>
 public static T_WQX_IMPORT_TEMP_SAMPLE CreateT_WQX_IMPORT_TEMP_SAMPLE(global::System.Int32 tEMP_SAMPLE_IDX, global::System.String uSER_ID, global::System.String aCT_TYPE, global::System.String aCT_MEDIA)
 {
     T_WQX_IMPORT_TEMP_SAMPLE t_WQX_IMPORT_TEMP_SAMPLE = new T_WQX_IMPORT_TEMP_SAMPLE();
     t_WQX_IMPORT_TEMP_SAMPLE.TEMP_SAMPLE_IDX = tEMP_SAMPLE_IDX;
     t_WQX_IMPORT_TEMP_SAMPLE.USER_ID = uSER_ID;
     t_WQX_IMPORT_TEMP_SAMPLE.ACT_TYPE = aCT_TYPE;
     t_WQX_IMPORT_TEMP_SAMPLE.ACT_MEDIA = aCT_MEDIA;
     return t_WQX_IMPORT_TEMP_SAMPLE;
 }
 /// <summary>
 /// Deprecated Method for adding a new object to the T_WQX_IMPORT_TEMP_SAMPLE EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToT_WQX_IMPORT_TEMP_SAMPLE(T_WQX_IMPORT_TEMP_SAMPLE t_WQX_IMPORT_TEMP_SAMPLE)
 {
     base.AddObject("T_WQX_IMPORT_TEMP_SAMPLE", t_WQX_IMPORT_TEMP_SAMPLE);
 }
예제 #3
0
        public static int InsertUpdateWQX_IMPORT_TEMP_SAMPLE_New(string uSER_ID, string oRG_ID, int? pROJECT_IDX, string pROJECT_ID, Dictionary<string, string> colVals)
        {
            try
            {
                using (OpenEnvironmentEntities ctx = new OpenEnvironmentEntities())
                {
                    bool insInd = false;

                    //******************* GET STARTING RECORD *************************************************
                    string _a = Utils.GetValueOrDefault(colVals, "ACTIVITY_ID");
                    T_WQX_IMPORT_TEMP_SAMPLE a = (from c in ctx.T_WQX_IMPORT_TEMP_SAMPLE
                            where c.ACTIVITY_ID == _a
                            && c.ORG_ID == oRG_ID
                            select c).FirstOrDefault();

                    //if can't find a match based on supplied ID, then create a new record
                    if (a == null)
                    {
                        insInd = true;
                        a = new T_WQX_IMPORT_TEMP_SAMPLE();
                    }
                    //********************** END GET STARTING RECORD ************************************************

                    a.IMPORT_STATUS_CD = "P";
                    a.IMPORT_STATUS_DESC = "";

                    if (!string.IsNullOrEmpty(uSER_ID)) a.USER_ID = uSER_ID; else return 0;
                    if (!string.IsNullOrEmpty(oRG_ID)) a.ORG_ID = oRG_ID; else return 0;
                    if (pROJECT_IDX != null) a.PROJECT_IDX = pROJECT_IDX; else return 0;
                    if (!string.IsNullOrEmpty(pROJECT_ID)) a.PROJECT_ID = pROJECT_ID; else return 0;

                    //get import config rules
                    List<ConfigInfoType> _allRules = Utils.GetAllColumnInfo("S");

                    //validate mandatory fields
                    WQX_IMPORT_TEMP_SAMPLE_GenVal(ref a, _allRules, colVals, "MONLOC_ID");
                    WQX_IMPORT_TEMP_SAMPLE_GenVal(ref a, _allRules, colVals, "ACTIVITY_ID");
                    WQX_IMPORT_TEMP_SAMPLE_GenVal(ref a, _allRules, colVals, "ACT_TYPE");
                    WQX_IMPORT_TEMP_SAMPLE_GenVal(ref a, _allRules, colVals, "ACT_MEDIA");
                    WQX_IMPORT_TEMP_SAMPLE_GenVal(ref a, _allRules, colVals, "ACT_START_DT");

                    //loop through all optional fields
                    List<string> rFields = new List<string>(new string[] { "ACT_SUBMEDIA","ACT_END_DT","ACT_TIME_ZONE","RELATIVE_DEPTH_NAME","ACT_DEPTHHEIGHT_MSR",
                        "ACT_DEPTHHEIGHT_MSR_UNIT","TOP_DEPTHHEIGHT_MSR","TOP_DEPTHHEIGHT_MSR_UNIT","BOT_DEPTHHEIGHT_MSR","BOT_DEPTHHEIGHT_MSR_UNIT","DEPTH_REF_POINT",
                        "ACT_COMMENT","BIO_ASSEMBLAGE_SAMPLED","BIO_DURATION_MSR","BIO_DURATION_MSR_UNIT","BIO_SAMP_COMPONENT", "BIO_SAMP_COMPONENT_SEQ","BIO_REACH_LEN_MSR",
                        "BIO_REACH_LEN_MSR_UNIT","BIO_REACH_WID_MSR","BIO_REACH_WID_MSR_UNIT","BIO_PASS_COUNT","BIO_NET_TYPE","BIO_NET_AREA_MSR","BIO_NET_AREA_MSR_UNIT",
                        "BIO_NET_MESHSIZE_MSR","BIO_MESHSIZE_MSR_UNIT","BIO_BOAT_SPEED_MSR","BIO_BOAT_SPEED_MSR_UNIT","BIO_CURR_SPEED_MSR","BIO_CURR_SPEED_MSR_UNIT",
                        "BIO_TOXICITY_TEST_TYPE","SAMP_COLL_METHOD_IDX","SAMP_COLL_METHOD_ID","SAMP_COLL_METHOD_CTX","SAMP_COLL_EQUIP","SAMP_COLL_EQUIP_COMMENT",
                        "SAMP_PREP_IDX","SAMP_PREP_ID","SAMP_PREP_CTX","SAMP_PREP_CONT_TYPE","SAMP_PREP_CONT_COLOR","SAMP_PREP_CHEM_PRESERV","SAMP_PREP_THERM_PRESERV","SAMP_PREP_STORAGE_DESC"
                    });

                    foreach (KeyValuePair<string, string> entry in colVals)
                        if (rFields.Contains(entry.Key))
                            WQX_IMPORT_TEMP_SAMPLE_GenVal(ref a, _allRules, colVals, entry.Key);

                    //********************** CUSTOM POST VALIDATION ********************************************
                    //SET MONLOC_IDX based on supplied MONLOC_ID
                    if (!string.IsNullOrEmpty(a.MONLOC_ID))
                    {
                        T_WQX_MONLOC mm = db_WQX.GetWQX_MONLOC_ByIDString(oRG_ID, a.MONLOC_ID);
                        if (mm == null) { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "Invalid Monitoring Location ID."; }
                        else { a.MONLOC_IDX = mm.MONLOC_IDX; }
                    }

                    //SET ACTIVITY TIMEZONE IF NOT SUPPLIED
                    if (string.IsNullOrEmpty(a.ACT_TIME_ZONE))
                        a.ACT_TIME_ZONE = Utils.GetWQXTimeZoneByDate(a.ACT_START_DT.ConvertOrDefault<DateTime>());

                    //special sampling collection method handling
                    if (a.SAMP_COLL_METHOD_IDX != null)
                    {
                        //if IDX is populated, grab ID/Name/Ctx
                        T_WQX_REF_SAMP_COL_METHOD scm = db_Ref.GetT_WQX_REF_SAMP_COL_METHOD_ByIDX(a.SAMP_COLL_METHOD_IDX);
                        if (scm != null)
                        {
                            a.SAMP_COLL_METHOD_ID = scm.SAMP_COLL_METHOD_ID;
                            a.SAMP_COLL_METHOD_NAME = scm.SAMP_COLL_METHOD_NAME;
                            a.SAMP_COLL_METHOD_CTX = scm.SAMP_COLL_METHOD_CTX;
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(a.SAMP_COLL_METHOD_ID))
                        {
                            T_WQX_REF_SAMP_COL_METHOD scm = db_Ref.GetT_WQX_REF_SAMP_COL_METHOD_ByIDandContext(a.SAMP_COLL_METHOD_ID, a.SAMP_COLL_METHOD_CTX);
                            if (scm != null)
                                a.SAMP_COLL_METHOD_IDX = scm.SAMP_COLL_METHOD_IDX;
                            else  //no matching sample collection method lookup found
                            { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "No matching Sample Collection Method found - please add it at the Reference Data screen first. "; }
                        }
                    }

                    //special validation requiring sampling collection method if activity type contains "Sample"
                    if (a.SAMP_COLL_METHOD_IDX == null && a.ACT_TYPE.ToUpper().Contains("SAMPLE"))
                    { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "Sample Collection Method is required when Activity Type contains the term -Sample-. "; }

                    //special validation requiring sampling collection equipment if activity type contains "Sample"
                    if (string.IsNullOrEmpty(a.SAMP_COLL_EQUIP) && a.ACT_TYPE.ToUpper().Contains("SAMPLE"))
                    { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "Sample Collection Equipment is required when Activity Type contains the term -Sample-. "; }

                    //sampling prep method handling
                    if (a.SAMP_PREP_IDX == null)
                    {
                        if (string.IsNullOrEmpty(a.SAMP_PREP_CTX) && !string.IsNullOrEmpty(a.SAMP_PREP_ID))
                            a.SAMP_PREP_CTX = oRG_ID;

                        if (!string.IsNullOrEmpty(a.SAMP_PREP_ID) && !string.IsNullOrEmpty(a.SAMP_PREP_CTX))
                        {
                            //see if matching prep method exists
                            T_WQX_REF_SAMP_PREP sp = db_Ref.GetT_WQX_REF_SAMP_PREP_ByIDandContext(a.SAMP_PREP_ID, a.SAMP_PREP_CTX);
                            if (sp != null)
                                a.SAMP_PREP_IDX = sp.SAMP_PREP_IDX;
                            else  //no matching sample prep method lookup found
                            { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "No matching Sample Prep Method found - please add it at the Reference Data screen first. ";  }
                        }
                    }
                    //********************** CUSTOM POST VALIDATION ********************************************

                    a.IMPORT_STATUS_DESC = a.IMPORT_STATUS_DESC.SubStringPlus(0, 200);

                    if (insInd) //insert case
                        ctx.AddToT_WQX_IMPORT_TEMP_SAMPLE(a);

                    ctx.SaveChanges();

                    return a.TEMP_SAMPLE_IDX;
                }
            }
            catch (Exception ex)
            {
                return 0;
            }
        }
예제 #4
0
        public static void WQX_IMPORT_TEMP_SAMPLE_GenVal(ref T_WQX_IMPORT_TEMP_SAMPLE a, List<ConfigInfoType> t, Dictionary<string, string> colVals, string f)
        {
            var _rules = t.Find(item => item._name == f);   //import validation rules for this field
            if (_rules == null)
                return;

            string _value = Utils.GetValueOrDefault(colVals, f); //supplied value for this field

            if (!string.IsNullOrEmpty(_value)) //if value is supplied
            {
                _value = _value.Trim();

                //if this field has another field which gets added to it (used for Date + Time fields)
                if (!string.IsNullOrEmpty(_rules._addfield))
                    _value = _value + " " + Utils.GetValueOrDefault(colVals, _rules._addfield);

                //strings: field length validation and substring
                if (_rules._datatype == "" && _rules._length != null)
                {
                    if (_value.Length > _rules._length)
                    {
                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " length (" + _rules._length + ") exceeded. ");

                        _value = _value.SubStringPlus(0, (int)_rules._length);
                    }
                }

                //integers: check type
                if (_rules._datatype == "int")
                {
                    int n;
                    if (int.TryParse(_value, out n) == false)
                    {
                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " not numeric. ");
                    }
                }

                //datetime: check type
                if (_rules._datatype == "datetime")
                {
                    if (_value.ConvertOrDefault<DateTime>().Year < 1900)
                    {
                        if (_rules._req == "Y")
                            _value = new DateTime(1900, 1, 1).ToString();

                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " not properly formatted. ");
                    }
                }

                //ref data lookup
                if (_rules._fkey.Length > 0)
                {
                    if (db_Ref.GetT_WQX_REF_DATA_ByKey(_rules._fkey, _value) == false)
                    {
                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " not valid. ");
                    }
                }
            }
            else
            {
                //required check
                if (_rules._req == "Y")
                {
                    if (_rules._datatype == "")
                        _value = "-";
                    else if (_rules._datatype == "datetime")
                        _value = new DateTime(1900, 1, 1).ToString();
                    a.IMPORT_STATUS_CD = "F";
                    a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + "Required field " + f + " missing. ");
                }
            }

            //finally set the value before returning
            try
            {
                if (_rules._datatype == "")
                    typeof(T_WQX_IMPORT_TEMP_SAMPLE).GetProperty(f).SetValue(a, _value);
                else if (_rules._datatype == "int")
                    typeof(T_WQX_IMPORT_TEMP_SAMPLE).GetProperty(f).SetValue(a, _value.ConvertOrDefault<int?>());
                else if (_rules._datatype == "datetime" && _rules._req == "Y")
                    typeof(T_WQX_IMPORT_TEMP_SAMPLE).GetProperty(f).SetValue(a, _value.ConvertOrDefault<DateTime>());
                else if (_rules._datatype == "datetime" && _rules._req == "N")
                    typeof(T_WQX_IMPORT_TEMP_SAMPLE).GetProperty(f).SetValue(a, _value.ConvertOrDefault<DateTime?>());
            }
            catch { }
        }
예제 #5
0
        // *************************** IMPORT: SAMPLE    ******************************
        // *****************************************************************************
        public static int InsertOrUpdateWQX_IMPORT_TEMP_SAMPLE(global::System.Int32? tEMP_SAMPLE_IDX, string uSER_ID, global::System.String oRG_ID, global::System.Int32? pROJECT_IDX,
            string pROJECT_ID, global::System.Int32? mONLOC_IDX, string mONLOC_ID, global::System.Int32? aCTIVITY_IDX, global::System.String aCTIVITY_ID,
            global::System.String aCT_TYPE, global::System.String aCT_MEDIA, global::System.String aCT_SUBMEDIA, global::System.DateTime? aCT_START_DT, global::System.DateTime? aCT_END_DT,
            global::System.String aCT_TIME_ZONE, global::System.String rELATIVE_DEPTH_NAME, global::System.String aCT_DEPTHHEIGHT_MSR, global::System.String aCT_DEPTHHEIGHT_MSR_UNIT,
            global::System.String tOP_DEPTHHEIGHT_MSR, global::System.String tOP_DEPTHHEIGHT_MSR_UNIT, global::System.String bOT_DEPTHHEIGHT_MSR, global::System.String bOT_DEPTHHEIGHT_MSR_UNIT,
            global::System.String dEPTH_REF_POINT, global::System.String aCT_COMMENT, global::System.String bIO_ASSEMBLAGE_SAMPLED, global::System.String bIO_DURATION_MSR,
            global::System.String bIO_DURATION_MSR_UNIT, global::System.String bIO_SAMP_COMPONENT, int? bIO_SAMP_COMPONENT_SEQ, global::System.String bIO_REACH_LEN_MSR,
            global::System.String bIO_REACH_LEN_MSR_UNIT, global::System.String bIO_REACH_WID_MSR, global::System.String bIO_REACH_WID_MSR_UNIT, int? bIO_PASS_COUNT,
            global::System.String bIO_NET_TYPE, global::System.String bIO_NET_AREA_MSR, global::System.String bIO_NET_AREA_MSR_UNIT, global::System.String bIO_NET_MESHSIZE_MSR,
            global::System.String bIO_MESHSIZE_MSR_UNIT, global::System.String bIO_BOAT_SPEED_MSR, global::System.String bIO_BOAT_SPEED_MSR_UNIT, global::System.String bIO_CURR_SPEED_MSR,
            global::System.String bIO_CURR_SPEED_MSR_UNIT, global::System.String bIO_TOXICITY_TEST_TYPE, int? sAMP_COLL_METHOD_IDX, global::System.String sAMP_COLL_METHOD_ID,
            global::System.String sAMP_COLL_METHOD_CTX, global::System.String sAMP_COLL_METHOD_NAME, global::System.String sAMP_COLL_EQUIP, global::System.String sAMP_COLL_EQUIP_COMMENT,
            int? sAMP_PREP_IDX, global::System.String sAMP_PREP_ID, global::System.String sAMP_PREP_CTX, global::System.String sAMP_PREP_NAME,
            global::System.String sAMP_PREP_CONT_TYPE, global::System.String sAMP_PREP_CONT_COLOR, global::System.String sAMP_PREP_CHEM_PRESERV,
            global::System.String sAMP_PREP_THERM_PRESERV, global::System.String sAMP_PREP_STORAGE_DESC, string sTATUS_CD, string sTATUS_DESC, bool BioIndicator, Boolean autoImportRefDataInd)
        {
            try
            {
                using (OpenEnvironmentEntities ctx = new OpenEnvironmentEntities())
                {
                    Boolean insInd = false;

                    //******************* GET STARTING RECORD *************************************************
                    T_WQX_IMPORT_TEMP_SAMPLE a;
                    if (tEMP_SAMPLE_IDX != null)  //grab from IDX if given
                        a = (from c in ctx.T_WQX_IMPORT_TEMP_SAMPLE
                             where c.TEMP_SAMPLE_IDX == tEMP_SAMPLE_IDX
                             select c).FirstOrDefault();
                    else  //check if existing activity ID exists in the import
                    {
                        a = (from c in ctx.T_WQX_IMPORT_TEMP_SAMPLE
                             where c.ACTIVITY_ID == aCTIVITY_ID
                             && c.ORG_ID == oRG_ID
                             select c).FirstOrDefault();
                    }

                    //if can't find a match based on supplied IDX or ID, then create a new record
                    if (a == null)
                    {
                        insInd = true;
                        a = new T_WQX_IMPORT_TEMP_SAMPLE();
                    }
                    //********************** END GET STARTING RECORD ************************************************

                    if (!string.IsNullOrEmpty(uSER_ID)) a.USER_ID = uSER_ID;
                    if (!string.IsNullOrEmpty(oRG_ID)) a.ORG_ID = oRG_ID;

                    //PROJECT HANDLING
                    if (pROJECT_IDX == null && pROJECT_ID == null) { sTATUS_CD = "F"; sTATUS_DESC += "Project ID must be provided. "; }
                    if (pROJECT_IDX != null) a.PROJECT_IDX = pROJECT_IDX;

                    if (pROJECT_ID != null)
                    {
                        a.PROJECT_ID = pROJECT_ID.Trim().SubStringPlus(0, 35);

                        T_WQX_PROJECT ptemp = db_WQX.GetWQX_PROJECT_ByIDString(pROJECT_ID, oRG_ID);
                        if (ptemp == null) { sTATUS_CD = "F"; sTATUS_DESC += "Project ID does not exist. Create project first."; }
                        else { a.PROJECT_IDX = ptemp.PROJECT_IDX; }
                    }

                    //MONITORING LOCATION HANDLING
                    if (mONLOC_IDX == null && mONLOC_ID == null) { sTATUS_CD = "F"; sTATUS_DESC += "Monitoring Location ID must be provided. "; }
                    if (mONLOC_IDX != null) a.MONLOC_IDX = mONLOC_IDX;

                    if (mONLOC_ID != null)
                    {
                        a.MONLOC_ID = mONLOC_ID.Trim().SubStringPlus(0, 35);

                        T_WQX_MONLOC mm = db_WQX.GetWQX_MONLOC_ByIDString(oRG_ID, mONLOC_ID);
                        if (mm == null) { sTATUS_CD = "F"; sTATUS_DESC += "Monitoring Location ID does not exist. Import MonLocs first."; }
                        else { a.MONLOC_IDX = mm.MONLOC_IDX; }
                    }

                    //ACTIVITY ID HANDLING
                    if (aCTIVITY_IDX == null && aCTIVITY_ID == null) { sTATUS_CD = "F"; sTATUS_DESC += "Activity ID must be provided. "; }
                    if (aCTIVITY_IDX != null) a.ACTIVITY_IDX = aCTIVITY_IDX;
                    if (!string.IsNullOrEmpty(aCTIVITY_ID)) a.ACTIVITY_ID = aCTIVITY_ID.Trim().SubStringPlus(0, 35);

                    //ACTIVITY TYPE HANDLING
                    if (!string.IsNullOrEmpty(aCT_TYPE))
                    {
                        a.ACT_TYPE = aCT_TYPE.SubStringPlus(0, 70) ?? "";
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ActivityType", aCT_TYPE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Activity Type not valid. "; }
                    }
                    else
                    { a.ACT_TYPE = "";  sTATUS_CD = "F"; sTATUS_DESC += "Activity Type is required."; }

                    if (!string.IsNullOrEmpty(aCT_MEDIA))
                    {
                        a.ACT_MEDIA = aCT_MEDIA.SubStringPlus(0, 20) ?? "";
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ActivityMedia", aCT_MEDIA.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Activity Media not valid. "; }
                    }
                    else
                    { a.ACT_MEDIA = ""; sTATUS_CD = "F"; sTATUS_DESC += "Activity Media is required."; }

                    if (!string.IsNullOrEmpty(aCT_SUBMEDIA))
                    {
                        a.ACT_SUBMEDIA = aCT_SUBMEDIA.SubStringPlus(0, 45);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ActivityMediaSubdivision", aCT_SUBMEDIA.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Activity Media Subdivision not valid. "; }
                    }

                    if (aCT_START_DT == null)
                    {
                        sTATUS_CD = "F"; sTATUS_DESC += "Activity Start Date must be provided. ";
                    }
                    else
                    {
                        //fix improperly formatted datetime
                        if (aCT_START_DT.ConvertOrDefault<DateTime>().Year < 1900)
                            { sTATUS_CD = "F"; sTATUS_DESC += "Activity Start Date is formatted incorrectly. "; }
                        else
                            a.ACT_START_DT = aCT_START_DT;
                    }

                    if (aCT_END_DT != null)
                    {
                        //fix improperly formatted datetime
                        if (aCT_END_DT.ConvertOrDefault<DateTime>().Year < 1900)
                            aCT_END_DT = null;

                        a.ACT_END_DT = aCT_END_DT;
                    }

                    if (!string.IsNullOrEmpty(aCT_TIME_ZONE))
                    {
                        a.ACT_TIME_ZONE = aCT_TIME_ZONE.Trim().SubStringPlus(0, 4);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("TimeZone", aCT_TIME_ZONE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "TimeZone not valid. "; }
                    }
                    else
                    {
                        //put in Timezone if missing
                        a.ACT_TIME_ZONE = Utils.GetWQXTimeZoneByDate(a.ACT_START_DT.ConvertOrDefault<DateTime>());
                    }

                    if (!string.IsNullOrEmpty(rELATIVE_DEPTH_NAME))
                    {
                        a.RELATIVE_DEPTH_NAME = rELATIVE_DEPTH_NAME.Trim().SubStringPlus(0, 15);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ActivityRelativeDepth", rELATIVE_DEPTH_NAME.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Relative Depth Name not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(aCT_DEPTHHEIGHT_MSR))
                    {
                        a.ACT_DEPTHHEIGHT_MSR = aCT_DEPTHHEIGHT_MSR.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(aCT_DEPTHHEIGHT_MSR_UNIT))
                    {
                        a.ACT_DEPTHHEIGHT_MSR_UNIT = aCT_DEPTHHEIGHT_MSR_UNIT.Trim().SubStringPlus(0, 12);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", aCT_DEPTHHEIGHT_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Depth Measure Unit not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(tOP_DEPTHHEIGHT_MSR))
                    {
                        a.TOP_DEPTHHEIGHT_MSR = tOP_DEPTHHEIGHT_MSR.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(tOP_DEPTHHEIGHT_MSR_UNIT))
                    {
                        a.TOP_DEPTHHEIGHT_MSR_UNIT = tOP_DEPTHHEIGHT_MSR_UNIT.Trim().SubStringPlus(0, 12);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", tOP_DEPTHHEIGHT_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Top Depth Measure Unit not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(bOT_DEPTHHEIGHT_MSR))
                    {
                        a.BOT_DEPTHHEIGHT_MSR = bOT_DEPTHHEIGHT_MSR.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(bOT_DEPTHHEIGHT_MSR_UNIT))
                    {
                        a.BOT_DEPTHHEIGHT_MSR_UNIT = bOT_DEPTHHEIGHT_MSR_UNIT.Trim().SubStringPlus(0, 12);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bOT_DEPTHHEIGHT_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bottom Depth Measure Unit not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(dEPTH_REF_POINT))
                    {
                        a.DEPTH_REF_POINT = dEPTH_REF_POINT.Trim().SubStringPlus(0, 125);
                    }

                    if (!string.IsNullOrEmpty(aCT_COMMENT))
                    {
                        a.ACT_COMMENT = aCT_COMMENT.Trim().SubStringPlus(0, 4000);
                    }

                    //BIOLOGICAL MONITORING
                    if (BioIndicator == true)
                    {
                        if (!string.IsNullOrEmpty(bIO_ASSEMBLAGE_SAMPLED))
                        {
                            a.BIO_ASSEMBLAGE_SAMPLED = bIO_ASSEMBLAGE_SAMPLED.Trim().SubStringPlus(0, 50);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("Assemblage", bIO_ASSEMBLAGE_SAMPLED.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bio Assemblage not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_DURATION_MSR))
                        {
                            a.BIO_DURATION_MSR = bIO_DURATION_MSR.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(bIO_DURATION_MSR_UNIT))
                        {
                            a.BIO_DURATION_MSR_UNIT = bIO_DURATION_MSR_UNIT.Trim().SubStringPlus(0, 12);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bIO_DURATION_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bio Collection Duration Unit not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_SAMP_COMPONENT))
                        {
                            a.BIO_SAMP_COMPONENT = bIO_SAMP_COMPONENT.Trim().SubStringPlus(0, 15);
                        }

                        if (bIO_SAMP_COMPONENT_SEQ != null) a.BIO_SAMP_COMPONENT_SEQ = bIO_SAMP_COMPONENT_SEQ;

                        if (!string.IsNullOrEmpty(bIO_REACH_LEN_MSR))
                        {
                            a.BIO_REACH_LEN_MSR = bIO_REACH_LEN_MSR.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(bIO_REACH_LEN_MSR_UNIT))
                        {
                            a.BIO_REACH_LEN_MSR_UNIT = bIO_REACH_LEN_MSR_UNIT.Trim().SubStringPlus(0, 12);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bIO_REACH_LEN_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bio Reach Length Unit not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_REACH_WID_MSR))
                        {
                            a.BIO_REACH_WID_MSR = bIO_REACH_WID_MSR.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(bIO_REACH_WID_MSR_UNIT))
                        {
                            a.BIO_REACH_WID_MSR_UNIT = bIO_REACH_WID_MSR_UNIT.Trim().SubStringPlus(0, 12);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bIO_REACH_WID_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bio Reach Width Unit not valid. "; }
                        }

                        if (bIO_PASS_COUNT != null) a.BIO_PASS_COUNT = bIO_PASS_COUNT;

                        if (!string.IsNullOrEmpty(bIO_NET_TYPE))
                        {
                            a.BIO_NET_TYPE = bIO_NET_TYPE.Trim().SubStringPlus(0, 30);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("NetType", bIO_NET_TYPE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bio Net Type not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_NET_AREA_MSR))
                        {
                            a.BIO_NET_AREA_MSR = bIO_NET_AREA_MSR.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(bIO_NET_AREA_MSR_UNIT))
                        {
                            a.BIO_NET_AREA_MSR_UNIT = bIO_NET_AREA_MSR_UNIT.Trim().SubStringPlus(0, 12);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bIO_NET_AREA_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bio Net Area Unit not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_NET_MESHSIZE_MSR))
                        {
                            a.BIO_NET_MESHSIZE_MSR = bIO_NET_MESHSIZE_MSR.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(bIO_MESHSIZE_MSR_UNIT))
                        {
                            a.BIO_MESHSIZE_MSR_UNIT = bIO_MESHSIZE_MSR_UNIT.Trim().SubStringPlus(0, 12);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bIO_MESHSIZE_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Bio Net Mesh Size Unit not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_BOAT_SPEED_MSR))
                        {
                            a.BIO_BOAT_SPEED_MSR = bIO_BOAT_SPEED_MSR.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(bIO_BOAT_SPEED_MSR_UNIT))
                        {
                            a.BIO_BOAT_SPEED_MSR_UNIT = bIO_BOAT_SPEED_MSR_UNIT.Trim().SubStringPlus(0, 12);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bIO_BOAT_SPEED_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Boat Speed Unit not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_CURR_SPEED_MSR))
                        {
                            a.BIO_CURR_SPEED_MSR = bIO_CURR_SPEED_MSR.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(bIO_CURR_SPEED_MSR_UNIT))
                        {
                            a.BIO_CURR_SPEED_MSR_UNIT = bIO_CURR_SPEED_MSR_UNIT.Trim().SubStringPlus(0, 12);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", bIO_CURR_SPEED_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Current Speed Unit not valid. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_TOXICITY_TEST_TYPE))
                        {
                            a.BIO_TOXICITY_TEST_TYPE = bIO_TOXICITY_TEST_TYPE.Trim().SubStringPlus(0, 7);
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("ToxicityTestType", bIO_TOXICITY_TEST_TYPE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Toxicity Test Type not valid. "; }
                        }
                    }

                    if (sAMP_COLL_METHOD_IDX != null)
                    {
                        a.SAMP_COLL_METHOD_IDX = sAMP_COLL_METHOD_IDX;

                        //if IDX is populated but ID/Name/Ctx aren't then grab them
                        T_WQX_REF_SAMP_COL_METHOD scm = db_Ref.GetT_WQX_REF_SAMP_COL_METHOD_ByIDX(a.SAMP_COLL_METHOD_IDX);
                        if (scm != null)
                        {
                            a.SAMP_COLL_METHOD_ID = scm.SAMP_COLL_METHOD_ID;
                            a.SAMP_COLL_METHOD_NAME = scm.SAMP_COLL_METHOD_NAME;
                            a.SAMP_COLL_METHOD_CTX = scm.SAMP_COLL_METHOD_CTX;
                        }
                    }
                    else
                    {
                        //set context to org id if none is provided
                        if (!string.IsNullOrEmpty(sAMP_COLL_METHOD_ID) && string.IsNullOrEmpty(sAMP_COLL_METHOD_CTX))
                            sAMP_COLL_METHOD_CTX = oRG_ID;

                        if (!string.IsNullOrEmpty(sAMP_COLL_METHOD_ID) && !string.IsNullOrEmpty(sAMP_COLL_METHOD_CTX))
                        {
                            //lookup matching collection method IDX
                            T_WQX_REF_SAMP_COL_METHOD scm = db_Ref.GetT_WQX_REF_SAMP_COL_METHOD_ByIDandContext(sAMP_COLL_METHOD_ID.Trim(), sAMP_COLL_METHOD_CTX.Trim());
                            if (scm != null)
                                a.SAMP_COLL_METHOD_IDX = scm.SAMP_COLL_METHOD_IDX;
                            else  //no matching sample collection method lookup found
                            {
                                if (autoImportRefDataInd == true)
                                {
                                    db_Ref.InsertOrUpdateT_WQX_REF_SAMP_COL_METHOD(null, sAMP_COLL_METHOD_ID.Trim(), sAMP_COLL_METHOD_CTX.Trim(), sAMP_COLL_METHOD_NAME.Trim(), "", true);
                                }
                                else
                                {
                                    sTATUS_CD = "F"; sTATUS_DESC += "No matching Sample Collection Method found - please add it at the Reference Data screen first. ";
                                }
                            }
                            //****************************************

                            a.SAMP_COLL_METHOD_ID = sAMP_COLL_METHOD_ID.Trim().SubStringPlus(0, 20);
                            a.SAMP_COLL_METHOD_CTX = sAMP_COLL_METHOD_CTX.Trim().SubStringPlus(0, 120);

                            if (!string.IsNullOrEmpty(sAMP_COLL_METHOD_NAME))
                            {
                                a.SAMP_COLL_METHOD_NAME = sAMP_COLL_METHOD_NAME.Trim().SubStringPlus(0, 120);
                            }
                        }
                    }

                    if (a.SAMP_COLL_METHOD_IDX == null && a.ACT_TYPE.ToUpper().Contains("SAMPLE"))
                    { sTATUS_CD = "F"; sTATUS_DESC += "Sample Collection Method is required when Activity Type contains the term -Sample-. "; }

                    if (!string.IsNullOrEmpty(sAMP_COLL_EQUIP))
                    {
                        a.SAMP_COLL_EQUIP = sAMP_COLL_EQUIP.Trim().SubStringPlus(0, 40);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("SampleCollectionEquipment", sAMP_COLL_EQUIP.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Sample Collection Equipment not valid. "; }
                    }
                    else
                    {
                        //special validation requiring sampling collection equipment if activity type contains "Sample"
                        if (a.ACT_TYPE.ToUpper().Contains("SAMPLE"))
                        { sTATUS_CD = "F"; sTATUS_DESC += "Sample Collection Equipment is required when Activity Type contains the term -Sample-. "; }
                    }

                    if (!string.IsNullOrEmpty(sAMP_COLL_EQUIP_COMMENT))
                    {
                        a.SAMP_COLL_EQUIP_COMMENT = sAMP_COLL_EQUIP_COMMENT.Trim().SubStringPlus(0, 4000);
                    }

                    if (sAMP_PREP_IDX != null)
                        a.SAMP_PREP_IDX = sAMP_PREP_IDX;
                    else
                    {
                        //set context to org id if none is provided
                        if (!string.IsNullOrEmpty(sAMP_PREP_ID) && string.IsNullOrEmpty(sAMP_PREP_CTX))
                            sAMP_PREP_CTX = oRG_ID;

                        if (!string.IsNullOrEmpty(sAMP_PREP_ID) && !string.IsNullOrEmpty(sAMP_PREP_CTX))
                        {
                            //see if matching prep method exists
                            T_WQX_REF_SAMP_PREP sp = db_Ref.GetT_WQX_REF_SAMP_PREP_ByIDandContext(sAMP_PREP_ID.Trim(), sAMP_PREP_CTX.Trim());
                            if (sp != null)
                                a.SAMP_PREP_IDX = sp.SAMP_PREP_IDX;
                            //****************************************

                            a.SAMP_PREP_ID = sAMP_PREP_ID.Trim().SubStringPlus(0, 20);
                            a.SAMP_PREP_CTX = sAMP_PREP_CTX.Trim().SubStringPlus(0, 120);

                            if (!string.IsNullOrEmpty(sAMP_PREP_NAME))
                            {
                                a.SAMP_PREP_NAME = sAMP_PREP_NAME.Trim().SubStringPlus(0, 120);
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(sAMP_PREP_CONT_TYPE))
                    {
                        a.SAMP_PREP_CONT_TYPE = sAMP_PREP_CONT_TYPE.Trim().SubStringPlus(0, 35);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("SampleContainerType", sAMP_PREP_CONT_TYPE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Sample Container Type not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(sAMP_PREP_CONT_COLOR))
                    {
                        a.SAMP_PREP_CONT_COLOR = sAMP_PREP_CONT_COLOR.Trim().SubStringPlus(0, 15);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("SampleContainerColor", sAMP_PREP_CONT_COLOR.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Sample Container Color not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(sAMP_PREP_CHEM_PRESERV))
                    {
                        a.SAMP_PREP_CHEM_PRESERV = sAMP_PREP_CHEM_PRESERV.Trim().SubStringPlus(0, 250);
                    }

                    if (!string.IsNullOrEmpty(sAMP_PREP_THERM_PRESERV))
                    {
                        a.SAMP_PREP_THERM_PRESERV = sAMP_PREP_THERM_PRESERV.Trim().SubStringPlus(0, 25);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ThermalPreservativeUsed", sAMP_PREP_THERM_PRESERV.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Thermal Preservative Used not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(sAMP_PREP_STORAGE_DESC))
                    {
                        a.SAMP_PREP_STORAGE_DESC = sAMP_PREP_STORAGE_DESC.Trim().SubStringPlus(0, 250);
                    }

                    if (sTATUS_CD != null) a.IMPORT_STATUS_CD = sTATUS_CD;
                    if (sTATUS_DESC != null) a.IMPORT_STATUS_DESC = sTATUS_DESC.SubStringPlus(0,100);

                    if (insInd) //insert case
                        ctx.AddToT_WQX_IMPORT_TEMP_SAMPLE(a);

                    ctx.SaveChanges();

                    return a.TEMP_SAMPLE_IDX;
                }
            }
            catch (Exception ex)
            {
                sTATUS_CD = "F";
                sTATUS_DESC += "Unspecified error";
                return 0;
            }
        }