[WebMethod] public string SendNotification(string strDeviceId, string strMessage) { try { //{"POPUP_FLAG":"Y","DATABASE_FLAG":"Y","MESSAGE":"gm","MESSAGE_DATE":"28-Jan-2017 12:00 AM","MESSAGE_END_DATE":"28-Jan-2017 01:00 AM","PAGE_ID":"188"} classAlert.AlertNotificationData objAlertNotificationData = new classAlert.AlertNotificationData(); objAlertNotificationData = JSonScript.Deserialize(strMessage); //---insert into tcil app notification table if database flag = Y on 13-aug-2021 by ramesh kumar if ((objAlertNotificationData.DATABASE_FLAG ?? "").ToString().Trim().ToUpper() == "Y") { try { oper.Trans_Begin(); string strQuery = @"INSERT INTO TCIL_APP_NOTIFICATION(NOTIFICATION_ID, MESSAGE_TITLE, MESSAGE, MESSAGE_DATETIME, MESSAGE_END_DATETIME, MESSAGE_TYPE, PAGE_ID, EMP_CODE, IMEI_NO, ENTRY_USER, ENTRY_BRANCH, ENTRY_DATE, PAGE_URL) SELECT NVL((SELECT MAX(NVL(NOTIFICATION_ID,0)) NOTIFICATION_ID FROM TCIL_APP_NOTIFICATION),0)+1 NOTIFICATION_ID , :Message_Title MESSAGE_TITLE, :Message MESSAGE , TO_DATE(:Message_DateTime, 'DD-MON-YYYY hh:mi PM') MESSAGE_DATETIME , TO_DATE(:Message_End_DateTime, 'DD-MON-YYYY hh:mi PM') MESSAGE_END_DATETIME , 'HTML' MESSAGE_TYPE, :Page_ID PAGE_ID, :Device_EMP_CODE EMP_CODE, NULL IMEI_NO , NVL((SELECT MAX(NVL(SCHEDULE_ID,0)) SCHEDULE_ID FROM TLOG_MOBILE_NOTIFICATION_SCH),0)+1 ENTRY_USER , 'SCH' ENTRY_BRANCH, SYSDATE ENTRY_DATE, :PAGE_URL PAGE_URL FROM DUAL "; oper.QueryParamExec(strQuery, new OracleParameter[] { new OracleParameter(":Message_Title", (objAlertNotificationData.Message_Title ?? "").ToString().Trim()), new OracleParameter(":Message", (objAlertNotificationData.Message ?? "").ToString().Trim()), new OracleParameter(":Message_DateTime", (objAlertNotificationData.Message_DateTime ?? "").ToString().Trim()), new OracleParameter(":Message_End_DateTime", (objAlertNotificationData.Message_End_DateTime ?? "").ToString().Trim()), new OracleParameter(":Page_ID", (objAlertNotificationData.Page_ID ?? "").ToString().Trim()), new OracleParameter(":Device_EMP_CODE", (objAlertNotificationData.Device_EMP_CODE ?? "").ToString().Trim()), new OracleParameter(":PAGE_URL", (objAlertNotificationData.Page_Url ?? "").ToString().Trim()), }); oper.Trans_Commit(); } catch (Exception) { oper.Trans_Rollback(); } } if (strDeviceId.ToString().Trim() == "") { string strEMP_CODE = (objAlertNotificationData.Device_EMP_CODE ?? ""); string strDevice_ID = (objAlertNotificationData.Device_ID ?? ""); if (strEMP_CODE.ToString().ToUpper().Trim() != "") { string str = @"SELECT NVL(A.LAST_USAGE_DATE,SYSDATE) LAST_USAGE_DATE, NVL(A.APPROVAL_FLAG,'N') APPROVAL_FLAG, A.EMP_CODE, A.DEVICE_ID FROM CM_TCIL_MOBILE_GATEWAY A WHERE A.EMP_CODE=:EMP_CODE AND NVL(A.APPROVAL_FLAG,'N') IN('C','Y') ORDER BY APPROVAL_FLAG DESC, LAST_USAGE_DATE DESC"; OracleParameter[] Param = new OracleParameter[] { new OracleParameter("EMP_CODE", objAlertNotificationData.Device_EMP_CODE.ToString().ToUpper().Trim()) }; OracleDataReader dr = oper.datadispParamExec(str, Param); if (dr.Read()) { strDeviceId = dr["DEVICE_ID"].ToString(); } dr.Close(); oper.closecon(); } else { if (strDevice_ID.ToString().ToUpper().Trim() != "") { strDeviceId = strDevice_ID; } else { return "Failed : Device ID and Employee Code Missing !"; } } } // fcm // ================= FIREBASE ADMIN SDK ================= if (FirebaseApp.DefaultInstance == null) { string jsonPath = HttpContext.Current.Server.MapPath( "~/firebase-service-account.json"); // tcil-app JSON if (!System.IO.File.Exists(jsonPath)) throw new Exception("Firebase JSON not found at: " + jsonPath); FirebaseApp.Create(new AppOptions { Credential = GoogleCredential.FromFile(jsonPath) }); } // Build FCM message var message = new Message { Token = strDeviceId, Notification = new Notification { Title = objAlertNotificationData.Message_Title, Body = objAlertNotificationData.Message }, Data = new Dictionary { { "source", "tcil-app" }, { "type", "alert" }, { "pageId", objAlertNotificationData.Page_ID ?? "" } } }; // Send notification string response = FirebaseMessaging .DefaultInstance .SendAsync(message) .Result; return response; // ===================================================== } catch (Exception ex) { return ex.Message; } }