Example #1
0
        // ***************************************** IMPORT DATA *************************************************************
        public ActionResult ImportData()
        {
            var model = new vmAdminImportData
            {
            };

            return(View(model));
        }
Example #2
0
        public ActionResult ImportData(vmAdminImportData model)
        {
            int UserIDX = db_Accounts.GetUserIDX();

            //set dictionaries used to store stuff in memory
            Dictionary <string, int> colMapping = new Dictionary <string, int>();  //identifies the column number for each field to be imported

            //initialize variables
            bool headInd  = true;
            bool anyError = false;

            //loop through each row
            foreach (string row in model.IMPORT_BLOCK.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries))
            {
                //split row's columns into string array
                string[] cols = row.Split(new char[] { '\t' }, StringSplitOptions.None);

                if (cols.Length > 0) //skip blank rows
                {
                    if (headInd)
                    {
                        //**********************************************************
                        //HEADER ROW - LOGIC TO DETERMINE WHAT IS IN EACH COLUMN
                        //**********************************************************
                        colMapping = Utils.GetColumnMapping("P", cols);

                        headInd = false;

                        model.projects = new List <ProjectImportType>();
                    }
                    else
                    {
                        //**********************************************************
                        //NOT HEADER ROW - READING IN VALUES
                        //**********************************************************
                        var colList        = cols.Select((value, index) => new { value, index });
                        var colDataIndexed = (from f in colMapping
                                              join c in colList on f.Value equals c.index
                                              select new
                        {
                            _Name = f.Key,
                            _Val = c.value
                        }).ToList();

                        Dictionary <string, string> fieldValuesDict = new Dictionary <string, string>();  //identifies the column number for each field to be imported

                        //loop through all values and insert to list
                        foreach (var c in colDataIndexed)
                        {
                            fieldValuesDict.Add(c._Name, c._Val);
                        }

                        //VALIDATE ROW AND INSERT TO LOCAL OBJECT
                        ProjectImportType p = db_EECIP.InsertOrUpdate_T_OE_PROJECT_local(UserIDX, fieldValuesDict);
                        if (p.VALIDATE_CD == false)
                        {
                            anyError = true;
                        }

                        model.projects.Add(p);
                    }
                }
            } //end each row

            //if no errors, just import. otherwise
            if (!anyError)
            {
                foreach (ProjectImportType ps in model.projects)
                {
                    //import projects
                    T_OE_PROJECTS x          = ps.T_OE_PROJECT;
                    Guid?         ProjectIDX = db_EECIP.InsertUpdatetT_OE_PROJECTS(x.PROJECT_IDX, x.ORG_IDX, x.PROJ_NAME, x.PROJ_DESC, x.MEDIA_TAG, x.START_YEAR, x.PROJ_STATUS,
                                                                                   x.DATE_LAST_UPDATE, x.RECORD_SOURCE, x.PROJECT_URL, x.MOBILE_IND, x.MOBILE_DESC, x.ADV_MON_IND, x.ADV_MON_DESC, x.BP_MODERN_IND,
                                                                                   x.BP_MODERN_DESC, x.COTS, x.VENDOR, x.PROJECT_CONTACT, null, true, false, UserIDX, x.IMPORT_ID, true);

                    //import features
                    if (ps.FEATURES != null)
                    {
                        foreach (string f in ps.FEATURES.Split('|'))
                        {
                            if (f.Length > 0)
                            {
                                db_EECIP.InsertT_OE_PROJECT_TAGS(ProjectIDX.ConvertOrDefault <Guid>(), "Project Feature", f, UserIDX);
                            }
                        }
                    }

                    //import program areas
                    if (ps.PROGRAM_AREAS != null)
                    {
                        foreach (string f in ps.PROGRAM_AREAS.Split('|'))
                        {
                            if (f.Length > 0)
                            {
                                db_EECIP.InsertT_OE_PROJECT_TAGS(ProjectIDX.ConvertOrDefault <Guid>(), "Program Area", f, UserIDX);
                            }
                        }
                    }
                }

                //update azure search
                AzureSearch.PopulateSearchIndexProject(null);

                //clear form
                model.IMPORT_BLOCK  = "";
                model.projects      = null;
                TempData["Success"] = "Data imported successfully";
            }
            return(View(model));
        }