public bool GetSiteData(string Url)
        {
            try
            {
                using (ClientCntx = new ClientContext(Url))
                {
                    ClientCntx.Credentials = new SharePointOnlineCredentials(UserCredentials.UserName, UserCredentials.Passwrd);
                    CheckUSer = true;


                    Webpage = ClientCntx.Web;
                    ClientCntx.Load(Webpage);
                    ClientCntx.ExecuteQuery();
                    Console.WriteLine("Share Point Site \n Title: " + Webpage.Title + "; URL: " + Webpage.Url + "; Description: " + Webpage.Description);
                    Console.ReadKey();
                }
            }

            catch (Exception Exceptions)
            {
                CheckUSer = false;
                Console.WriteLine("check user name password");
                WriteToLog.WriteToLogs(Exceptions);
            }
            return(CheckUSer);
        }
 /***********************************************Download file from sharepoint site****************************************/
 public void DownloadFile(string Url)
 {
     try
     {
         string ListName        = "Documents";
         List   documentlist    = ClientCntx.Web.Lists.GetByTitle(ListName);
         string urlforworksheet = Url + documentlist.GetItemById(5);
         var    ListItem        = documentlist.GetItemById(5);
         ClientCntx.Load(documentlist);
         ClientCntx.Load(ListItem, i => i.File);
         ClientCntx.ExecuteQuery();
         var FileRef  = ListItem.File.ServerRelativeUrl;
         var FileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ClientCntx, FileRef);
         //var fileName = System.IO.Path.Combine(urlforworksheet, (string)listItem.File.Name);
         var FileName = System.IO.Path.Combine(@"D:\", (string)ListItem.File.Name);
         using (var fileStream = System.IO.File.Create(FileName))
         {
             FileInfo.Stream.CopyTo(fileStream);
         }
     }
     catch (Exception Exceptions)
     {
         Console.WriteLine("Error while downloading the file: ");
         WriteToLog.WriteToLogs(Exceptions);
     }
 }
        public void GetUsers()
        {
            SiteUsers = ClientCntx.Web.SiteUsers;

            try
            {
                ClientCntx.Load(SiteUsers);
                ClientCntx.ExecuteQuery();
            }
            catch (Exception Exceptions)
            {
                Console.WriteLine("Error while getting site users");
                WriteToLog.WriteToLogs(Exceptions);
            }
        }
 /**********************************open local excel file and update the data**************************************/
 public void OpenExcelFile()
 {
     try
     {
         MyApp         = new Excel.Application();
         MyApp.Visible = false;
         MyBook        = MyApp.Workbooks.Open(Settings.LocalFilePath);
         MySheet       = (Excel.Worksheet)MyBook.Sheets[1];
     }
     catch (Exception Exceptions)
     {
         Console.WriteLine("Error while opening the excel file ");
         WriteToLog.WriteToLogs(Exceptions);
     }
 }
        /*******************************************upload file again after making changes*****************************************/

        public void UploadExcelFile(string url)
        {
            try
            {
                string Listname = "Documents";

                List list = ClientCntx.Web.Lists.GetByTitle(Listname);
                FileCreationInformation Fcinfo = new FileCreationInformation();
                Fcinfo.Url       = "FilePathExcelFile.xlsx";
                Fcinfo.Content   = System.IO.File.ReadAllBytes(Settings.LocalFilePath);
                Fcinfo.Overwrite = true;
                File FileToUpload = list.RootFolder.Files.Add(Fcinfo);
                ClientCntx.Load(list);
                ClientCntx.ExecuteQuery();
                Console.WriteLine("Name is : " + Fcinfo.Content);
            }
            catch (Exception Exceptions)
            {
                Console.WriteLine("Error while uploading file: ");
                WriteToLog.WriteToLogs(Exceptions);
            }
        }
        /****************************Method for Getting document library data and upadting excel sheet************************/
        public void GetDocumentData(string Url)
        {
            try
            {
                string ListName = "MyDocuments";
                List   list     = ClientCntx.Web.Lists.GetByTitle(ListName);
                string fileurl  = Url + "/_layouts/15/Doc.aspx?sourcedoc=%7Bd9f22086-cf2d-481a-8d1e-b03fd52ceda7%7D&action=default&uid=%7BD9F22086-CF2D-481A-8D1E-B03FD52CEDA7%7D&ListItemId=5&ListId=%7B3411566D-3EE6-4CB3-9DD4-71B1E7E0AAB3%7D&odsp=1&env=prod";

                File file = ClientCntx.Web.GetFileByUrl(fileurl);
                ClientResult <System.IO.Stream> data = file.OpenBinaryStream();

                OpenExcelFile();
                ClientCntx.Load(file);
                ClientCntx.ExecuteQuery();
                using (var pck = new OfficeOpenXml.ExcelPackage())
                {
                    using (System.IO.MemoryStream mStream = new System.IO.MemoryStream())
                    {
                        if (data != null)
                        {
                            data.Value.CopyTo(mStream);
                            pck.Load(mStream);
                            var ws = pck.Workbook.Worksheets.First();
                            Table = new DataTable();
                            bool hasHeader = true;
                            foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
                            {
                                Table.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
                            }
                            var startRow = hasHeader ? 2 : 1;

                            GetUsers();
                            for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
                            {
                                var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
                                var row   = Table.NewRow();
                                int count = rowNum;

                                foreach (var cell in wsRow)
                                {
                                    row[cell.Start.Column - 1] = cell.Text;
                                }
                                Status = UpdatLibraryData(row);// upload file int the doccument library
                                if (Status == true)
                                {
                                    UpdateExcelFile(rowNum, Reason, FileSize, "Success");
                                }
                                else
                                {
                                    UpdateExcelFile(rowNum, Reason, FileSize, "Failed");
                                }
                                Table.Rows.Add(row);
                            }
                            Console.WriteLine('1');
                        }
                    }


                    CloseExcelFile();
                    UploadExcelFile(Url);
                    Console.WriteLine("All Done");
                }
            }
            catch (Exception Exceptions)
            {
                Console.WriteLine("Error while getting the excel data from Sharepoint site");
                WriteToLog.WriteToLogs(Exceptions);
            }
        }
        private bool UpdatLibraryData(DataRow row)
        {
            try
            {
                string Listname   = "MyDocuments";
                List   list       = ClientCntx.Web.Lists.GetByTitle(Listname);
                string FileName   = row[Settings.FilePath].ToString();
                string FileStatus = row[Settings.FileStatus].ToString();
                string CreatedBy  = row[Settings.CreatedBy].ToString();
                string Department = row[Settings.Department].ToString();

                System.IO.FileInfo Fileinfo = new System.IO.FileInfo(FileName);
                User user = SiteUsers.GetByEmail(CreatedBy);
                ClientCntx.Load(user);
                ClientCntx.ExecuteQuery();

                if (Fileinfo.Exists)
                {
                    double Filesize = (Fileinfo.Length / 1e+6);
                    FileSize = Filesize + "mb";
                    if (Fileinfo.Length < Settings.MaxSIze && Fileinfo.Length > Settings.MinSize)
                    {
                        ListItem DepartmentItem             = GetDepartment(Department);
                        FileCreationInformation Fcreateinfo = new FileCreationInformation();
                        Fcreateinfo.Url       = Fileinfo.Name;
                        Fcreateinfo.Content   = System.IO.File.ReadAllBytes(FileName);
                        Fcreateinfo.Overwrite = true;
                        File FileToUpload = list.RootFolder.Files.Add(Fcreateinfo);
                        ClientCntx.Load(list);
                        ClientCntx.ExecuteQuery();

                        try
                        {
                            ListItem Listitem = FileToUpload.ListItemAllFields;

                            Field       field  = list.Fields.GetByTitle("FIle_Status");
                            FieldChoice choice = ClientCntx.CastTo <FieldChoice>(field);
                            ClientCntx.Load(choice);
                            ClientCntx.ExecuteQuery();
                            string[] MyStatus     = FileStatus.ToUpper().Split(',');
                            string   StatusUpload = string.Empty;
                            for (int choicecount = 0; choicecount < MyStatus.Length; choicecount++)
                            {
                                if (choice.Choices.Contains(MyStatus[choicecount].Trim()))
                                {
                                    if (choicecount == MyStatus.Length - 1)
                                    {
                                        StatusUpload = StatusUpload + MyStatus[choicecount];
                                    }
                                    else
                                    {
                                        StatusUpload = StatusUpload + MyStatus[choicecount] + ";";
                                    }
                                }
                            }

                            Listitem["File_Type"]       = System.IO.Path.GetExtension(FileName);
                            Listitem["FIle_Status"]     = StatusUpload;
                            Listitem["FileCreatedBy"]   = user.Title;
                            Listitem["Department_Name"] = DepartmentItem.Id;
                            Listitem.Update();
                            ClientCntx.ExecuteQuery();
                            Reason = "NA";
                            Status = true;
                        }
                        catch (Exception ex)
                        {
                            Reason = "Department not found";
                            Console.WriteLine("Department not found");
                            WriteToLog.WriteToLogs(ex);
                        }
                    }
                    else
                    {
                        if (Fileinfo.Length < Settings.MinSize)
                        {
                            Reason = "File size is Less than Required file size";
                            Console.WriteLine(Reason);
                        }
                        else
                        {
                            Reason = "File size is more than Required file size";
                            Console.WriteLine(Reason);
                        }
                    }
                }
                else
                {
                    Reason = "File Does not exist";

                    Console.WriteLine(Reason);
                }
            }
            catch (Exception ex)
            {
                Reason   = "User Does not exist";
                FileSize = "";
                Status   = false;
                WriteToLog.WriteToLogs(ex);
            }

            return(Status);
        }