//call end message public bool case86(StructDocMess mess) { try { dbb _db = new dbb(); List <C_User_In_Room> LUser = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room && t.UserNotType.Id.ToString() != mess.index_user) .ToList(); int index = -1; foreach (var VARIABLE in LUser) { if (VARIABLE.UserNotType.index_in_list.HasValue) { index = VARIABLE.UserNotType.index_in_list.Value; } if (ServerObject.DictionaryClients.ContainsKey(index)) { ServerObject.DictionaryClients[index].ClientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); } } return(true); } catch (Exception e) { Console.WriteLine(e); throw; } }
//CLEAR ITEM LIST //remove user from list connection users protected internal void RemoveConnection(string id) { try { dbb M = new dbb(); // получаем по id закрытое подключение var client = DictionaryClients.FirstOrDefault(c => c.Value.ClientObject.Id == id); if (client.Value != null) { DictionaryClients.Remove(client.Key); //clients.Remove(client.); //var sqlObj = M.UserNotType.Where(t => t.index_in_list == _index).ToList(); var sqlObj = M.UserNotType.Where(t => t.index_in_list == client.Key).ToList(); if (sqlObj.Any()) { sqlObj.First().index_in_list = null; M.SaveChanges(); } } } catch (Exception e) { Console.WriteLine(e); } }
//inviting call public bool case80(StructDocMess mess) { try { dbb _db = new dbb(); var usersInRoom = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room && t.UserNotType.Id.ToString() != mess.index_user && t.UserNotType.NameUser != mess.name_user && t.Participant).ToList(); foreach (var VARIABLE in usersInRoom) { int v2 = 0; if (VARIABLE.UserNotType.index_in_list.HasValue) { v2 = VARIABLE.UserNotType.index_in_list.Value; } if (ServerObject.DictionaryClients.ContainsKey(v2)) { ServerObject.DictionaryClients[v2].ClientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); } } return(true); } catch (Exception e) { Console.WriteLine(e); throw; } }
//create report of the message public string ViewMessage() { dbb _db = new dbb(); List <message_on_room> data1 = _db.message_on_room.ToList(); string app_path_directory = AppDomain.CurrentDomain.BaseDirectory; string path_to_xlsx = app_path_directory + "Report.xlsx"; string name_file = ""; string str = ""; ExcelPackage xlPackage = new ExcelPackage(new FileInfo(path_to_xlsx)); var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select sheet here myWorksheet.Cells[1, 1].Value = "Группы"; myWorksheet.Cells[1, 3].Value = "Пользователь"; myWorksheet.Cells[1, 5].Value = "Сообщения"; myWorksheet.Cells[1, 1].Style.WrapText = true; myWorksheet.Cells[1, 3].Style.WrapText = true; myWorksheet.Cells[1, 5].Style.WrapText = true; myWorksheet.Cells["A1:B1"].Merge = true; myWorksheet.Cells["C1:D1"].Merge = true; myWorksheet.Cells["E1:F1"].Merge = true; myWorksheet.Cells[2, 1].Value = "Номер"; myWorksheet.Cells[2, 2].Value = "Имя"; myWorksheet.Cells[2, 3].Value = "Имя"; myWorksheet.Cells[2, 4].Value = "Пароль"; myWorksheet.Cells[2, 5].Value = "Время отправки"; myWorksheet.Cells[2, 6].Value = "Текст"; int t = 3; foreach (var VARIABLE in data1) { myWorksheet.Cells[t, 1].Value = VARIABLE.TableId.ToString(); myWorksheet.Cells[t, 2].Value = VARIABLE.C_User_In_Room.C_Room.NameRoom; myWorksheet.Cells[t, 3].Value = VARIABLE.C_User_In_Room.UserNotType.NameUser; myWorksheet.Cells[t, 4].Value = VARIABLE.C_User_In_Room.UserNotType.Password; myWorksheet.Cells[t, 5].Value = VARIABLE.time_mess.ToString(); myWorksheet.Cells[t, 6].Value = VARIABLE.text_mess; t += 1; } str = app_path_directory + @"RepotsMessage\"; Directory.CreateDirectory(str); name_file = @"NewReport" + DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss") + @".xlsx"; var file = File.Create(str + name_file); file.Close(); var fi = new FileInfo(str + name_file); xlPackage.SaveAs(fi); return(str + name_file); }
//login user public bool case1(StructDocMess mess)//log { try { dbb _db = new dbb(); var r = _db.UserNotType.Where(t => t.NameUser == mess.name_user && t.Password == mess.password_user).ToList(); var d = ServerObject.DictionaryClients.Where(t => t.Value.ClientObject == _clientObject).ToList(); if (r.Any() && d.Any()) { int coutline = _db.Database.ExecuteSqlCommand("update UserNotType set index_in_list =" + d.Last().Key + " where Id = " + r.First().Id); //Console.WriteLine("count line: " + coutline); //Console.WriteLine("case 1: " + d.Last().Key); mess.index_user = r.First().Id.ToString(); mess.text_message = "True"; _clientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); return(true); } else { mess.text_message = "False"; _clientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); return(false); } } catch (Exception e) { Console.WriteLine(e); throw; } }
//send invitation by name user public bool case20(StructDocMess mess)//send invait { try { dbb _db = new dbb(); Int32 r = -1; var main_user = _db.UserNotType.Where(t => t.Id.ToString() == mess.index_user).ToList().First(); var m1 = _db.C_User_In_Room.Where(t => t.Participant && t.C_Room.TableId == mess.index_room && t.UserNotType.NameUser == mess.text_message) .ToList(); var m = _db.UserNotType.Where(t => t.NameUser == mess.text_message).ToList() .ToList(); bool ddAny = m1.Any(); //Console.WriteLine(ddAny); if (!ddAny && m.Any()) { if (m.First().index_in_list.HasValue) { r = m.First().index_in_list.Value; } if (ServerObject.DictionaryClients.ContainsKey(r)) { mess.count_users_in_room = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room && t.Participant).ToList().Count; ServerObject.DictionaryClients[r].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(mess)); return(true); } else { if (main_user.index_in_list.HasValue) { r = main_user.index_in_list.Value; } if (ServerObject.DictionaryClients.ContainsKey(r)) { string sf = XmlParser.XmlParser.struct_to_string(mess); ServerObject.DictionaryClients[r].ClientObject.SendMess(sf); } return(false); } } else { if (main_user.index_in_list.HasValue) { r = main_user.index_in_list.Value; } if (ServerObject.DictionaryClients.ContainsKey(r)) { ServerObject.DictionaryClients[r].ClientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); } return(false); } } catch (Exception e) { Console.WriteLine(e); throw; } }
//method for receiving all messages in the group of the user // mess = main type data network (struct) // return = string xml public static string struct_all_mess_in_room_to_string(StructDocMess mess) { dbb dbb = new dbb(); try { var XD = new XDocument(); XElement element = new XElement("Message"); XElement iphoneCompanyElem = new XElement("index_command", mess.index_command); element.Add(iphoneCompanyElem); var userAllRooms = dbb.C_User_In_Room.Where(t => t.C_Room.TableId == mess.index_room).ToList(); if (userAllRooms.Count >= 0) { foreach (var uir in userAllRooms.Take(1)) { XElement elementRoom = new XElement("Room"); iphoneCompanyElem = new XElement("index_room", uir.C_Room.TableId); elementRoom.Add(iphoneCompanyElem); var messallInRoom = dbb.message_on_room .Where(t => t.C_User_In_Room.C_Room.TableId == uir.C_Room.TableId).ToList(); XElement elementRoomMess = new XElement("Mess_in_room"); foreach (var messageLoop in messallInRoom.Skip(messallInRoom.Count - 20)) { XElement elementOneMess = new XElement("Mess"); iphoneCompanyElem = new XElement("mess_str", messageLoop.text_mess); elementOneMess.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("mess_time", messageLoop.time_mess.Value.ToString("yyyy.MM.dd-HH.mm.ss")); elementOneMess.Add(iphoneCompanyElem); XElement elementMessUser = new XElement("User_in_mess"); iphoneCompanyElem = new XElement("index_user", messageLoop.C_User_In_Room.UserNotType.Id); elementMessUser.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("name_user", messageLoop.C_User_In_Room.UserNotType.NameUser); elementMessUser.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("img_user", ""); elementMessUser.Add(iphoneCompanyElem); elementOneMess.Add(elementMessUser); elementRoomMess.Add(elementOneMess); } elementRoom.Add(elementRoomMess); element.Add(elementRoom); } } XD.Add(element); return(XD.ToString()); } catch (Exception e) { Console.WriteLine(e); throw; } }
//method to get a list to find users for a group // mess = main type data network (struct) // return = string xml public static string struct_search_user_to_string(StructDocMess mess, int take) { dbb dbb = new dbb(); try { var XD = new XDocument(); XElement element = new XElement("Message"); XElement iphoneCompanyElem = new XElement("index_command", mess.index_command); element.Add(iphoneCompanyElem); List <UserNotType> LUsers = new List <UserNotType>(); List <C_User_In_Room> lUsersList = new List <C_User_In_Room>(); try { LUsers = dbb.UserNotType.Where(t => t.NameUser.Contains(mess.text_message)).OrderBy(t => t.NameUser).Take(take).ToList(); lUsersList = dbb.C_User_In_Room.Where(t => t.C_Room.TableId == mess.index_room && t.Participant == true).ToList(); } catch (Exception e) { Console.WriteLine(e); } if (LUsers.Any()) { XElement elementAllUsers = new XElement("Users"); foreach (var us in LUsers) { var ss = lUsersList.Where(t => t.UserNotType.NameUser == us.NameUser).ToList(); if (!ss.Any()) { XElement elementUsers = new XElement("User"); iphoneCompanyElem = new XElement("index_user", us.Id); elementUsers.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("name_user", us.NameUser); elementUsers.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("img_user", ""); elementUsers.Add(iphoneCompanyElem); elementAllUsers.Add(elementUsers); } } element.Add(elementAllUsers); } XD.Add(element); return(XD.ToString()); } catch (Exception e) { Console.WriteLine(e); throw; } }
//thread method // gets data with socket (udp type) public void Process() { alive = true; try { while (alive) { IPEndPoint remoteIp = null; byte[] data = client.Receive(ref remoteIp); string str = Encoding.UTF8.GetString(data, 0, data.Length); sendInfo(str, remoteIp); string[] arrayStr = str.Split(':'); //Console.WriteLine("{0}:{1}", arrayStr[0], arrayStr[1]); if (arrayStr.Length > 1) { int f = 0; if (arrayStr[0] == "1" && Int32.TryParse(arrayStr[1], out f)) { string str_with_array = arrayStr[1]; dbb dataBaceDbb = new dbb(); var user = dataBaceDbb.UserNotType.Where(t => t.Id.ToString() == str_with_array).ToList(); if (user.Any()) { var user1 = user.First(); int r = -1; if (user1.index_in_list.HasValue) { r = user1.index_in_list.Value; } if (r != -1 && ServerObject.DictionaryClients.ContainsKey(r)) { ServerObject.DictionaryClients[r].port_udp = remoteIp.Port; //Console.WriteLine("Enter port in dic: {0}", ServerObject.DictionaryClients[r].port_udp); } } } } } } catch (ObjectDisposedException) { if (!alive) { return; } throw; } catch (Exception ex) { Console.WriteLine(ex.Message); } }
//new mess in room public bool case25(StructDocMess mess) { try { dbb _db = new dbb(); var User = _db.C_User_In_Room.Where(t => t.UserNotType.Id.ToString() == mess.index_user && t.C_Room.TableId == mess.index_room && t.Participant).ToList(); if (User.Any()) { message_on_room messageOnRoom = new message_on_room(); messageOnRoom.C_User_In_Room = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room && t.UserNotType.Id.ToString() == mess.index_user) .ToList().First(); messageOnRoom.text_mess = mess.text_message; messageOnRoom.time_mess = DateTime.ParseExact(mess.time_message, "yyyy.MM.dd-HH.mm.ss", System.Globalization.CultureInfo.InvariantCulture); _db.message_on_room.Add(messageOnRoom); _db.SaveChanges(); var usersInRoom = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room && t.Participant).ToList(); foreach (var VARIABLE in usersInRoom) { int v2 = -1; if (VARIABLE.UserNotType.index_in_list.HasValue) { v2 = VARIABLE.UserNotType.index_in_list.Value; } if (v2 != -1) { if (ServerObject.DictionaryClients.ContainsKey(v2)) { ServerObject.DictionaryClients[v2].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(mess)); } } } } else { mess.text_message = "9E0D14D2-6A42-43F0-BEA6-F75E780EB63B"; _clientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); } return(true); } catch (Exception e) { Console.WriteLine(e); throw; } }
//create report of the group public string ViewGroup() { dbb _db = new dbb(); List <C_User_In_Room> data1 = _db.C_User_In_Room.Where(t => t.Admin).ToList(); if (data1.Any()) { string app_path_directory = AppDomain.CurrentDomain.BaseDirectory; string path_to_xlsx = app_path_directory + "Report.xlsx"; string name_file = ""; string str = ""; ExcelPackage xlPackage = new ExcelPackage(new FileInfo(path_to_xlsx)); var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select sheet here myWorksheet.Cells[1, 1].Value = "Группы"; myWorksheet.Cells[1, 3].Value = "Администраторы групп"; myWorksheet.Cells["A1:B1"].Merge = true; myWorksheet.Cells["C1:D1"].Merge = true; myWorksheet.Cells[2, 1].Value = "Номер"; myWorksheet.Cells[2, 2].Value = "Имя"; myWorksheet.Cells[2, 3].Value = "Имя"; myWorksheet.Cells[2, 4].Value = "Пароль"; int t = 3; foreach (var VARIABLE in data1) { myWorksheet.Cells[t, 1].Value = VARIABLE.TableId.ToString(); myWorksheet.Cells[t, 2].Value = VARIABLE.C_Room.NameRoom; myWorksheet.Cells[t, 3].Value = VARIABLE.UserNotType.NameUser; myWorksheet.Cells[t, 4].Value = VARIABLE.UserNotType.Password; t += 1; } str = app_path_directory + @"RepotsGroup\"; Directory.CreateDirectory(str); name_file = @"NewReport" + DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss") + @".xlsx"; var file = File.Create(str + name_file); file.Close(); var fi = new FileInfo(str + name_file); xlPackage.SaveAs(fi); return(str + name_file); } return("Нет групп"); }
//create room public bool case10(StructDocMess mess) { try { dbb _db = new dbb(); var user = _db.UserNotType.First(t => t.Id.ToString() == mess.index_user); if (user != null) { var newroom = new C_Room(); newroom.NameRoom = mess.name_room; _db.C_Room.Add(newroom); _db.SaveChanges(); var room = _db.C_Room.Where(t => t.NameRoom == mess.name_room).ToList().Last(); var userInRoom = new C_User_In_Room(); userInRoom.UserNotType = user; userInRoom.C_Room = room; userInRoom.Admin = true; userInRoom.Participant = true; _db.C_User_In_Room.Add(userInRoom); _db.SaveChanges(); mess.index_room = room.TableId; mess.count_users_in_room = 1; _clientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); } return(true); } catch (DbEntityValidationException e) { string message = ""; foreach (DbEntityValidationResult validationError in e.EntityValidationErrors) { message = "Object: " + validationError.Entry.Entity.ToString(); foreach (DbValidationError err in validationError.ValidationErrors) { message = message + err.ErrorMessage + ""; } } Console.WriteLine(message); throw; } }
//create report of the Users public string ViewUsers() { dbb _db = new dbb(); string app_path_directory = AppDomain.CurrentDomain.BaseDirectory; string path_to_xlsx = app_path_directory + "Report.xlsx"; string name_file = ""; string str = ""; ExcelPackage xlPackage = new ExcelPackage(new FileInfo(path_to_xlsx)); var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select sheet here myWorksheet.Cells[1, 1].Value = "Пользователи"; myWorksheet.Cells["A1:C1"].Merge = true; myWorksheet.Cells[2, 1].Value = "Номер"; myWorksheet.Cells[2, 2].Value = "Имя"; myWorksheet.Cells[2, 3].Value = "Пароль"; int t = 3; List <UserNotType> data1 = _db.UserNotType.ToList(); foreach (var VARIABLE in data1) { myWorksheet.Cells[t, 1].Value = VARIABLE.Id.ToString(); myWorksheet.Cells[t, 2].Value = VARIABLE.NameUser; myWorksheet.Cells[t, 3].Value = VARIABLE.Password; t += 1; } str = app_path_directory + @"RepotsUsers\"; Directory.CreateDirectory(str); name_file = @"NewReport" + DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss") + @".xlsx"; var file = File.Create(str + name_file); file.Close(); var fi = new FileInfo(str + name_file); xlPackage.SaveAs(fi); return(str + name_file); }
//exit user public bool case3(StructDocMess mess) { try { dbb _db = new dbb(); var r = _db.UserNotType.Where(t => t.Id.ToString() == mess.index_user).ToList(); if (r.Any()) { r.First().index_in_list = null; _db.SaveChanges(); return(true); } return(false); } catch (Exception e) { Console.WriteLine(e); throw; } }
//registration user public bool case2(StructDocMess mess)//reg false if there is user treu if reg { try { dbb _db = new dbb(); var r = _db.UserNotType.Where(t => t.NameUser == mess.name_user).ToList(); if (!r.Any()) { UserNotType userNotType = new UserNotType(); userNotType.NameUser = mess.name_user; userNotType.Password = mess.password_user; userNotType.index_in_list = ser.ServerObject.DictionaryClients.Last(t => t.Value.ClientObject == _clientObject).Key; //userNotType.index_in_list = ser.ServerObject.clients.FindIndex(t => t.ClientObject == _clientObject); _db.UserNotType.Add(userNotType); _db.SaveChanges(); r = _db.UserNotType.Where(t => t.NameUser == mess.name_user && t.Password == mess.password_user).ToList(); mess.index_user = r.First().Id.ToString(); mess.text_message = "True"; string fd = XmlParser.XmlParser.struct_to_string(mess); //Console.WriteLine(fd); _clientObject.SendMess(fd); return(true); } else { mess.text_message = "False"; _clientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); return(false); } } catch (Exception exception) { Console.WriteLine(exception); throw; } }
//(For test) print all user in console static private void case3() { try { dbb ddDbb = new dbb(); var t = ddDbb.UserNotType.ToList(); if (t.Any()) { foreach (var VARIABLE in t) { Console.WriteLine("{0}:{1}:{2}:{3}", VARIABLE.Id, VARIABLE.NameUser, VARIABLE.Password, VARIABLE.index_in_list); } } else { Console.WriteLine("Пользователи отсутствуют"); } } catch (Exception e) { Console.WriteLine(e); throw; } }
// (Admin) delete user of room public bool case16(StructDocMess mess) { try { dbb _db = new dbb(); var nany = _db.C_User_In_Room.Where(t => t.C_Room.TableId == mess.index_room && t.UserNotType.Id.ToString() == mess.index_user && t.Admin && t.Participant).ToList(); if (nany.Any()) { var main_q = _db.C_User_In_Room.Where(t => t.C_Room.TableId == mess.index_room && t.UserNotType.Id.ToString() == mess.text_message) .ToList(); if (main_q.Any()) { main_q.First().Participant = false; _db.SaveChanges(); StructDocMess fDocMess = new StructDocMess(); fDocMess.index_command = "26"; fDocMess.index_user = "******"; fDocMess.name_user = "******"; fDocMess.index_room = mess.index_room; fDocMess.name_room = mess.name_room; fDocMess.text_message = "Удален пользователь: " + main_q.First().UserNotType.NameUser; fDocMess.time_message = DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss"); var Mess_in_room = new message_on_room(); Mess_in_room.C_User_In_Room = main_q.First(); Mess_in_room.text_mess = "Удален пользователь: " + main_q.First().UserNotType.NameUser; Mess_in_room.time_mess = DateTime.Now; _db.message_on_room.Add(Mess_in_room); _db.SaveChanges(); var all_user_in_room = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room && t.Participant).ToList(); foreach (var cUserInRoom in all_user_in_room) { int r = cUserInRoom.UserNotType.index_in_list ?? -1; if (r != -1) { if (ServerObject.DictionaryClients.ContainsKey(r)) { ServerObject.DictionaryClients[r].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(mess)); ServerObject.DictionaryClients[r].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(fDocMess)); } } } var all_user_in_room1 = _db.UserNotType .Where(t => t.Id.ToString() == mess.text_message).ToList(); fDocMess.text_message = "9E0D14D2-6A42-43F0-BEA6-F75E780EB63B"; foreach (var cUserInRoom in all_user_in_room1) { //Console.WriteLine("send"); int r = cUserInRoom.index_in_list ?? -1; if (r != -1) { if (ServerObject.DictionaryClients.ContainsKey(r)) { ServerObject.DictionaryClients[r].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(fDocMess)); } } } } } else { mess.text_message = "AA2B206A-8857-44E0-8190-4F93A9BCC06F"; _clientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); } return(true); } catch (Exception e) { Console.WriteLine(e); throw; } }
//response invitation from user //new user in Room | send user in room and add public bool case21(StructDocMess mess) { try { dbb _db = new dbb(); var room = _db.C_Room.Where(t => t.TableId == mess.index_room).ToList().First(); var user = _db.UserNotType.Where(t => t.Id.ToString() == mess.index_user).ToList().First(); StructDocMess fDocMess = new StructDocMess(); if (mess.text_message.Substring(0, 4) == "True") { var user_was_in_room = _db.C_User_In_Room.Where(t => t.UserNotType.Id.ToString() == mess.index_user && t.C_Room.TableId == mess.index_room).ToList(); if (!user_was_in_room.Any()) { var user_in_room = new C_User_In_Room(); user_in_room.C_Room = room; user_in_room.UserNotType = user; user_in_room.Participant = true; user_in_room.Admin = false; _db.C_User_In_Room.Add(user_in_room); _db.SaveChanges(); } else { user_was_in_room.First().Participant = true; _db.SaveChanges(); } var s = _db.C_User_In_Room.Where(t => t.UserNotType.NameUser == user.NameUser).ToList().First(); var Mess_in_room = new message_on_room(); Mess_in_room.C_User_In_Room = s; Mess_in_room.text_mess = mess.text_message.Substring(5, mess.text_message.Length - 5); Mess_in_room.time_mess = DateTime.Now; _db.message_on_room.Add(Mess_in_room); _db.SaveChanges(); fDocMess.index_command = "25"; fDocMess.index_user = "******"; fDocMess.name_user = "******"; fDocMess.index_room = mess.index_room; fDocMess.name_room = mess.name_room; fDocMess.text_message = mess.text_message.Substring(5, mess.text_message.Length - 5) + mess.name_user; fDocMess.time_message = DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss"); var all_user = _db.C_User_In_Room .Where(t => t.C_Room.TableId == room.TableId && t.UserNotType.Id != user.Id && t.Participant).ToList(); foreach (var VARIABLE in all_user) { int r = VARIABLE.UserNotType.index_in_list ?? -1; if (r != -1) { if (ServerObject.DictionaryClients.ContainsKey(r)) { ServerObject.DictionaryClients[r].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(mess)); ServerObject.DictionaryClients[r].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(fDocMess)); } } } } else if (mess.text_message.Substring(0, 5) == "False") { fDocMess.index_command = "25"; fDocMess.index_user = "******"; fDocMess.name_user = "******"; fDocMess.index_room = mess.index_room; fDocMess.name_room = mess.name_room; fDocMess.text_message = mess.text_message.Substring(6, mess.text_message.Length - 6) + mess.name_user; fDocMess.time_message = DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss"); var all_user = _db.C_User_In_Room .Where(t => t.C_Room.TableId == room.TableId && t.UserNotType.Id != user.Id && t.Participant).ToList(); foreach (var VARIABLE in all_user) { int r = VARIABLE.UserNotType.index_in_list ?? -1; if (r != -1) { if (ServerObject.DictionaryClients.ContainsKey(r)) { ServerObject.DictionaryClients[r].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(fDocMess)); } } } } else { Console.WriteLine("case 21: Error"); } return(true); } catch (Exception e) { Console.WriteLine(e); throw; } }
// response to invitation the call public bool case85(StructDocMess mess) { try { dbb _db = new dbb(); if (mess.text_message == "True") { var usersInRoom = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room).ToList(); int v2 = 0; if (usersInRoom[0].UserNotType.index_in_list.HasValue) { v2 = usersInRoom[0].UserNotType.index_in_list.Value; } int v4 = 0; if (usersInRoom[1].UserNotType.index_in_list.HasValue) { v4 = usersInRoom[1].UserNotType.index_in_list.Value; } Console.WriteLine("v2-{0}:v4-{1}", v2, v4); if (ServerObject.DictionaryClients.ContainsKey(v2) && ServerObject.DictionaryClients.ContainsKey(v4)) { mess.index_user = usersInRoom[1].UserNotType.Id.ToString(); mess.name_user = usersInRoom[1].UserNotType.NameUser; //Console.WriteLine("v4 port-{0}", ServerObject.DictionaryClients[v4].port_udp); mess.text_message = ((IPEndPoint)(ServerObject.DictionaryClients[v4].ClientObject.client.Client.RemoteEndPoint)).Address .ToString() + ":" + ServerObject.DictionaryClients[v4].port_udp; ServerObject.DictionaryClients[v2].ClientObject.SendMess(XmlParser.XmlParser.struct_to_string(mess)); mess.index_user = usersInRoom[0].UserNotType.Id.ToString(); mess.name_user = usersInRoom[0].UserNotType.NameUser; //Console.WriteLine("v2 port-{0}", ServerObject.DictionaryClients[v2].port_udp); mess.text_message = ((IPEndPoint)(ServerObject.DictionaryClients[v2].ClientObject.client.Client .RemoteEndPoint)).Address .ToString() + ":" + ServerObject.DictionaryClients[v2].port_udp; ServerObject.DictionaryClients[v4].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(mess)); var sd = _db.C_User_In_Room.Where(t => t.UserNotType.Id.ToString() == mess.index_user && t.Participant && t.C_Room.TableId == mess.index_room).ToList(); if (sd.Any()) { message_on_room me = new message_on_room(); me.Room_U = sd.First().TableId; me.text_mess = "Make call"; me.time_mess = DateTime.Now; _db.message_on_room.Add(me); _db.SaveChanges(); } } } return(true); } catch (Exception e) { Console.WriteLine(e); throw; } }
//exit of room public bool case90(StructDocMess mess) { try { dbb _db = new dbb(); List <C_User_In_Room> userInRoom = _db.C_User_In_Room .Where(t => t.UserNotType.Id.ToString() == mess.index_user && t.C_Room.TableId == mess.index_room).ToList(); if (userInRoom.Any()) { message_on_room sMessageOnRoom = new message_on_room(); sMessageOnRoom.Room_U = userInRoom.First().TableId; sMessageOnRoom.text_mess = "Вышел из чата пользователь под иmенеm:" + mess.name_user; sMessageOnRoom.time_mess = DateTime.Now; _db.message_on_room.Add(sMessageOnRoom); _db.SaveChanges(); var _user = userInRoom.First(); _user.Participant = false; _user.Admin = false; _db.SaveChanges(); var adm = _db.C_User_In_Room .Where(t => t.Admin && t.Participant && t.C_Room.TableId == mess.index_room).ToList(); if (!adm.Any()) { var r5 = _db.C_User_In_Room.Where(t => t.C_Room.TableId == mess.index_room && t.Participant) .ToList(); if (r5.Any()) { r5[0].Admin = true; } _db.SaveChanges(); } StructDocMess fDocMess = new StructDocMess(); fDocMess.index_command = "26"; fDocMess.index_user = "******"; fDocMess.name_user = "******"; fDocMess.index_room = mess.index_room; fDocMess.name_room = mess.name_room; fDocMess.text_message = "Вышел из чата пользователь под иmенеm: " + mess.name_user; fDocMess.time_message = DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss"); List <C_User_In_Room> LUser = _db.C_User_In_Room .Where(t => t.C_Room.TableId == mess.index_room && t.Participant) .ToList(); int index = -1; //Console.WriteLine("Вышел из группы: {0}\tКоличество людей в группе {1}",mess.name_user, LUser.Count); foreach (var VARIABLE in LUser) { if (VARIABLE.UserNotType.index_in_list.HasValue) { index = VARIABLE.UserNotType.index_in_list.Value; } // Console.WriteLine("case90 номер в масиве: {0}", index); if (ServerObject.DictionaryClients.ContainsKey(index)) { ServerObject.DictionaryClients[index].ClientObject .SendMess(XmlParser.XmlParser.struct_to_string(fDocMess)); //Console.WriteLine("Сообщения о выходе отправлено: {0}", mess.text_message); } index = -1; } } return(true); } catch (Exception e) { Console.WriteLine(e); throw; } }
//method to get user list for group // mess = main type data network (struct) // return = string xml public static string struct_one_room_list_user_to_string(StructDocMess mess) { dbb dbb = new dbb(); try { var XD = new XDocument(); XElement element = new XElement("Message"); XElement iphoneCompanyElem = new XElement("index_command", mess.index_command); element.Add(iphoneCompanyElem); var userAllRooms = dbb.C_User_In_Room.Where(t => t.C_Room.TableId == mess.index_room && t.Participant).ToList(); if (userAllRooms.FindIndex(t => t.UserNotType.Id.ToString() == mess.index_user) != -1) { var Im = userAllRooms.Find(t => t.UserNotType.Id.ToString() == mess.index_user); userAllRooms.Remove(Im); userAllRooms.Insert(0, Im); } XElement elementRoom = new XElement("Room"); iphoneCompanyElem = new XElement("index_room", userAllRooms[0].C_Room.TableId); elementRoom.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("name_room", userAllRooms[0].C_Room.NameRoom); elementRoom.Add(iphoneCompanyElem); XElement elementAllUsers = new XElement("Users"); foreach (var us in userAllRooms) { XElement elementUsers = new XElement("User"); iphoneCompanyElem = new XElement("index_user", us.UserNotType.Id); elementUsers.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("name_user", us.UserNotType.NameUser); elementUsers.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("img_user", ""); elementUsers.Add(iphoneCompanyElem); int v2 = -1; if (us.UserNotType.index_in_list.HasValue) { v2 = us.UserNotType.index_in_list.Value; } if (v2 != -1) { iphoneCompanyElem = new XElement("in_net", "True"); } else { iphoneCompanyElem = new XElement("in_net", "Flase"); } elementUsers.Add(iphoneCompanyElem); elementAllUsers.Add(elementUsers); } elementRoom.Add(elementAllUsers); element.Add(elementRoom); XD.Add(element); return(XD.ToString()); } catch (Exception e) { Console.WriteLine(e); throw; } }
//method to get one group for user // mess = main type data network (struct) // return = string xml public static string struct_one_room_to_string(StructDocMess mess) { dbb dbb = new dbb(); try { var XD = new XDocument(); XElement element = new XElement("Message"); XElement iphoneCompanyElem = new XElement("index_command", mess.index_command); element.Add(iphoneCompanyElem); var userAllRooms = dbb.C_User_In_Room.Where(t => t.C_Room.TableId == mess.index_room && t.Participant).ToList(); XElement elementRoom = new XElement("Room"); iphoneCompanyElem = new XElement("index_room", userAllRooms[0].C_Room.TableId); elementRoom.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("name_room", userAllRooms[0].C_Room.NameRoom); elementRoom.Add(iphoneCompanyElem); int i = userAllRooms[0].C_Room.TableId; var messallInRoom1 = dbb.message_on_room.Where(t => t.C_User_In_Room.C_Room.TableId == i).ToList(); if (messallInRoom1.Any()) { var messallInRoom = messallInRoom1.Last(); XElement elementRoomMess = new XElement("Mess_in_room"); XElement elementOneMess = new XElement("Mess"); iphoneCompanyElem = new XElement("mess_str", messallInRoom.text_mess); elementOneMess.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("mess_time", messallInRoom.time_mess.Value.ToString("yyyy.MM.dd-HH.mm.ss")); elementOneMess.Add(iphoneCompanyElem); XElement elementMessUser = new XElement("User_in_mess"); iphoneCompanyElem = new XElement("index_user", messallInRoom.C_User_In_Room.UserNotType.Id); elementMessUser.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("name_user", messallInRoom.C_User_In_Room.UserNotType.NameUser); elementMessUser.Add(iphoneCompanyElem); iphoneCompanyElem = new XElement("img_user", ""); elementMessUser.Add(iphoneCompanyElem); elementOneMess.Add(elementMessUser); elementRoomMess.Add(elementOneMess); elementRoom.Add(elementRoomMess); } elementRoom.Add(new XElement("count_user", userAllRooms.Count)); element.Add(elementRoom); XD.Add(element); return(XD.ToString()); } catch (Exception e) { Console.WriteLine(e); throw; } }