예제 #1
0
        /// <summary>
        /// Запрос пароля к БД
        /// </summary>
        /// <returns></returns>
        public string GetDBPass(string address_, string machine_id)
        {
            string        return_var = "";
            StringBuilder strb       = new StringBuilder();

            try
            {
                strb.AppendFormat("{0}/db?id={1}", address_, machine_id);
                eventLog1.WriteEntry(strb.ToString(), EventLogEntryType.SuccessAudit, 408);
                WebRequest  request  = WebRequest.Create(strb.ToString()); //
                WebResponse response = request.GetResponse();
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        return_var = reader.ReadToEnd();
                    }
                }
                response.Close();
                if (return_var == String.Empty)
                {
                    eventLog1.WriteEntry("Server does not recived parametrs for database", EventLogEntryType.Error, 5);
                }
                else
                {
                    String encoded = Convert.ToBase64String(Encoding.GetEncoding(65001)
                                                            .GetBytes(return_var));
                    eventLog1.WriteEntry(encoded, EventLogEntryType.SuccessAudit, 0);
                }
            }
            catch (Exception exc)
            {
                eventLog1.WriteEntry(exc.Message, EventLogEntryType.Warning, 22);
            }

            ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(return_var);

            return(resp.data.db_pass);
        }
예제 #2
0
        /// <summary>
        /// Проверка статуса разрешения отправки данных в большую БД
        /// </summary>
        /// <param name="machine_id"></param>
        /// <param name="status"></param>
        /// <param name="server_uri"></param>
        /// <returns></returns>
        public bool Check_status_send(string machine_id, int status, string server_uri)
        {
            //String username = "******";
            //String password = "******";
            //String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
            //httpWebRequest.Headers.Add("Authorization", "Basic " + encoded);
            string        return_var = string.Empty;
            StringBuilder strb       = new StringBuilder();

            try
            {
                strb.AppendFormat("{0}/check?id={1}&status={2}", server_uri, machine_id, status);
                WebRequest  request  = WebRequest.Create(strb.ToString()); //
                WebResponse response = request.GetResponse();
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        return_var = reader.ReadToEnd();
                    }
                }
                response.Close();
            }
            catch (WebException exc)
            {
                eventLog1.WriteEntry(exc.Message, EventLogEntryType.Error, 8);
            }
            if (return_var == String.Empty)
            {
                eventLog1.WriteEntry("Server was not responded status", EventLogEntryType.Error, 7);
            }
            else
            {
                eventLog1.WriteEntry("All ok " + return_var, EventLogEntryType.SuccessAudit, 0);
            }
            ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(return_var);

            return(resp.data.status);
        }
예제 #3
0
        /// <summary>
        /// Обработка таблицы алармов
        /// </summary>
        private void AlarmProcess()
        {
            //2. Получаем последний ID из большой базы
            var last_outer_ID = GetLastIDFromBIGDB(ID_Machina, adress, "Allarmi");

            if (!CHECK_DB)
            {
                //1. Получаем последний ID из локальной БД
                var last_local_ID = alrmTableAdapter.GetLastIDList();

                if (last_outer_ID != String.Empty)
                {
                    ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(last_outer_ID);

                    int local_polyciomid = (int)last_local_ID.Rows[0]["ID"];
                    int local_total_suit = (int)last_local_ID.Rows[0]["Total_suitcase"];

                    if (resp.data.polycommid == 0 && resp.data.total == 0)// если сервер вернул нули, то есть в БД еще нед упаково от данной машины
                    {
                        string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alrmTableAdapter);
                        if (!String.IsNullOrEmpty(jsonAlarms_str))
                        {
                            //Отправляем все данные что есть в локальной бд
                            Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi");
                        }
                    }
                    else
                    {
                        // если пришли не нули, то проверяем есть ли данная цепочка идентификаторов в локальной БД
                        //if ((int)alrmTableAdapter.CheckAlarms(resp.data.polycommid, (int)resp.data.total) == 0)
                        //{
                        //    Check_status_send(ID_Machina, 1, adress);
                        //    eventLog1.WriteEntry("Data flow from this machine was stoped by machine by alarms", EventLogEntryType.Error, 1);
                        //}
                        //else
                        {
                            //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа
                            var status = Check_status_send(ID_Machina, 1, adress);
                            if (status)
                            {
                                //выбираем все записи из локальной БД больше
                                if (local_polyciomid > resp.data.polycommid)
                                {
                                    string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alrmTableAdapter);
                                    if (!String.IsNullOrEmpty(jsonAlarms_str))
                                    {
                                        //Отправляем все данные что есть в локальной бд
                                        Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi");
                                    }
                                }
                                else
                                {
                                    eventLog1.WriteEntry("Don`t have new alarms", EventLogEntryType.Information, 2);
                                }
                            }
                            else
                            {
                                eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3);
                            }
                        }
                    }
                }
            }
            else
            {
                //Обработка БД Packfly
                //1. Получаем последний ID из локальной БД
                var last_local_ID = alarmtabAd.GetLastIDList();


                if (last_outer_ID != String.Empty)
                {
                    ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(last_outer_ID);

                    int local_polyciomid = (int)last_local_ID.Rows[0][0];
                    // int local_total_suit = (int)last_local_ID.Rows[0][1];

                    if (resp.data.polycommid == 0)// если сервер вернул нули, то есть в БД еще нед упаково от данной машины
                    {
                        string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alarmtabAd);
                        if (!String.IsNullOrEmpty(jsonAlarms_str))
                        {
                            //Отправляем все данные что есть в локальной бд
                            Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi");
                        }
                    }
                    else
                    {
                        //if ((int)alarmtabAd.CheckAlarms(resp.data.polycommid) == 0)
                        //{
                        //    Check_status_send(ID_Machina, 0, adress);
                        //    eventLog1.WriteEntry("Data flow from this machine was stoped by machine by alarms", EventLogEntryType.Error, eventId++);
                        //}
                        //else
                        {
                            //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа
                            var status = Check_status_send(ID_Machina, 1, adress);
                            if (status)
                            {
                                //выбираем все записи из локальной БД больше
                                if (local_polyciomid > resp.data.polycommid)
                                {
                                    string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alarmtabAd);
                                    if (!String.IsNullOrEmpty(jsonAlarms_str))
                                    {
                                        //Отправляем все данные что есть в локальной бд
                                        Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi");
                                    }
                                }
                                else
                                {
                                    eventLog1.WriteEntry("Don`t have new alarms", EventLogEntryType.Information, 2);
                                }
                            }
                            else
                            {
                                eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3);
                            }
                        }
                    }
                }
            }
        }
예제 #4
0
        ///Запуск службы на стронних машинах:
        ///1. закидываем службу нужной сборки Release x64 для Win x64 и Release x86 для Win x86.
        /// установка из консоли с правами админа
        /// c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe "место расположения файла службы без пробелов"
        /// <summary>
        /// Обработка таблици упаковок
        /// </summary>
        private void SuitcaseProcess()
        {
            //1.Get last id from big DB
            //    1.1 Получить ID машины.
            //    1.2 Сформировать запрос на сервер
            //    1.3 Получить данные с сервера
            //2. Выбрать эти данные из локальной базы данных
            //    2.1 если есть то отдать на сервер status 1
            //    2.2 если НЕТ то отдать на сервер status 0



            try
            {
                var last_local_ids = new ListIDs();
                //1. Получаем последний ID из локальной БД
                //Константа CHECK_DB определеятеся по тому какая БД стоит на локальной машине MDB или ACCDB,
                //соответственно выбираются разные адаптеры для определения последнего ID в локальной БД
                if (!CHECK_DB)
                {
                    //MDB
                    var last_local_ID = suitTableAdapter.GetLastIDlist();
                    last_local_ids.localid        = (int)last_local_ID.Rows[0][0];
                    last_local_ids.local_total    = (int)last_local_ID.Rows[0][1];
                    last_local_ids.local_parziale = (int)last_local_ID.Rows[0][2];
                }
                else
                {
                    //ACCDB
                    var last_local_ID = suittabAd.GetLastIDList();
                    last_local_ids.localid        = (int)last_local_ID.Rows[0][0];
                    last_local_ids.local_total    = (int)last_local_ID.Rows[0][1];
                    last_local_ids.local_parziale = (int)last_local_ID.Rows[0][2];
                }


                eventLog1.WriteEntry(string.Format("ID:{0}; Totale_ID:{1}; Parziale_ID: {2}",
                                                   last_local_ids.localid,
                                                   last_local_ids.local_total,
                                                   last_local_ids.local_parziale),
                                     EventLogEntryType.Information,
                                     10);

                //2. Получаем последний ID из большой базы
                var last_outer_ID = GetLastIDFromBIGDB(ID_Machina, adress, "Suitcase");
                if (last_outer_ID != String.Empty)
                {
                    //если данные из большой БД пришли, то запускаем парсинг json, разбор полученных данных
                    ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(last_outer_ID);
                    if (resp.data.polycommid == 0 && resp.data.totalid == 0 && resp.data.partialid == 0)
                    {
                        //Пришло  сервера 000
                        // если сервер вернул нули, то есть в БД еще нет упаковок от данной машины
                        string jsonSuitcases_str = "";
                        if (!CHECK_DB)
                        {
                            //MDB
                            jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suitTableAdapter);
                            //GetSuitcasesfromlocalDB -
                        }
                        else
                        if (CHECK_DB)
                        {
                            //ACCDB
                            jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suittabAd);
                        }

                        if (!String.IsNullOrEmpty(jsonSuitcases_str))
                        {
                            //Отправляем все данные что есть в локальной бд

                            Send_data(ID_Machina, jsonSuitcases_str, adress, "Suitcase");
                        }
                    }
                    else
                    {
                        if (!CHECK_DB)
                        {
                            // если пришли не 000, то проверяем есть ли данная цепочка идентификаторов в локальной БД
                            if ((int)suitTableAdapter.GetValidData(resp.data.polycommid, resp.data.totalid, resp.data.partialid) == 0)
                            {
                                // если цепочки нет, то шлем на сервер статуст 0
                                Check_status_send(ID_Machina, 0, adress);
                                eventLog1.WriteEntry("Data flow from this machine was stoped by machine by Suitcase", EventLogEntryType.Error, 1);
                            }
                            else
                            {
                                //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа
                                var status = Check_status_send(ID_Machina, 1, adress);
                                if (status)
                                {
                                    //выбираем все записи из локальной БД больше
                                    if (last_local_ids.localid > resp.data.polycommid)
                                    {
                                        string jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suitTableAdapter);
                                        if (!String.IsNullOrEmpty(jsonSuitcases_str))
                                        {
                                            // Отправляем данные на сервер методом POST
                                            Send_data(ID_Machina, jsonSuitcases_str, adress, "Suitcase");
                                        }
                                    }
                                    else
                                    {
                                        eventLog1.WriteEntry("Don`t have new suitcases", EventLogEntryType.Information, 2);
                                    }
                                }
                                else
                                {
                                    eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3);
                                }
                            }
                        }
                        else
                        {
                            // если пришли не нули, то проверяем есть ли данная цепочка идентификаторов в локальной БД
                            if ((int)suittabAd.GetValidData(resp.data.polycommid, resp.data.totalid, resp.data.partialid) == 0)
                            {
                                // если нет, то шлем на сервер статуст 0
                                Check_status_send(ID_Machina, 0, adress);
                                eventLog1.WriteEntry("Data flow from this machine was stoped by machine by Suitcase", EventLogEntryType.Error, 1);
                            }
                            else
                            {
                                //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа
                                var status = Check_status_send(ID_Machina, 1, adress);
                                if (status)
                                {
                                    //выбираем все записи из локальной БД больше
                                    if (last_local_ids.localid > resp.data.polycommid)
                                    {
                                        string jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suittabAd);
                                        if (!String.IsNullOrEmpty(jsonSuitcases_str))
                                        {
                                            // Отправляем данные на сервер методом POST
                                            Send_data(ID_Machina, jsonSuitcases_str, adress, "Suitcase");
                                        }
                                    }
                                    else
                                    {
                                        eventLog1.WriteEntry("Don`t have new suitcases", EventLogEntryType.Information, 2);
                                    }
                                }
                                else
                                {
                                    eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                eventLog1.WriteEntry(string.Format("Trouble: {0} ", exc.ToString()), EventLogEntryType.Error, 3);
            }
        }