コード例 #1
0
ファイル: Handler.ashx.cs プロジェクト: sandeeplocality/G60
        public void ProcessRequest(HttpContext ctx)
        {
            string json;
            using (var reader = new System.IO.StreamReader(ctx.Request.InputStream))
            {
                json = reader.ReadToEnd();
                obj.Write_ErrorLog("1:" + json);
                json = System.Web.HttpUtility.UrlDecode(json);
                if (json.Contains("DeviceData="))
                {
                    json = json.Remove(0, 11);
                }
            }
            ctx.Response.ContentType = "text/plain";
            if (!string.IsNullOrEmpty(json))
            {
                try
                {
                    try
                    {
                        // Parse JSON into dynamic object, convenient!
                        System.Collections.Generic.Dictionary<string, object> values = JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string, object>>(json);

                        Newtonsoft.Json.Linq.JObject results = Newtonsoft.Json.Linq.JObject.Parse(json);
                        int recard_count = 0;
                        string DateUTC = "";
                        foreach (var result in results["Records"])
                        {
                            string Reason = (string)result["Reason"];
                            //  DateUTC = (string)result["DateUTC"];
                            if (Reason == "17")
                            {
                                Newtonsoft.Json.Linq.JObject results1 = Newtonsoft.Json.Linq.JObject.Parse(Convert.ToString(result));
                                foreach (var result1 in results1["Fields"])
                                {
                                    string cdata = (string)result1["Data"];
                                    if (!string.IsNullOrEmpty(Convert.ToString(cdata)))
                                    {
                                        recard_count = recard_count + 1;
                                    }
                                }
                            }
                        }
                        if (recard_count != 0)
                        {

                            string dev_SerNo = (string)results["SerNo"];

                            G60_Data obj_DB_name = new G60_Data();
                            DataTable dt_database_name = new DataTable();
                            dt_database_name = obj_DB_name.get_database_name(dev_SerNo);
                            if (dt_database_name.Rows.Count > 0)
                            {
                                string databaseName = dt_database_name.Rows[0]["schCode"].ToString();

                                // Add data
                                UniGuardLib.Data data = new UniGuardLib.Data(databaseName);

                                /*********************************************
                                 * INSERT IMPORT DATA
                                 *********************************************/

                                InsertQuery insertImport = new InsertQuery();
                                insertImport.SetTable("import");
                                insertImport.SetFields(new string[4] { "impDate", "impTime", "impRecordCount", "impLiveData" });

                                // Adjust time if necessary
                                string importDateTime = (Convert.ToDateTime(DateTime.Now)).ToString();
                                string newImportDate = data.AdjustTimezone(importDateTime, "yyyy-MM-dd", dev_SerNo);
                                string newImportTime = data.AdjustTimezone(importDateTime, "HH:mm:ss", dev_SerNo);

                                //string newImportDate = (Convert.ToDateTime(importDateTime)).ToString("yyyy-MM-dd");
                                //string newImportTime = (Convert.ToDateTime(importDateTime)).ToString("HH:mm:ss");

                                // Add rows
                                insertImport.AddRowValues(new string[4] { newImportDate, newImportTime, recard_count.ToString(), "1" });

                                // Insert the import and retrieve the import Id
                                Data objdata = new Data(databaseName);
                                int importId = objdata.InsertImport(insertImport);

                                /*********************************************
                                 * INSERT PATROL RECORDS
                                 *********************************************/
                                if (recard_count > 0)
                                {

                                    foreach (var result in results["Records"])
                                    {
                                        if (((string)result["DateUTC"]) != null)
                                        {
                                            DateUTC = (string)result["DateUTC"];
                                        }

                                        // this can be a string or null
                                        string Reason = (string)result["Reason"];
                                        if (Reason == "17")
                                        {
                                            Newtonsoft.Json.Linq.JObject results1 = Newtonsoft.Json.Linq.JObject.Parse(Convert.ToString(result));

                                            foreach (var result1 in results1["Fields"])
                                            {
                                                string cdata = (string)result1["Data"];
                                                if (!string.IsNullOrEmpty(Convert.ToString(cdata)))
                                                {
                                                    var base64 = cdata;
                                                    var base64_data = Convert.FromBase64String(base64);
                                                    string hexValue = ByteArrayToString(base64_data);
                                                    int decValue = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
                                                    // Prepare new InserQuery for patrol data
                                                    InsertQuery insertPatrol = new InsertQuery();
                                                    insertPatrol.SetTable("patrol");
                                                    insertPatrol.SetFields(new string[5] { "import_id", "patTSN", "patDate", "patTime", "patRSN" });

                                                    //string date = (Convert.ToDateTime(DateUTC)).ToString("yyyy-MM-dd");
                                                    //string time = (Convert.ToDateTime(DateUTC)).ToString("HH:mm:ss");
                                                    //string date = newImportDate1;
                                                    //string time = newImportTime1;

                                                    string importDateTime1 = (Convert.ToDateTime(DateUTC)).ToString();
                                                    string date = data.AdjustTimezone(importDateTime1, "yyyy-MM-dd", dev_SerNo);
                                                    string time = data.AdjustTimezone(importDateTime1, "HH:mm:ss", dev_SerNo);

                                                    insertPatrol.AddRowValues(new string[5] { importId.ToString(), Convert.ToString(decValue), date, time, Convert.ToString(dev_SerNo) });
                                                    data.InsertPatrol(insertPatrol);

                                                }
                                            }
                                        }
                                    }

                                }
                            }

                        }
                    }
                    catch (Exception ex)
                    {
                        obj.Write_ErrorLog("2:" + ex.ToString());
                        System.Collections.Generic.Dictionary<string, object> values = JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string, object>>(json);
                        string logFolder = @"C:\g60";
                        string serialNumber = values["SerNo"].ToString();
                        string fileName = string.Format("{0} - {1}.txt", serialNumber, DateTime.Now.ToString("yyyyMMddHHmmss"));
                        System.IO.File.WriteAllText(System.IO.Path.Combine(logFolder, fileName), json);
                        obj.Write_ErrorLog("3:" + json);
                        ctx.Response.Write("Insert successful");
                    }
                }
                catch (Exception ex)
                {
                    obj.Write_ErrorLog("4:" + ex.ToString());
                    // System.Collections.Generic.Dictionary<string, object> values = JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string, object>>(json);
                    string logFolder = @"C:\g60";
                    string serialNumber = "1234";
                    string fileName = string.Format("{0} - {1}.txt", serialNumber, DateTime.Now.ToString("yyyyMMddHHmmss"));
                    System.IO.File.WriteAllText(System.IO.Path.Combine(logFolder, fileName), json);
                    obj.Write_ErrorLog("4:" + json);
                    ctx.Response.Write("Insert successful");
                    ctx.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                    ctx.Response.Write(string.Format("ERROR: {0}", ex.Message));
                }
            }
            else
            {
                ctx.Response.TrySkipIisCustomErrors = true;
                ctx.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                obj.Write_ErrorLog("6:" + "ERROR: No POST Data!");
                ctx.Response.Write(string.Format("ERROR: No POST Data!"));
            }
        }