public static void RequirementInventoryUpdate(ClientContext context, ReqItemcollection reqItemcollection, SubscriptionItem subscriptionItem, NetworkCredential networkCredential)
        {
            try
            {
                context.Credentials = networkCredential;
                List olistReq     = context.Web.Lists.GetByTitle(CommonVariables.RequirementListTitle);
                var  count        = reqItemcollection.reqitems.Count;
                var  maxChunkSize = 100;
                var  shouldRun    = true;
                var  start        = 0;
                var  chunkSize    = count < maxChunkSize ? count : maxChunkSize;
                var  end          = start + chunkSize < count ? start + chunkSize : count;
                context.RequestTimeout = -1;
                while (shouldRun)
                {
                    shouldRun = end == count ? false : true;
                    for (int i = start; i < end; i++)
                    {
                        ListItem oListItem = olistReq.GetItemById(reqItemcollection.reqitems[i].reqID);
                        oListItem["inventory"]         = reqItemcollection.reqitems[i].invID;
                        oListItem["_ModerationStatus"] = 0; // Approved:0,Denied:1,Pending:2,Draft:3,Shceduled:4
                        oListItem.Update();
                        context.Load(oListItem);
                    }

                    context.ExecuteQuery();
                    start = end;
                    end   = start + chunkSize < count ? start + chunkSize : count;
                }
                subscriptionItem.IsSuccess = 1;
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Version conflict"))
                {
                    for (int i = 0; i < noOfAttempts; i++)
                    {
                        Thread.Sleep(1000);
                        Requirement.RequirementInventoryUpdate(context, reqItemcollection, subscriptionItem, networkCredential);
                        if (subscriptionItem.IsSuccess == 1)
                        {
                            break;
                        }
                    }
                }
                Errorlogs.Log(context, new ErrorLogItem
                {
                    ErrorMessage   = ex.Message,
                    MethodName     = "Requirement.RequirementInventoryUpdate",
                    StackTrace     = ex.StackTrace,
                    SubscriptionID = subscriptionItem.ID
                });
            }
        }
        public static async Task ClientLogFolderCreation(ClientContext parentContext, ReqItemcollection reqItemcollection, SubscriptionItem subscriptionItem)
        {
            string            LogApplicationURL = System.Configuration.ConfigurationManager.AppSettings["LogApplicationURL"];
            NetworkCredential networkCredential = new NetworkCredential(CommonVariables.AccountName, CommonVariables.Password, "NRES");

            using (ClientContext rootcontext = new ClientContext(LogApplicationURL))
            {
                rootcontext.Credentials = networkCredential;
                List list = rootcontext.Web.Lists.GetByTitle(CommonVariables.ClientLogListTitle);
                if (!IsFolderCreated)
                {
                    CreateInventoryIDFolder(rootcontext, list, subscriptionItem.InvID);
                }
                await UpdateClientLogItems(parentContext, rootcontext, reqItemcollection, networkCredential, subscriptionItem);
            }
        }
        public static async Task UpdateClientLogItems(ClientContext parentContext, ClientContext rootcontext, ReqItemcollection reqItemcollection, NetworkCredential networkCredential, SubscriptionItem subscriptionItem)
        {
            try
            {
                string folder_RelativeUrl = "/Lists/ClientLogs/" + subscriptionItem.InvID;

                List olistClientLog = rootcontext.Web.Lists.GetByTitle(CommonVariables.ClientLogListTitle);
                var  count          = reqItemcollection.reqitems.Count;
                var  maxChunkSize   = 100;
                var  shouldRun      = true;
                var  start          = 0;
                var  chunkSize      = count < maxChunkSize ? count : maxChunkSize;
                var  end            = start + chunkSize < count ? start + chunkSize : count;
                rootcontext.RequestTimeout = -1;
                while (shouldRun)
                {
                    shouldRun = end == count ? false : true;
                    for (int i = start; i < end; i++)
                    {
                        string        reqID         = reqItemcollection.reqitems[i].reqID;
                        ClientLogItem clientLogItem = await ReadDataCollection(networkCredential, subscriptionItem.WebApplicationURL, Convert.ToInt32(reqID), subscriptionItem.DocumentID);

                        ListItemCreationInformation listItemCreationInformation = new ListItemCreationInformation();
                        listItemCreationInformation.FolderUrl = folder_RelativeUrl;

                        var listItem = olistClientLog.AddItem(listItemCreationInformation);
                        listItem["Title"]              = "Log entry";
                        listItem["Action"]             = reqItemcollection.reqitems[i].Isselected ? "Add" : "Remove";
                        listItem["Heading1"]           = clientLogItem.heading1;
                        listItem["Heading2"]           = clientLogItem.heading2;
                        listItem["Heading3"]           = clientLogItem.heading3;
                        listItem["Header4"]            = clientLogItem.heading4;
                        listItem["Header5"]            = clientLogItem.heading5;
                        listItem["RequirementType"]    = clientLogItem.requirementType;
                        listItem["ListURL"]            = clientLogItem.listURL;
                        listItem["ItemID"]             = reqID;
                        listItem["ItemURL"]            = clientLogItem.itemURL;
                        listItem["RESTItemProperties"] = clientLogItem.itemRESTURL;
                        listItem["Client"]             = subscriptionItem.InvID;
                        listItem["Note"]         = reqItemcollection.reqitems[i].Isselected ? "" : subscriptionItem.Notes;
                        listItem["Jurisdiction"] = subscriptionItem.Jurisdiction;
                        listItem["Author0"]      = subscriptionItem.DocumentAuthor;
                        listItem["Author"]       = subscriptionItem.CreatedBy;
                        listItem["Editor"]       = subscriptionItem.CreatedBy;
                        listItem["Documentname"] = subscriptionItem.DocumentTitle;

                        listItem.Update();
                        rootcontext.Load(listItem);
                    }

                    rootcontext.ExecuteQuery();
                    start = end;
                    end   = start + chunkSize < count ? start + chunkSize : count;
                }
                subscriptionItem.IsSuccess = 1;
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Version conflict"))
                {
                    for (int i = 0; i < noOfAttempts; i++)
                    {
                        Thread.Sleep(1000);
                        await UpdateClientLogItems(parentContext, rootcontext, reqItemcollection, networkCredential, subscriptionItem);

                        if (subscriptionItem.IsSuccess == 1)
                        {
                            break;
                        }
                    }
                }

                Errorlogs.Log(parentContext, new ErrorLogItem
                {
                    ErrorMessage   = ex.Message,
                    MethodName     = "ClientLogFolder.UpdateClientLogItems",
                    StackTrace     = ex.StackTrace,
                    SubscriptionID = subscriptionItem.ID
                });
            }
        }