private void setAliveMessage()
        {
            JMessage message = new JMessage();

            message.Sender   = location;
            message.Function = "JSetAliveRequest";

            JSetAliveRequest jSetAliveRequest = new JSetAliveRequest();

            jSetAliveRequest.DateAlive = DateTime.Now;

            message.InnerMessage = Newtonsoft.Json.JsonConvert.SerializeObject(jSetAliveRequest);

            bool success = false;

            DataManager.Network.TCPClient.sendMessage(Newtonsoft.Json.JsonConvert.SerializeObject(message), "", out success);

            if (success)
            {
                DataClient.logEntry(System.Diagnostics.EventLogEntryType.Information, "AliveAgent setAliveMessage success");
            }
            else
            {
                DataClient.logEntry(System.Diagnostics.EventLogEntryType.Information, "AliveAgent setAliveMessage failed");
            }
        }
        public JSetAliveResponse handleAliveMessage(JMessage request)
        {
            SqlConnection conn = new SqlConnection(connStringBuilder.ConnectionString);

            JSetAliveRequest jSetAliveRequest = JsonConvert.DeserializeObject <JSetAliveRequest>(request.InnerMessage);

            JSetAliveResponse jSetAliveResponse = new JSetAliveResponse();

            jSetAliveResponse.Ack     = false;
            jSetAliveResponse.DateAck = DateTime.Now;

            try
            {
                if (insertRow(request, jSetAliveRequest, conn))
                {
                    jSetAliveResponse.Ack = true;

                    Receiver.LogEntry(System.Diagnostics.EventLogEntryType.Information, "DataBaseDriver.handleAliveMessage success for location " + request.Sender);
                    Console.WriteLine("DataBaseDriver.handleAliveMessage success for location " + request.Sender);
                }
                else
                {
                    Receiver.LogEntry(System.Diagnostics.EventLogEntryType.Error, "DataBaseDriver.handleAliveMessage failed for location " + request.Sender);
                    Console.WriteLine("DataBaseDriver.handleAliveMessage failed for location " + request.Sender);
                }
            }
            catch (Exception ex)
            {
                Receiver.LogEntry(System.Diagnostics.EventLogEntryType.Error, "DataBaseDriver.handleAliveMessage failed for location " + request.Sender + " " + ex.Message);
                Console.WriteLine("DataBaseDriver.handleAliveMessage failed for location " + request.Sender + " " + ex.Message);
            }
            finally
            {
                conn.Close();
            }

            return(jSetAliveResponse);
        }
        private bool insertRow(JMessage request, JSetAliveRequest jSetAliveRequest, SqlConnection conn)
        {
            DataSet ds = new DataSet("Location");

            try
            {
                using (SqlCommand command = new SqlCommand("spSetAliveToLocation", conn))
                {
                    command.CommandType = System.Data.CommandType.StoredProcedure;
                    command.Parameters.Add(new SqlParameter("@LOCATION_NAME", request.Sender));

                    if (conn.State != System.Data.ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = command;

                    da.Fill(ds);
                }

                // Entry does not exist, insert the row to DB
                if (ds.Tables[0].Rows.Count == 0)
                {
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                Receiver.LogEntry(System.Diagnostics.EventLogEntryType.Error, "DataBaseDriver.insertRow for ProductionDataLine failed: " + ex.Message);
                return(false);
            }
        }