public static bool write_journal(string sg_string) { bool res = false; StringBuilder builder = new StringBuilder(sg_string); if (builder[0] == '5') // проверака того, что сообщение по протоколу SurGard { if (builder.Length == 19) //сообщение имеет 19 символов (по протоколу) { string GG = builder[14].ToString() + builder[15].ToString(); //достаем из сообщения номер группы string XYZ = builder[11].ToString() + builder[12].ToString() + builder[13].ToString(); // достаем код события string PP = builder[1].ToString() + builder[2].ToString(); // достаем номер приемника using (SurGardDataContext sg = new SurGardDataContext()) { if (sg.Groups.Where(x => x.code == GG).Any() && sg.Codes.Where(x => x.code == XYZ).Any() && sg.Devices.Where(x => x.number == PP).Any()) //проверяем есть ли коды в базе { int gr_id = sg.Groups.Where(x => x.code == GG).FirstOrDefault().id_group; int cod_id = sg.Codes.Where(x => x.code == XYZ).FirstOrDefault().id_code; int dev_id = sg.Devices.Where(x => x.number == PP).FirstOrDefault().id_device; sg.Journal.Add(new jr_surgard { date_action = DateTime.Now, id_device = dev_id, id_code = cod_id, id_group = gr_id }); sg.SaveChanges(); res = true; } } } } return(res); }
public static Message make_message() { Message mes; using (SurGardDataContext sg = new SurGardDataContext()) { jr_surgard note = sg.Journal.OrderBy(x => x.date_action).Last(); //последний элемент журнала string code = sg.Codes.Find(note.id_code).code; // код события string cod_name = sg.Codes.Find(note.id_code).name; // описание события string dev_code = sg.Devices.Find(note.id_device).number; // номер устройства string dev_name = sg.Devices.Find(note.id_device).name; // название устройства string gr_code = sg.Groups.Find(note.id_group).code; // код группы string gr_name = sg.Groups.Find(note.id_group).name; // название группы mes = new Message(note.date_action, code, cod_name, dev_code, dev_name, gr_code, gr_name); } return(mes); }
// ген протокола и запись в журнал public static string get_surgard() { string PP = string.Empty; string XYZ = string.Empty; string GG = string.Empty; using (SurGardDataContext sg = new SurGardDataContext()) { GG = sg.Groups.Find(1).code; // берем код группы XYZ = sg.Codes.Find(1).code; // берем код события PP = sg.Devices.Find(1).number; // берем номер приемника } return(sg_flag + PP + R + MT + AAAA + Q + XYZ + GG + CCC); }