Wednesday, November 30, 2022

Custom CAML query Build

 public static string BuildQuery(string[] values, string ColumnName, string ConditionOrAnd, string compareOp, string DataType = "Text", string AdditionalColumn = "", string AdditionalColumnDataType = "Text")

        {

            var TagCount = values.Count();


            List<string> strConditions = new List<string>();


            string NANDTagStart = string.Empty, NANDTagClose = string.Empty;

            string COMPARETag = string.Empty;


            if (ConditionOrAnd.ToUpper() == "AND")

            {

                NANDTagStart = "<And>";

                NANDTagClose = "</And>";

            }

            if (ConditionOrAnd.ToUpper() == "OR")

            {

                NANDTagStart = "<Or>";

                NANDTagClose = "</Or>";

            }


            switch (compareOp.ToUpper())

            {

                case "EQ":

                    COMPARETag = "<Eq>{0}</Eq>";

                    break;

                case "CONTAINS":

                    COMPARETag = "<Contains>{0}</Contains>";

                    break;

            }



            foreach (var item in values)

            {

                string colmnString = string.Empty;

                //roleConditions.Add(x => ((string)x["ActionOwnr_x0020_Role"]).Contains(item));

                switch (DataType.ToUpper())

                {

                    case "NOTE":

                        colmnString = (@"<FieldRef Name='" + ColumnName + "' /> <Value Type='Note'>" + item + "</Value>");

                        break;


                    case "USER":

                        colmnString = (@"<FieldRef Name='" + ColumnName + "' /> <Value Type='User'>" + item + "</Value>");

                        break;


                    default:

                        colmnString = (@"<FieldRef Name='" + ColumnName + "' /> <Value Type='Text'>" + item + "</Value>");

                        break;


                }


                if ((ColumnName == "ActionOwner_x0020_Role" || ColumnName == "Creator_x0020_Role") && item == "BD")

                {

                    colmnString = @"<IsNull><FieldRef Name='" + ColumnName + "' /></IsNull>";

                    strConditions.Add(colmnString);

                    colmnString = (@"<FieldRef Name='" + ColumnName + "' /> <Value Type='Text'>" + item + "</Value>");

                }


                if (!string.IsNullOrEmpty(AdditionalColumn))

                {

                    strConditions.Add(string.Format(COMPARETag, colmnString));


                    switch (AdditionalColumnDataType.ToUpper())

                    {

                        case "NOTE":

                            colmnString = (@"<FieldRef Name='" + AdditionalColumn + "' /> <Value Type='Note'>" + item + "</Value>");

                            break;


                        default:

                            colmnString = (@"<FieldRef Name='" + AdditionalColumn + "' /> <Value Type='Text'>" + item + "</Value>");

                            break;


                    }


                }


                colmnString = string.Format(COMPARETag, colmnString);



                strConditions.Add(colmnString);

            }


            string qry = string.Empty;


            TagCount = strConditions.Count;


            for (int inx = 1; inx <= TagCount; inx++)

            {

                if (TagCount >= 2)

                {

                    if (inx > 2)

                    {

                        qry = (NANDTagStart + qry);

                        qry = qry + (strConditions.ElementAt(inx - 1) + NANDTagClose);

                    }

                    else if (inx == 2)

                    {

                        qry = qry + (strConditions.ElementAt(inx - 1) + NANDTagClose);

                    }

                    else if (inx == 1)

                    {

                        qry = qry + (NANDTagStart + strConditions.ElementAt(inx - 1));

                    }

                }

                //else

                //{

                //    if (TagCount > 1)

                //    {

                //        if (inx == 1)

                //        {

                //            qry.Append(NANDTagStart);

                //        }

                //        if (inx % 2 == 0)

                //        {

                //            qry.Append(strConditions.ElementAt(inx - 1) + NANDTagClose);

                //        }

                //        else if (inx % 2 == 1  && inx < TagCount)

                //        {

                //            qry.Append(NANDTagStart + strConditions.ElementAt(inx - 1));

                //        }

                //        else if(inx == TagCount)

                //        {

                //            qry.Append(strConditions.ElementAt(inx - 1) + NANDTagClose);

                //        }

                //    }

                else

                {

                    qry = qry + (strConditions.ElementAt(inx - 1));

                }


            }


            return qry.ToString();


        }

        public static string GenerateCamlQry(ReportItems rptParam)

        {

            try

            {

                var Roles = rptParam.actionOwnerRole.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                var Owners = rptParam.actionOwner.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                var ProjectNames = rptParam.actionCategory.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                var ProjectTypes = rptParam.actiontype.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);


                var Regions = rptParam.region.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                var Customers = rptParam.customer.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                var GreenBooks = rptParam.greenbook.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);


                //Added newly(6-9-22)

                var HighLowfilter = rptParam.highLowfilter.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);


                var priority = rptParam.Priority.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);


                // var roleConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                string OuterQry = "<Where>{0}</Where>";


                List<string> totalQry = new List<string>();


                totalQry.Add(BuildQuery(Roles, "ActionOwner_x0020_Role", "OR", "CONTAINS"));

                totalQry.Add(BuildQuery(Owners, "ProjectOwner", "OR", "CONTAINS", "Text", "Flagged_x0020_By"));

                totalQry.Add(BuildQuery(ProjectNames, "ProjectName", "OR", "CONTAINS"));


                totalQry.Add(BuildQuery(ProjectTypes, "ProjectType", "OR", "CONTAINS"));


                totalQry.Add(BuildQuery(Regions, "Region", "OR", "CONTAINS"));


                // commented this block as Adam request(9-Nov-22)

              //  totalQry.Add(BuildQuery(Regions, "ProjectName", "OR", "CONTAINS"));


                totalQry.Add(BuildQuery(Customers, "Customer_x0020_Short_x0020_Name", "OR", "CONTAINS", "Note"));


                totalQry.Add(BuildQuery(GreenBooks, "GreenBook", "OR", "CONTAINS", "Note"));


                // newly added block

                //string[] priority = { "High" };

                //if (HighLowfilter.Contains("PriorityHigh"))                

                //    totalQry.Add(BuildQuery(priority, "Priority", "OR", "CONTAINS"));


                //var newHighLowfilter = HighLowfilter.Where(o => o != "PriorityHigh").ToArray();

                // totalQry.Add(BuildQuery(newHighLowfilter, "EOB_Report", "OR", "CONTAINS")); // newly added



                totalQry.Add(BuildQuery(priority, "Priority", "OR", "CONTAINS")); // newly added

                totalQry.Add(BuildQuery(HighLowfilter, "EOB_Report", "OR", "CONTAINS")); // newly added


                totalQry.Add(BuildQuery(new string[] { "Open" }, "Status", "OR", "EQ"));



                totalQry = totalQry.Where(s => !string.IsNullOrEmpty(s)).Distinct().ToList();


                StringBuilder QryBuilder = new StringBuilder();



                int firstNonEmty = 0;


                //for (int inx = 0; inx < totalQry.Count; inx++)

                //{

                //    if (!string.IsNullOrEmpty(totalQry.ElementAt(inx)))

                //    {

                //        firstNonEmty += 1;

                //        if (firstNonEmty == 1)

                //        {

                //            QryBuilder.Append("<And>");

                //            QryBuilder.Append(totalQry.ElementAt(inx));

                //        }


                //        if (inx == totalQry.Count - 1)

                //        {

                //            QryBuilder.Append(totalQry.ElementAt(inx));

                //            QryBuilder.Append("</And>");

                //        }


                //        QryBuilder.Insert(0, "<And>");

                //        QryBuilder.Append(totalQry.ElementAt(inx));

                //        QryBuilder.Append("</And>");


                //    }

                //}


                var TagCount = totalQry.Count;


                var NANDTagStart = "<And>";

                var NANDTagClose = "</And>";

                var qry = "";


                for (int inx = 1; inx <= TagCount; inx++)

                {

                    if (TagCount >= 2)

                    {

                        if (inx > 2)

                        {

                            qry = (NANDTagStart + qry);

                            qry = qry + (totalQry.ElementAt(inx - 1) + NANDTagClose);

                        }

                        else if (inx == 2)

                        {

                            qry = qry + (totalQry.ElementAt(inx - 1) + NANDTagClose);

                        }

                        else if (inx == 1)

                        {

                            qry = qry + (NANDTagStart + totalQry.ElementAt(inx - 1));

                        }

                    }


                    else

                    {

                        qry = qry + (totalQry.ElementAt(inx - 1));

                    }


                }


                #region forCAMLEx.Client


                //if (GreenBooks.Count() > 0)

                //{

                //    totalQry.Append("<And>");

                //}

                //if (Customers.Count() > 0)

                //{

                //    totalQry.Append("<And>");

                //}

                //if (Regions.Count() > 0)

                //{

                //    totalQry.Append("<And>");

                //}

                //if (ProjectTypes.Count() > 0)

                //{

                //    totalQry.Append("<And>");

                //}


                //if (ProjectNames.Count() > 0)

                //{

                //    totalQry.Append("<And>");

                //}


                //totalQry.Append("<And>");


                //if (Roles.Count() > 0 || Owners.Count() >0)

                //{

                //    totalQry.Append("<And>");

                //}


                //totalQry.Add(BuildQuery(Roles, "ActionOwner_x0020_Role", "OR", "CONTAINS"));

                //totalQry.Add(BuildQuery(Owners, "ProjectOwner", "OR", "CONTAINS"));


                //if (Roles.Count() > 0 && Owners.Count() > 0)

                //{

                //    totalQry.Append("</And>");

                //}



                //totalQry.Add(BuildQuery(ProjectNames, "ProjectName", "OR", "CONTAINS"));

                //if (ProjectNames.Count() > 0)

                //{

                //    totalQry.Append("</And>");

                //}

                //totalQry.Add(BuildQuery(ProjectTypes, "ProjectType", "OR", "CONTAINS"));


                //if (ProjectTypes.Count() > 0)

                //{

                //    totalQry.Append("</And>");

                //}




                //totalQry.Add(BuildQuery(Regions, "Region", "OR", "CONTAINS"));

                //if (Regions.Count() > 0)

                //{

                //    totalQry.Append("</And>");

                //}

                //totalQry.Add(BuildQuery(Customers, "Customer_x0020_Short_x0020_Name", "OR", "CONTAINS","Note"));

                //if (Customers.Count() > 0)

                //{

                //    totalQry.Append("</And>");

                //}



                //totalQry.Add(BuildQuery(GreenBooks, "GreenBook", "OR", "CONTAINS", "Note"));

                //if (GreenBooks.Count() > 0)

                //{

                //    totalQry.Append("</And>");

                //}

                //totalQry.Add(BuildQuery(new string[] { "Open" }, "Status", "OR", "EQ"));

                // totalQry.Append("</And>");




                //var RoleExpr = ExpressionsHelper.CombineOr(roleConditions);


                //


                //var OwnersConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //foreach (var item in Owners)

                //{

                //    OwnersConditions.Add(x => ((string)x["ProjectOwner"]).Contains(item));

                //}

                //var OwnerExpr = ExpressionsHelper.CombineOr(OwnersConditions);

                /////////

                //


                //var ProjNameConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //foreach (var item in ProjectNames)

                //{

                //    ProjNameConditions.Add(x => ((string)x["ProjectName"]).Contains(item));

                //}

                //var ProjNameExpr = ExpressionsHelper.CombineOr(ProjNameConditions);

                ////////

                /////////

                //


                //var ProjectTypeConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //foreach (var item in ProjectTypes)

                //{

                //    ProjectTypeConditions.Add(x => ((string)x["ProjectType"]).Contains(item));

                //}

                //var ProjectTypeExpr = ExpressionsHelper.CombineOr(ProjectTypeConditions);

                ////////

                /////////

                //


                //var RegionConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //foreach (var item in Regions)

                //{

                //    RegionConditions.Add(x => ((string)x["Region"]).Contains(item));

                //}

                //var RegionExpr = ExpressionsHelper.CombineOr(RegionConditions);

                ////////

                /////////

                //var Customers = rptParam.customer.Split(new char[','], StringSplitOptions.RemoveEmptyEntries);


                //var CustomerConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //foreach (var item in Customers)

                //{

                //    CustomerConditions.Add(x => ((DataTypes.Note)x["Customer_x0020_Short_x0020_Name"]).Contains(item));

                //}

                //var CustomerExpr = ExpressionsHelper.CombineOr(CustomerConditions);

                ////////

                /////////

                //var GreenBooks = rptParam.greenbook.Split(new char[','], StringSplitOptions.RemoveEmptyEntries);


                //var GreenBookConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //foreach (var item in GreenBooks)

                //{

                //    GreenBookConditions.Add(x => ((DataTypes.Note)x["GreenBook"]).Contains(item));

                //}

                //var GreenBookExpr = ExpressionsHelper.CombineOr(GreenBookConditions);

                ////////


                //var StatusConditions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //StatusConditions.Add(x => (string)x["Status"] == "Open");


                //var StatusExpr = ExpressionsHelper.CombineAnd(StatusConditions);


                //var expressions = new List<Expression<Func<Microsoft.SharePoint.Client.ListItem, bool>>>();

                //expressions.Add(RoleExpr);

                //expressions.Add(OwnerExpr);


                //expressions.Add(ProjNameExpr);

                //expressions.Add(ProjectTypeExpr);


                //expressions.Add(RegionExpr);

                //expressions.Add(CustomerExpr);


                //expressions.Add(GreenBookExpr);

                //expressions.Add(StatusExpr);


                //var qry = CamlexNET.Camlex.Query().WhereAll(expressions).ToCamlQuery();

                #endregion



                //return string.Format(OuterQry, QryBuilder.ToString());

                return string.Format(OuterQry, qry);

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }


        public static string BuildCAMLInQuery(List<string> values, string ColumnName, string DataType = "Text")

        {



            List<string> strConditions = new List<string>();


            string NANDTagStart = string.Empty, NANDTagClose = string.Empty;

            string COMPARETag = string.Empty;


            NANDTagStart = "<Or>";

            NANDTagClose = "</Or>";




            COMPARETag = "<In>{0}</In>";


            List<List<string>> ListofValueList = SplitList(values, 100).ToList();


            var TagCount = ListofValueList.Count();


            string colmnString = string.Empty;


            foreach (var item in ListofValueList)

            {

                colmnString = @"<FieldRef Name='" + ColumnName + "' /><Values>";

                foreach (var value in item)

                {


                    colmnString += "<Value Type='" + DataType + "'>" + value + "</Value>";


                }

                colmnString += "</Values>";

                //roleConditions.Add(x => ((string)x["ActionOwnr_x0020_Role"]).Contains(item));



                colmnString = string.Format(COMPARETag, colmnString);



                strConditions.Add(colmnString);

            }


            string qry = string.Empty;


            TagCount = strConditions.Count;


            for (int inx = 1; inx <= TagCount; inx++)

            {

                if (TagCount >= 2)

                {

                    if (inx > 2)

                    {

                        qry = (NANDTagStart + qry);

                        qry = qry + (strConditions.ElementAt(inx - 1) + NANDTagClose);

                    }

                    else if (inx == 2)

                    {

                        qry = qry + (strConditions.ElementAt(inx - 1) + NANDTagClose);

                    }

                    else if (inx == 1)

                    {

                        qry = qry + (NANDTagStart + strConditions.ElementAt(inx - 1));

                    }

                }

                //else

                //{

                //    if (TagCount > 1)

                //    {

                //        if (inx == 1)

                //        {

                //            qry.Append(NANDTagStart);

                //        }

                //        if (inx % 2 == 0)

                //        {

                //            qry.Append(strConditions.ElementAt(inx - 1) + NANDTagClose);

                //        }

                //        else if (inx % 2 == 1  && inx < TagCount)

                //        {

                //            qry.Append(NANDTagStart + strConditions.ElementAt(inx - 1));

                //        }

                //        else if(inx == TagCount)

                //        {

                //            qry.Append(strConditions.ElementAt(inx - 1) + NANDTagClose);

                //        }

                //    }

                else

                {

                    qry = qry + (strConditions.ElementAt(inx - 1));

                }


            }


            return qry.ToString();


        }

SharePoint Context from App only from client and secret id

 public static string GetAsyncListData(string RestQry)

        {

            try

            {

                var json = string.Empty;

                string strSiteURL = Convert.ToString(ConfigurationManager.AppSettings["SiteURL"]);

                SharePointOnlineCredentials credentials = SPHelper.GetSPHttpHandler();

                string realm = TokenHelper.GetRealmFromTargetUrl(new Uri(strSiteURL));

                string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, new Uri(strSiteURL).Authority, realm).AccessToken;

                using (var handler = new HttpClientHandler() { UseDefaultCredentials = false })//  Credentials = credentials 

                {


                    var uri = new Uri(strSiteURL);

                    //handler.CookieContainer.SetCookies(uri, credentials.GetAuthenticationCookie(uri));



                    using (var client = new HttpClient(handler))

                    {

                        client.DefaultRequestHeaders.Accept.Clear();

                        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

                       // client.DefaultRequestHeaders.Add("X-API-Version", "2");


                        var response = client.GetAsync(string.Format(RestQry, strSiteURL)).Result;


                        response.EnsureSuccessStatusCode();


                        json = response.Content.ReadAsStringAsync().Result;


                        return json;


                        //client.BaseAddress = new Uri(endpointURL);

                        //client.DefaultRequestHeaders.Accept.Clear();

                        //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                        //client.DefaultRequestHeaders.Add("apikey", apikey);

                    }

                }

            }

            catch (Exception ex)

            {

                ExceptionLogger.ErrorLog(ex.StackTrace, ex.Message, ex.Source, "Projects:GetAsyncListData", Convert.ToString(ex.InnerException), "");

                return string.Empty;

            }

Sunday, November 6, 2022

VS 2019 ENTERPRIZE KEY

 VS 2019 ENTERPRIZE KEY : BF8Y8-GN2QH-T84XB-QVY3B-RC4DF

Tuesday, September 13, 2022

Enocoding long string in Javascript

 unction Encode(values) {


    var newValue = values;


    if (newValue) {


        if (newValue.indexOf('%') > -1)

            newValue = newValue.replace(/%/g, '%25');


        if (newValue.indexOf('"') > -1)

            newValue = newValue.replace(/"/g, '%22');


        if (newValue.indexOf('\\') > -1)

            newValue = newValue.replace(/\\/g, '%5C');


        if (newValue.indexOf('{') > -1)

            newValue = newValue.replace(/{/g, '%7B');


        if (newValue.indexOf('}') > -1)

            newValue = newValue.replace(/}/g, '%7D');


        if (newValue.indexOf("'") > -1)

            newValue = newValue.replace(/'/g, "&#39;");

    }

    return newValue;

}


 row.EmbedCode = decodeURIComponent(Encode(row.EmbedCode));

Monday, August 1, 2022

SQL SP Search with multiple parameter

 CREATE PROCEDURE [dbo].[DefectFilters]

    @defectStatus nvarchar(200),

    @defectPriority nvarchar(200),

@assignTo nvarchar(500),

@createdBy nvarchar(500),

--@testScriptId int,

@projectReleaseID int

AS

BEGIN

   

   Declare @defectStatusTb table(id varchar(200));

   Declare @defectPriorityTb table(id varchar(200));

   Declare @assignToTb table(id varchar(500));

   Declare @createdByTb table(id varchar(500));


   Insert into @defectStatusTb SELECT *  FROM  dbo.BreakStringIntoTableRows(@defectStatus)

   Insert into @defectPriorityTb SELECT *  FROM  dbo.BreakStringIntoTableRows(@defectPriority)

   Insert into @assignToTb SELECT *  FROM  dbo.BreakStringIntoTableRows(@assignTo)

   Insert into @createdByTb SELECT *  FROM  dbo.BreakStringIntoTableRows(@createdBy)


SELECT * from [dbo].[ProjectsDefects] PD

join [dbo].[ProjectReleases] PR on PD.[ProjectReleaseID] = PR.[ProjectReleaseID]

join [dbo].[Defect_Priority] DP on PD.[DefectPriority] = DP.ID

join [dbo].[Defect_Status] DS on PD.[DefectStatus] =DS.ID

 

where ((@defectStatus='' ) OR (DefectStatus IN (SELECT * FROM @defectStatusTb)))

AND ((@defectPriority='' ) OR ([DefectPriority] IN (SELECT * FROM @defectPriorityTb)))

AND ((@assignTo='' ) OR ([Owner] IN (SELECT * FROM @assignToTb)))

AND ((@createdBy='' ) OR ([createdby] IN (SELECT * FROM @createdByTb)))

--AND TestScriptId = @testScriptId

AND PD.[ProjectReleaseID] = @projectReleaseID


END

=========================Function to split string to table ======================

ALTER FUNCTION [dbo].[BreakStringIntoTableRows] (@CommadelimitedString   varchar(1000))
RETURNS   @Result TABLE (Column1   VARCHAR(100))
AS
BEGIN
        DECLARE @IntLocation INT
        WHILE (CHARINDEX(',',    @CommadelimitedString, 0) > 0)
        BEGIN
              SET @IntLocation =   CHARINDEX(',',    @CommadelimitedString, 0)      
              INSERT INTO   @Result (Column1)
              --LTRIM and RTRIM to ensure blank spaces are   removed
              SELECT RTRIM(LTRIM(SUBSTRING(@CommadelimitedString,   0, @IntLocation)))   
              SET @CommadelimitedString = STUFF(@CommadelimitedString,   1, @IntLocation,   '') 
        END
        INSERT INTO   @Result (Column1)
        SELECT RTRIM(LTRIM(@CommadelimitedString))--LTRIM and RTRIM to ensure blank spaces are removed
        RETURN 
END

Saturday, July 16, 2022

Web Utility Link

 1. For PDF to file conversion and visa versa

    https://tinywow.com/

2. For passport photo online

     https://www.123passportphoto.com/




Saturday, July 2, 2022

File Reading/Upload in JS with web method in SharePoint PH App

 if (document.getElementById("fileUpload").value != "") {

                    var fileControl = $('#fileUpload').get(0);

                    var fileData = fileControl.files;

                    var fileName = fileData[0].name;

                    var data = fileData[0];

                    var s = "";

                    if (data) {

                        var reader = new FileReader();

                        reader.readAsArrayBuffer(data);

                        reader.onload = function (evt) {

                            callingUpload(evt.target.result, fileName);

                        }

                        reader.onerror = function (evt) {

                            alert(evt.target.result);

                        }

                    }

                }

=========================================

 function callingUpload(buffer, fileName) {

            ////debugger;

            var ActionID = "";

            //debugger;


            if (!isEmpty(GetParameterValues("ActionID")) && isEmpty(GetParameterValues("CopyAction")))

                ActionID = GetParameterValues("ActionID");

            else if (!isEmpty($('#hdnActionID').val()))

                ActionID = $('#hdnActionID').val();


            var itemIdenObj = {};

            itemIdenObj.fileContent = btoa(arrayBufferToString(buffer));

            itemIdenObj.fileName = fileName;

            var selectedData = { 'fileContent': btoa(arrayBufferToString(buffer)).toString(), 'fileName': fileName.toString(), 'ActionID': ActionID }

            $.LoadingOverlay('show');

            //debugger;

            $.ajax

                  ({

                      type: "POST", contentType: "application/json; charset=utf-8", url: "NewActionForm.aspx/UploadDocument",

                      data: JSON.stringify(selectedData),

                      dataType: "json", async: true, success: function (result) {

                          if (result) {

                              //debugger;

                              var data = $.parseJSON(result.d);

                              $('#fileUpload').val('');

                              $("#filetable").empty();

                              for (var i = 0; i < data.length; i++) {

                                  var item = data[i];

                                  $('#hdnActionID').val(item.ID);

                                  var rowId = $("#filetable > tbody > tr").length;

                                  var serial_no = rowId + 1;

                                  var delbtnId = 'delete_' + result + '_' + rowId;

                                  //alert('File Uploaded successfully!');

                                  //$('#filetable').append('<tr><td>' + serial_no + '</td><td><a href="' + fileUrl + '">' + fileName + '</a></td><td><input type="button" class="btn btn-danger filedelete" value="Delete" id="' + delbtnId + '" onclick="DeleteDocument(\'' + fileName + '\')"/></td></tr>');

                                  $('#filetable').append('<tr><td><a href="' + item.FilePath + '" target="blank" class="text text-primary">' + item.FileName + '</a></td><td><input type="button" class="btn btn-danger filedelete" value="x" title="Delete" id="' + delbtnId + '" onclick="DeleteDocument(\'' + item.FileName + '\')"/></td></tr>');

                              }

                              $('#divFile').css("display", "block");

                              $.LoadingOverlay('hide');

                          }

                      }, error: function (result) {

                          alert("Error : " + result);

                          $.LoadingOverlay('hide');

                      }

                  });

        }

==================================


        function arrayBufferToString(buffer) {



            var bufView = new Uint8Array(buffer);

            var length = bufView.length;

            var result = '';

            var addition = Math.pow(2, 16) - 1;



            for (var i = 0; i < length; i += addition) {



                if (i + addition > length) {

                    addition = length - i;

                }

                result += String.fromCharCode.apply(null, bufView.subarray(i, i + addition));

            }

            return result;

        }