Monday, February 1, 2021

Web API Example with File upload

 <html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title></title>

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <script type="text/javascript">

        $(document).ready(function () {

            $("#getbtn").click(function () {

                GetRequest();

            });

        });


        function GetRequest() {


            var ibObj = {

                RequestorName: $("#txtRequestor").val(),

                RequestorEmail: $("#txtRequestorEmail").val(),

                RequestTitle: $("#txtTitle").val(),

                Description: $("#txtDesc").val(),

                RequestType: $("#ddlRequestType").val(),

                RequestPriority: $("#ddlReqPriorty").val(),

                ExpCompleteDate: $("#txtReqCompletionDate").val(),

                GISTicketNo: $("#txtgis").val(),

                FileName:fileName,

                FileByteArray: fileByteArray

            }


            var obj = JSON.stringify(ibObj);


            $.ajax({

                url: "api/ibase/IbaseEntity/",

                type: "POST",

                data: obj,

                dataType: "json",

                contentType: "application/json; charset=utf-8",

                success: function (data) {

                    $("#ibase").text(data);                 

                },

                error: function (error) {

                    alert(JSON.stringify(error));

                }

            });


        }


        var fileByteArray = []; var fileName;

        function getFilebytes() {

            var file = document.getElementById("fileUpload").files[0];

            fileName = file.name;

            let fileReader = new FileReader();


            fileReader.readAsArrayBuffer(file);

            fileReader.onload = function (ev) {

                const array = new Uint8Array(ev.target.result);

                for (let i = 0; i < array.length; i++) {

                    fileByteArray.push(array[i]);

                }

                console.log(fileByteArray); // here it is

            }

        }

    </script>

    <style>

        table {

            height: 200px;

        }

    </style>

</head>

<body>


    <div id="ibase" style="color:green"></div><br />

    <div>

        <table>

            <tr>

                <td>Request Title:</td>

                <td><input id="txtTitle" type="text" /></td>

            </tr>

            <tr>

                <td>Request Type:</td>

                <td>

                    <select name="ddlRequestType" id="ddlRequestType" class="form-control">

                        <option value="--Select--">--Select--</option>

                        <option value="Request New Field">Request New Field</option>

                        <option value="Add Assemblies">Add Assemblies</option>

                        <option value="Data Cleanup">Data Cleanup</option>

                        <option value="Other">Other</option>

                    </select>

                </td>

            </tr>

            <tr>

                <td>Request Priority:</td>

                <td>

                    <select name="ddlReqPriorty" id="ddlReqPriorty" class="form-control">

                        <option value="--Select--">--Select--</option>

                        <option value="P1:Critical">P1:Critical</option>

                        <option value="P2:High">P2:High</option>

                        <option value="P3:Medium">P3:Medium</option>

                        <option value="P4:Low">P4:Low</option>

                    </select>

                </td>

            </tr>

            <tr>

                <td>Expected Completion Date:</td>

                <td><input id="txtReqCompletionDate" type="text" value="2021-01-27" /></td>

            </tr>

            <tr>

                <td>Description:</td>

                <td><input id="txtDesc" type="text" value="desc" /></td>


            </tr>

            <tr>

                <td>GIS Ticket No:</td>

                <td><input id="txtgis" type="text" value="12345" /></td>


            </tr>

            <tr>

                <td>RequestorName</td>

                <td><input id="txtRequestor" type="text" value="Navneet Sharma --CNTR" /></td>


            </tr>

            <tr>

                <td>RequestorEmail</td>

                <td><input id="txtRequestorEmail" typetext value="navneet_sharma@contractor.amat.com" /></td>


            </tr>

            <tr>

                <td>File Upload</td>

                <td><input id="fileUpload" type="file" onchange="getFilebytes()" /></td>


            </tr>

            <tr>               

                <td colspan="2"><br /><input id="getbtn" type="button" value="Save" /></td>

            </tr>

        </table>

       

        <br />

       

       

    </div>



</body>

</html>

Monday, January 4, 2021

Web API formatters

 Web API returning default JSON with proper indentation

------------------------------------------------------------------------

 public static class WebApiConfig

    {

        public static void Register(HttpConfiguration config)

        {

            // Web API configuration and services

            // Configure Web API to use only bearer token authentication.

            config.SuppressDefaultHostAuthentication();

            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));


            // Web API routes

            config.MapHttpAttributeRoutes();


            config.Routes.MapHttpRoute(

                name: "DefaultApi",

                routeTemplate: "api/{controller}/{id}",

                defaults: new { id = RouteParameter.Optional }

            );

            config.Formatters.Remove(config.Formatters.XmlFormatter);

            config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;

            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

        }

    }

Tuesday, December 15, 2020

JQ Grid Examples


JQ Grid Examples:

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


 http://www.ok-soft-gmbh.com/jqGrid/ActionButtons.htm

http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithInlineEditingOnEnter.htm

http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithInlineEditingAndHide.htm

https://www.ok-soft-gmbh.com/jqGrid/OK/performane-13-5000-25-free-jqgrid.htm

http://www.ok-soft-gmbh.com/jqGrid/SubgridWithLocalGrid.htm

http://www.ok-soft-gmbh.com/jqGrid/OK/LocalAdjacencyTree-expandCallapsAll.htm

http://www.ok-soft-gmbh.com/jqGrid/OK/performane-1000-free-grid-groupingAll.htm



Friday, November 27, 2020

Convert JSON object array to c# class

 requestIds ="JSON array object" 

 JsonTextReader reader = new JsonTextReader(new System.IO.StringReader(requestIds));

            JsonSerializer serializer = new JsonSerializer();

            var objContent = serializer.Deserialize(reader).ToString();


            JArray objArray = null;

            try

            {

                objArray = JArray.Parse(objContent);


            }

            catch (Exception ex)

            {

                objContent = "[" + objContent + "]";

            }


            IList<SubscriptionObject> arrarylist = Newtonsoft.Json.JsonConvert.DeserializeObject<IList<SubscriptionObject>>(objContent);

Thursday, September 17, 2020

Getting data through Web API from SQL and implementing in Ajax call in SharePoint content editor web part (Dashboard Refresh API, )

  Javascript in CE webpart:

-----------------------------------

function GetDashboardRefreshDetails(dashBoardName) {


//var listURL ="https://team.amat.com/sites/BIM_QA";

//var url ="/_api/Web/Lists/GetByTitle('BIM Search')/Items?$select=Name,ContentType0,link,BusinessOwningFunction,Active&$filter=BusinessOwningFunction eq '"+pageName+"' and Active eq 1";

var url = "http://spqaappweb.amat.com/DashboardRefreshAPI/API/DashboardAPI?dashboardName='"+dashBoardName+"'";

//var url = "http://localhost:50565/Api/DashboardApi";

    $.ajax({

        url: url,

        type: 'GET',

        crossDomain: true,

        dataType: 'jsonp',

        contentType: "application/json; charset=utf-8",

            success : function(response) {

       Getdata(response);

    },

        error: function (error) {

          // alert(JSON.stringify(error));

        }

    });

}

function Getdata(response){

if(response.length > 0){}

}


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

C# controller code:

--------------

 public void GetRefreshDetails(string dashboardName)

        {          

            dashboardName = dashboardName.Substring(1, dashboardName.Length - 2);

            BAL obj = new BAL();

             List<BAL> objList = obj.GetRefreshData(dashboardName);

             StringBuilder sb = new StringBuilder();

             JavaScriptSerializer js = new JavaScriptSerializer();

             var callBackFunction = HttpContext.Current.Request["callback"];

             sb.Append(callBackFunction + "(");

             sb.Append(js.Serialize(objList));

             sb.Append(");");


             HttpContext.Current.Response.Clear();

             HttpContext.Current.Response.ContentType = "application/json";

             HttpContext.Current.Response.Write(sb.ToString());

             HttpContext.Current.Response.End();

           //  return objList;

        }


        [WebMethod()]

        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]

        public void GetToolsCount()

        {

            ToolsData obj = new ToolsData();

            List<ToolsData> objList = obj.GetToolsCount();

            StringBuilder sb = new StringBuilder();

            JavaScriptSerializer js = new JavaScriptSerializer();

            var callBackFunction = HttpContext.Current.Request["callback"];

            sb.Append(callBackFunction + "(");

            sb.Append(js.Serialize(objList));

            sb.Append(");");

            HttpContext.Current.Response.Clear();

            HttpContext.Current.Response.ContentType = "application/json";

            HttpContext.Current.Response.Write(sb.ToString());

            HttpContext.Current.Response.End();

            //  return objList;

        }       

    }

=====================================================================
C# Modal
------------------
public class ToolsData
    {
        public string Tools { get; set; }
        public string ActiveTools { get; set; }
        public string ContractTools { get; set; }
        public string WarrantyTools { get; set; }
        public string InsatllTools { get; set; }
        public string SemiTools { get; set; }
        public string DisplayTools { get; set; }
        public string VarianTools { get; set; }
        public string OtherTools { get; set; }
        public string Chambers { get; set; }

        public List<ToolsData> GetToolsCount()
        {
            DataTable dt = new DataTable();          
            List<ToolsData> objList = new List<ToolsData>();
            DAL objDal = new DAL();
            dt = objDal.GetToolData();
            if (dt != null)
            {
                foreach (DataRow row in dt.Rows)
                {
                    ToolsData obj = new ToolsData();
                    obj.Tools = Convert.ToString(row["Tools"]);
                    obj.ActiveTools = Convert.ToString(row["ActiveTools"]);
                    obj.ContractTools = Convert.ToString(row["InContractTools"]);
                    obj.WarrantyTools = Convert.ToString(row["InWarrantyTools"]);
                    obj.InsatllTools = Convert.ToString(row["InInstallTools"]);
                    obj.SemiTools = Convert.ToString(row["SemiTools"]);
                    obj.DisplayTools = Convert.ToString(row["DisplayTools"]);
                    obj.VarianTools = Convert.ToString(row["VarianTools"]);
                    obj.OtherTools = Convert.ToString(row["OtherTools"]);
                    obj.Chambers = Convert.ToString(row["Chambers"]);
                    objList.Add(obj);

                }
            }
            return objList;
        }
    }
========================================
C# Data Access
-----------------------
public DataTable GetRefreshData(string dashboardname)
        {
            DataTable dt = new DataTable();
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand("DashboardRefreshMatrix", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.AddWithValue("@dashboardname", dashboardname);
                    SqlDataAdapter ad = new SqlDataAdapter(cmd);
                    ad.Fill(ds);
                    if (ds.Tables.Count > 0)
                        dt = ds.Tables[0];
                }
            }
            return dt;
        }

        public DataTable GetToolData()
        {
            DataTable dt = new DataTable();
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand("GetToolsData", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataAdapter ad = new SqlDataAdapter(cmd);
                    ad.Fill(ds);
                    if (ds.Tables.Count > 0)
                        dt = ds.Tables[0];
                }
            }
            return dt;
        }
        
    }
=======================================================================
WebApiConfig.cs  file
------------------------

public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
          
            config.MapHttpAttributeRoutes();
           
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            var jsonpFormatter = new JsonpMediaTypeFormatter(config.Formatters.JsonFormatter);
            config.Formatters.Insert(0, jsonpFormatter);

            //var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
            //config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        }

Wednesday, May 13, 2020

Get More than 5000 records from SharePoint list by rest API through recursive call



Get More than 5000 records from SharePoint list by rest API through recursive call
--------------------------------------------------------------------------------

$(document).ready(function(){
  GetListItems();
});

var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('ECO_Documents')/items?$top=4999&$orderby=ID";
    var response = response || [];  // this variable is used for storing list items
   
    function GetListItems(){
        return $.ajax({
            url: url, 
            method: "GET", 
            headers: { 
                "Accept": "application/json; odata=verbose" 
            },
            success: function(data){
                response = response.concat(data.d.results);
                if (data.d.__next) {
                    url = data.d.__next;
                   // console.log(url);
                    GetListItems();
                }
            },
             error: function (error) {
            alert(JSON.stringify(error));
           }
        });
    }