private static void processFolders()
        {
            try
            {
                MyApp = new Excel.Application();
                MyApp.Visible = false;
                MyBook = MyApp.Workbooks.Open(@FileLocation);
                MySheet = (Excel.Worksheet)MyBook.Sheets["Folder Structure"];
                MySheetV = (Excel.Worksheet)MyBook.Sheets["Variables"];
                Console.WriteLine("Connected to Spread Sheet");
                Console.ReadLine();
                ProcessfromRow = Convert.ToInt64(MySheetV.Cells[11, 2].Value);
                ProcesstoRow = Convert.ToInt64(MySheetV.Cells[12, 2].Value);
                    string str1 = null, str2 = null, str3 = null, str4 = null, str5 = null;
                    bool createnew = false;
                    long fileconturi = 0, recuri = 0;
                    int lvl1Value = 10, lvl2Value = 10;
                    //EmpList.Add(emp);
                    
                    List<Sheets> sheets = new List<Sheets>();
                    Sheets sheet = new Sheets();
                    sheet.SheetName = FileLocation;
                    List<Rows> rows = new List<Rows>();
                    Rows r = new Rows();
                    for (var i = 2; i < ProcesstoRow+1; i++)
                    {
                        
                        //First child level
                        if (MySheet.Cells[i, y].Value2 != null)
                        {
                            str1 = MySheet.Cells[i, y].Value.ToString();

                                createnew = true;
                                lvl1Value = lvl1Value + 10;
                                //lvl2Value = 10;
                                //lvl3Value = 10;
                            y = y + 1;
                        }
                        else
                        {
                            y = y + 1;
                        }
                        if (MySheet.Cells[i, y].Value2 != null)
                        {
                            str2 = MySheet.Cells[i, y].Value.ToString();
                            if (createnew)
                            {
                                lvl2Value = lvl2Value + 10;
                                //lvl3Value = 10;
                            }

                            y = y + 1;
                        }
                        else
                        {
                            y = y + 1;
                        }
                        if (MySheet.Cells[i, y].Value2 != null)
                        {
                            str3 = MySheet.Cells[i, y].Value.ToString();
                            if (createnew)
                            {
                                r = new Rows();
                                    r.level1 = str1;
                                    r.level2 = str2;
                                    r.level3 = str3;
                            }
                            y = y + 1;
                        }
                        else
                        {
                            y = y + 1;
                            r = rows.LastOrDefault();
                        }

                            List<Folder> lstFolder = new List<Folder>();

                            if (MySheet.Cells[i, 4].Value2 != null)
                            {

                                str4 = MySheet.Cells[i, 4].Value.ToString();

                                //Check to see if the group identifyer is not blank and has a g
                                if (MySheet.Cells[i, 12].value2 != null && MySheet.Cells[i, 12].value.ToString() == "g")
                                {
                                    Console.WriteLine("Grouped string found in level 4");
                                    List<string> lstLvl4 = str4.Split('/').ToList();
                                    foreach (var kkk in lstLvl4.Where(x => x.Length > 2))
                                    {
                                        Folder fol = new Folder();
                                        fol.folder = kkk.Trim();
                                        lstFolder.Add(fol);
                                        fileconturi = recuri;
                                        if (MySheet.Cells[i, 5].Value2 != null)
                                        {
                                            str5 = MySheet.Cells[i, 5].Value.ToString();
                                            List<Subfolder> lstsubfolder = new List<Subfolder>();
                                            if (MySheet.Cells[i, 13].value2 != null && MySheet.Cells[i, 13].value.ToString() == "g")
                                            {
                                                List<string> lstLvl5 = str5.Split('/').ToList();
                                                foreach (var lll in lstLvl5.Where(x => x.Length > 2))
                                                {
                                                    Subfolder sf = new Subfolder();
                                                    sf.subfolder = lll.Trim();
                                                    lstsubfolder.Add(sf);
                                                }
                                                fol.SubFolders = lstsubfolder;
                                            }
                                            else
                                            {
                                                Subfolder sf = new Subfolder();
                                                sf.subfolder = str5.Trim();
                                                lstsubfolder.Add(sf);
                                                fol.SubFolders = lstsubfolder;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    Folder fol = new Folder();
                                    fol.folder = str4;
                                    fileconturi = recuri;
                                    if (MySheet.Cells[i, 5].Value2 != null)
                                    {
                                        List<Subfolder> lstsf = new List<Subfolder>();
                                        str5 = MySheet.Cells[i, 5].Value.ToString();
                                        //r.Subfolder = str5;
                                        if (MySheet.Cells[i, 13].value2 != null && MySheet.Cells[i, 13].value.ToString() == "g")
                                        {
                                            List<string> lstLvl5 = str5.Split('/').ToList();
                                            foreach (var lll in lstLvl5.Where(x => x.Length > 2))
                                            {
                                                Subfolder sf = new Subfolder();
                                                sf.subfolder = lll.Trim();
                                                lstsf.Add(sf);
                                                //recsuburi = CreateNewRMSubFolder(recuri, lll.Trim(), db, i);
                                            }
                                        }
                                        else
                                        {
                                            Subfolder sf = new Subfolder();
                                            sf.subfolder = str5;

                                            if (MySheet.Cells[i, 7].value2 != null)
                                            {
                                                sf.MigrateLoc = MySheet.Cells[i, 7].Value.ToString();
                                            }

                                            lstsf.Add(sf);
                                            //fol.SubFolders=lstsf;
                                            //
                                            //recsuburi = CreateNewRMSubFolder(recuri, str5, db, i);
                                        }
                                        fol.SubFolders = lstsf;
                                    }
                                    else
                                    {
                                        if (MySheet.Cells[i, 7].value2 != null)
                                        {
                                            fol.MigrateLoc = MySheet.Cells[i, 7].Value.ToString();
                                        }
                                    }

                                    lstFolder.Add(fol);
                                }
                               
                                r.Folders = lstFolder;
                            }
                            y = 1;

                            if (str4 != null)
                            {

                                MySheet.Cells[i, 8] = fileconturi.ToString();


                            }
                            else
                            {
                                //Remove for basic testing
                                //long Newuri = CreateNewRMfolder(str1, str2, str3, str4, str5, str3Title);

                                //
                                //Console.WriteLine("New folder created (Uri: " + fileconturi.ToString() + ")");
                            }
                            r.SheetLine = i;

                        //7
                            //r.RMuri = fileconturi.ToString();
                            //r.Timestamp = DateTime.Now;
                            rows.Add(r);
                    }
                    sheet.Rows = rows;
                    sheets.Add(sheet);
                    //
                    string json = JsonConvert.SerializeObject(sheets.ToArray());
                    //FileLocation
                    var loc = Path.GetDirectoryName(FileLocation);
                    System.IO.File.WriteAllText(@loc+"\\SSprocessTIP.json", json);
                    //
                    MyBook.Save();
                    MyBook.Close(null, null, null);
                    MyApp.Quit();

                //}
            }
            catch (Exception exc)
            {
                MyBook.Save();
                MyBook.Close(null, null, null);
                MyApp.Quit();
                //
                Console.WriteLine("Error: "+exc.Message.ToString());
                return;
            }
        }
        private static void ProcessClassFolders()
        {
            string iRow = null;
            try
            {
                MyApp = new Excel.Application();
                MyApp.Visible = false;
                MyBook = MyApp.Workbooks.Open(@FileLocation);
                MySheet = (Excel.Worksheet)MyBook.Sheets["Folder Structure"];
                MySheetV = (Excel.Worksheet)MyBook.Sheets["Variables"];
                Console.WriteLine("Connected to Spread Sheet");
                //Console.ReadLine();
                Console.WriteLine("Processing, please wait. If its a large SS then go make a coffee.");
                ProcessfromRow = Convert.ToInt64(MySheetV.Cells[11, 2].Value);
                ProcesstoRow = Convert.ToInt64(MySheetV.Cells[12, 2].Value);

                string str1 = null, str2 = null, str3 = null, str4 = null, str5 = null;
                bool createnew = false;
                long fileconturi = 0, recuri = 0;
                //EmpList.Add(emp);

                List<Sheets> sheets = new List<Sheets>();
                Sheets sheet = new Sheets();
                sheet.SheetName = FileLocation;
                List<Rows> rows = new List<Rows>();
                Rows r = new Rows();
                
                for (var i = 2; i < ProcesstoRow + 1; i++)
                {
                    if(i==350)
                    {
                        var dsd = "sfdsf";
                    }
                    
                    iRow = i.ToString();


                    //First child level
                    bool bLevel3New = false;
                    createnew = false;
                    if (MySheet.Cells[i, 1].Value2 != null)
                    {
                        str1 = MySheet.Cells[i, 1].Value.ToString();

                        createnew = true;

                    }

                    if (MySheet.Cells[i, 2].Value2 != null)
                    {
                        str2 = MySheet.Cells[i, 2].Value.ToString();
                        createnew = true;
                    }

                    if (MySheet.Cells[i, 3].Value2 != null)
                    {
                        str3 = MySheet.Cells[i, 3].Value.ToString();
                        createnew=true;
                        bLevel3New = true;
                    }
                    if(createnew)
                    {
                        r = new Rows();
                        r.level1 = str1;
                        r.level2 = str2;
                        r.level3 = str3;

                        r.SheetLine = i;
                        rows.Add(r);
                    }
                    
                    // New
                    if (MySheet.Cells[i, 4].Value2 != null)
                    {
                        if (bLevel3New == true)
                        {
                            List<Folder> lstFolder = new List<Folder>();
                            rows.LastOrDefault().Folders = lstFolder;
                        }
                        str4 = MySheet.Cells[i, 4].Value.ToString();
                        //int lvl4LoopCount = 0;

                        //Check to see if the group identifyer is not blank and has a g
                        if (MySheet.Cells[i, 12].value2 != null && MySheet.Cells[i, 12].value.ToString() == "g")
                        {
                            Console.WriteLine("Grouped string found in level 4");
                            List<string> lstLvl4 = str4.Split('/').ToList();
                            foreach (var kkk in lstLvl4.Where(x => x.Length > 2))
                            {
                                Folder fol = new Folder();
                                fol.folder = kkk.Trim();
                                fol.SheetLine = i;
                                rows.LastOrDefault().Folders.Add(fol);
                                //lstFolder.Add(fol);
                                fileconturi = recuri;
                                if (MySheet.Cells[i, 5].Value2 != null)
                                {
                                    str5 = MySheet.Cells[i, 5].Value.ToString();
                                    List<Subfolder> lstsubfolder = new List<Subfolder>();
                                    if (MySheet.Cells[i, 13].value2 != null && MySheet.Cells[i, 13].value.ToString() == "g")
                                    {
                                        List<string> lstLvl5 = str5.Split('/').ToList();
                                        foreach (var lll in lstLvl5.Where(x => x.Length > 2))
                                        {
                                            Subfolder sf = new Subfolder();
                                            sf.subfolder = lll.Trim();
                                            sf.SheetLine = i;

                                            lstsubfolder.Add(sf);
                                        }
                                        fol.SubFolders = lstsubfolder;
                                    }
                                    else
                                    {
                                        Subfolder sf = new Subfolder();
                                        sf.subfolder = str5.Trim();
                                        sf.SheetLine = i;
                                        lstsubfolder.Add(sf);
                                        fol.SubFolders = lstsubfolder;
                                    }
                                }
                            }
                        }
                        else
                        {
                            Folder fol = new Folder();
                            fol.folder = str4;
                            fol.SheetLine = i;
                            fileconturi = recuri;
                            if (MySheet.Cells[i, 5].Value2 != null)
                            {
                                List<Subfolder> lstsf = new List<Subfolder>();
                                str5 = MySheet.Cells[i, 5].Value.ToString();
                                //r.Subfolder = str5;
                                if (MySheet.Cells[i, 13].value2 != null && MySheet.Cells[i, 13].value.ToString() == "g")
                                {
                                    List<string> lstLvl5 = str5.Split('/').ToList();
                                    foreach (var lll in lstLvl5.Where(x => x.Length > 2))
                                    {
                                        Subfolder sf = new Subfolder();
                                        sf.subfolder = lll.Trim();
                                        sf.SheetLine = i;
                                        lstsf.Add(sf);
                                    }
                                }
                                else
                                {
                                    Subfolder sf = new Subfolder();
                                    sf.subfolder = str5;
                                    sf.SheetLine = i;
                                    if (MySheet.Cells[i, 7].value2 != null)
                                    {
                                        sf.MigrateLoc = MySheet.Cells[i, 7].Value.ToString();
                                    }

                                    lstsf.Add(sf);
                                }
                                fol.SubFolders = lstsf;
                            }
                            else
                            {
                                if (MySheet.Cells[i, 7].value2 != null)
                                {
                                    fol.MigrateLoc = MySheet.Cells[i, 7].Value.ToString();
                                }
                            }
                            rows.LastOrDefault().Folders.Add(fol);
                        }
                    }
                    else
                    {
                        if (MySheet.Cells[i, 5].Value2 != null)
                        {
                            if (rows.LastOrDefault().Folders.LastOrDefault().SubFolders==null)
                            {
                                List<Subfolder> lstsf = new List<Subfolder>();
                                rows.LastOrDefault().Folders.LastOrDefault().SubFolders = lstsf;
                            }
                            str5 = MySheet.Cells[i, 5].Value.ToString();
                            if (MySheet.Cells[i, 13].value2 != null && MySheet.Cells[i, 13].value.ToString() == "g")
                            {
                                List<string> lstLvl5 = str5.Split('/').ToList();
                                foreach (var lll in lstLvl5.Where(x => x.Length > 2))
                                {
                                    Subfolder sf = new Subfolder();
                                    sf.subfolder = lll.Trim();
                                    sf.SheetLine = i;
                                    if (MySheet.Cells[i, 7].value2 != null)
                                    {
                                        sf.MigrateLoc = MySheet.Cells[i, 7].Value.ToString();
                                    }
                                    rows.LastOrDefault().Folders.LastOrDefault().SubFolders.Add(sf);
                                }   
                            }
                            else
                            {
                                Subfolder sf = new Subfolder();
                                sf.subfolder = str5.Trim();
                                sf.SheetLine = i;
                                if (MySheet.Cells[i, 7].value2 != null)
                                {
                                    sf.MigrateLoc = MySheet.Cells[i, 7].Value.ToString();
                                }
                                //lstsubfolder.Add(sf);
                                //fol.SubFolders = lstsubfolder;
                                //rows.LastOrDefault().Folders.LastOrDefault().SubFolders = lstsubfolder;
                                rows.LastOrDefault().Folders.LastOrDefault().SubFolders.Add(sf);
                            }
                        }

                    }




                    //End New
                }




                sheet.Rows = rows;
                sheets.Add(sheet);
                //
                string json = JsonConvert.SerializeObject(sheets.ToArray());
                //FileLocation
                var loc = Path.GetDirectoryName(FileLocation);
                System.IO.File.WriteAllText(@loc + "\\SSprocessTIP.json", json);
                //
                MyBook.Save();
                MyBook.Close(null, null, null);
                MyApp.Quit();
                Console.WriteLine("Successful in building Json file.");
                Repeatmenu();

                //}
            }
            catch (Exception exc)
            {
                MyBook.Save();
                MyBook.Close(null, null, null);
                MyApp.Quit();
                //
                Console.WriteLine("Error: " + exc.Message.ToString()+" - "+iRow);
                return;
            }
        }