private async Task SyncAllFilesFolders() { try { //*** Set Variables int intCount = 0, intSuccess = 0, intFailed = 0; Session["SyncAllNumbers"] = ""; string strFolderGUID = ""; string strFolderpath = ""; //*** Loop on All Objects on DropBox Grid View foreach (GridViewRow itemRow in grdVWDropBoxFilesFolderList.Rows) { strFolderpath = ""; //*** Refresh Counts intCount += 1; //*** set Session Variable (Shared Variable) Session["SyncAllNumbers"] = grdVWDropBoxFilesFolderList.Rows.Count.ToString() + "," + intCount.ToString() + "," + intSuccess.ToString() + "," + intFailed.ToString(); //*** Check on Drop Box Enity if (bool.Parse(((Label)itemRow.FindControl("lblisFolder")).Text)) //**** If Folder { //************************************ //**** Create Folder on ExactOnline //************************************ //**** Construct Exact Online Class ExactOnlineConnector objExactOnlineConnector = new ExactOnlineConnector(System.Configuration.ConfigurationManager.AppSettings["exactOnlineClientId"], System.Configuration.ConfigurationManager.AppSettings["exactOnlineClientSecret"], System.Configuration.ConfigurationManager.AppSettings["exactOnlineEndPoint"], new Uri(HttpContext.Current.Session["exactOnlineReturnBackURL"].ToString()), Session["ExactOnlineReturnCode"].ToString()); if (Application["ExactOnlineAccessToken"] != null) { objExactOnlineConnector.AccessToken = Application["ExactOnlineAccessToken"].ToString(); } strFolderGUID = objExactOnlineConnector.CreateDocumentFolder(((Label)itemRow.FindControl("lblFileName")).Text, Session["CurrentExactFolderGUID"].ToString()); if (strFolderGUID == "") { //*** If Error returned intFailed += 1; } else { intSuccess += 1; } } else //**** If File { //****************************************************************** //**** Get File Stream then upload it to ExactOnline & Flush //****************************************************************** //*** Construct Parent Folder Path String string strParentFolderpath = ""; if ((List <string>)Session["FolderPath"] != null) { foreach (var item in (List <string>)Session["FolderPath"]) { strParentFolderpath += "/" + item; } } string strPath = strParentFolderpath + "/" + ((Label)itemRow.FindControl("lblFileName")).Text; strFolderpath = strPath; //*** Create Folder Function Stream fnStreamResult = await DropBoxConnector.Download(Application["dropBoxClientObj"], strPath); if (DropBoxConnector.MsgError != "") //*** If error { intFailed += 1; } else { //************************************************************* //*** Convert File to Byte Array and upload it to Exact Online //************************************************************* //**** Construct Exact Online Class ExactOnlineConnector objExactOnlineConnector = new ExactOnlineConnector(System.Configuration.ConfigurationManager.AppSettings["exactOnlineClientId"], System.Configuration.ConfigurationManager.AppSettings["exactOnlineClientSecret"], System.Configuration.ConfigurationManager.AppSettings["exactOnlineEndPoint"], new Uri(HttpContext.Current.Session["exactOnlineReturnBackURL"].ToString()), Session["ExactOnlineReturnCode"].ToString()); if (Application["ExactOnlineAccessToken"] != null) { objExactOnlineConnector.AccessToken = Application["ExactOnlineAccessToken"].ToString(); } strFolderGUID = objExactOnlineConnector.CreateDocumentWithAttachment(((Label)itemRow.FindControl("lblFileName")).Text, Session["CurrentExactFolderGUID"].ToString(), Common.ConvertStreamtoByteArr(fnStreamResult)); if (strFolderGUID == "") { intFailed += 1; } else { intSuccess += 1; } } //****************************************************************** } //*** The Add to update record into DB if (bool.Parse(((Label)itemRow.FindControl("lblisFolder")).Text)) //*** If Folder { if ((List <string>)Session["FolderPath"] != null) { foreach (var item in (List <string>)Session["FolderPath"]) { strFolderpath += "/" + item; } } strFolderpath += "/" + ((Label)itemRow.FindControl("lblFileName")).Text; } FilesDocumentsEntities objFilesDocumentsEntities = new FilesDocumentsEntities(); //*** Check First if File Already exisit into DB DropBoxExactOnline objRecord = objFilesDocumentsEntities.DropBoxExactOnlines.Where(i => i.DropBoxPath == strFolderpath).FirstOrDefault(); if (objRecord != null) { //**** Update DB objRecord.DropBoxPath = strFolderpath; objRecord.ExactOnlineGUID = strFolderGUID; if (bool.Parse(((Label)itemRow.FindControl("lblisFolder")).Text)) { objRecord.isFile = 0; } else { objRecord.isFile = 1; } objFilesDocumentsEntities.SaveChanges(); } else { //*** add to DB DropBoxExactOnline objRecordNew = new DropBoxExactOnline(); objRecordNew.DropBoxPath = strFolderpath; objRecordNew.ExactOnlineGUID = strFolderGUID; if (bool.Parse(((Label)itemRow.FindControl("lblisFolder")).Text)) { objRecordNew.isFile = 0; } else { objRecordNew.isFile = 1; } objFilesDocumentsEntities.DropBoxExactOnlines.Add(objRecordNew); objFilesDocumentsEntities.SaveChanges(); } //******************************************************************************* //*** set Session Variable (Shared Variable) Session["SyncAllNumbers"] = grdVWDropBoxFilesFolderList.Rows.Count.ToString() + "," + intCount.ToString() + "," + intSuccess.ToString() + "," + intFailed.ToString(); } //*** Rebind Exact Online Grid ExactOnlineGridDataBind(Session["CurrentExactFolderGUID"].ToString()); } catch (Exception e) { lblExactOnlineMsg.Text = e.ToString(); //*** Show Error divExactOnlineAlert.Visible = true; } }
//**** Create Folder Button protected async void btnPanel2Yes_Click(object sender, EventArgs e) { //*** Check First if Folder Exist/ Fitsh foreach (GridViewRow row in grdVWDropBoxFilesFolderList.Rows) { if (((Label)row.FindControl("lblFileName")).Text.ToLower() == txtFolderName.Text.ToLower() && bool.Parse(((Label)row.FindControl("lblisFolder")).Text.ToLower())) { //*** Folder Already Exist lblDropBoxMsg.Text = "Folder already exists with same name"; //*** Show Error with grid divDropBoxAlert.Visible = true; DivDropBoxFileGrid.Visible = true; //*** Exit from function return; } } //*** Construct Parent Folder Path String string strFolderpath = ""; string strFolderName = ""; if ((List <string>)Session["FolderPath"] != null) { foreach (var item in (List <string>)Session["FolderPath"]) { strFolderpath += "/" + item; strFolderName = item; } } strFolderpath += "/" + txtFolderName.Text; //*** Create Folder Function bool fnResult = await DropBoxConnector.CreateFolder(Application["dropBoxClientObj"], strFolderpath); if (!fnResult) //*** If error { lblDropBoxMsg.Text = DropBoxConnector.MsgError; //*** Show Error divDropBoxAlert.Visible = true; } else { //**************************************************************** //**** Exact Online Part //**************************************************************** if (divExactOnlineFileGrid.Visible) //**** If Exact Online Grid Shown { //*** Create Folder on Exact Online also //**** Construct Exact Online Class ExactOnlineConnector objExactOnlineConnector = new ExactOnlineConnector(System.Configuration.ConfigurationManager.AppSettings["exactOnlineClientId"], System.Configuration.ConfigurationManager.AppSettings["exactOnlineClientSecret"], System.Configuration.ConfigurationManager.AppSettings["exactOnlineEndPoint"], new Uri(HttpContext.Current.Session["exactOnlineReturnBackURL"].ToString()), Session["ExactOnlineReturnCode"].ToString()); if (Application["ExactOnlineAccessToken"] != null) { objExactOnlineConnector.AccessToken = Application["ExactOnlineAccessToken"].ToString(); } string strFolderGUID = objExactOnlineConnector.CreateDocumentFolder(txtFolderName.Text, Session["CurrentExactFolderGUID"].ToString()); if (strFolderGUID == "") { //*** If Error returned lblExactOnlineMsg.Text = objExactOnlineConnector.MsgError; //*** Show Error divExactOnlineAlert.Visible = true; } else //*** Add Entry To DB { FilesDocumentsEntities objFilesDocumentsEntities = new FilesDocumentsEntities(); DropBoxExactOnline objRecord = new DropBoxExactOnline(); objRecord.DropBoxPath = strFolderpath; objRecord.ExactOnlineGUID = strFolderGUID; objRecord.isFile = 0; objFilesDocumentsEntities.DropBoxExactOnlines.Add(objRecord); objFilesDocumentsEntities.SaveChanges(); } } //*************************************************************************** //*** Success & Rebind Data Grid Again & Initialize txtFolderName.Text = ""; DropBoxGridDataBind(((List <string>)Session["FolderPath"])); } }