//Работает private OutputSocketMessageWithUsers getmydialogs(Object val, Guid myPublicLogin) { #region Тестовые данные /* * { * "execFun": "getMyDialogs", * "data": {} * } */ #endregion OutputSocketMessage output = new OutputSocketMessage("getMyDialogs", true, "", new { }); OutputSocketMessageWithUsers rez = new OutputSocketMessageWithUsers(); using (var db = new CloudChatEntities()) { var data = db.group_members.Where(it => it.member_id == db.members.Where(i => i.public_id == myPublicLogin).FirstOrDefault().private_id) .Select(u => new { id = u.group_id, name = u.groups.group_name_part, group = true }).ToList(); Guid myPrivateId = db.members.Where(t => t.public_id == myPublicLogin).FirstOrDefault().private_id; data.AddRange(db.shares.Where(it => it.self_one_or_group.ToLower() == "false" && (it.to_public == myPublicLogin || it.owner_private == myPrivateId)) .Select(u => new { id = u.to_public == myPublicLogin ? db.members.Where(m => m.private_id == u.owner_private).FirstOrDefault().public_id : u.to_public, name = u.to_public == myPublicLogin ? db.members.Where(m => m.private_id == u.owner_private).FirstOrDefault().login : db.members.Where(m => m.public_id == u.to_public).FirstOrDefault().login, group = false }) .Distinct() .ToList() ); output.data = data; } rez.msgForOwner = output; return(rez); }
public void cleanDB() { using (var db = new CloudChatEntities()) { var rows = from o in db.members select o; foreach (var row in rows) { db.members.Remove(row); } var rows1 = from o in db.groups select o; foreach (var row in rows1) { db.groups.Remove(row); } var rows2 = from o in db.group_members select o; foreach (var row in rows2) { db.group_members.Remove(row); } var rows3 = from o in db.shares select o; foreach (var row in rows3) { db.shares.Remove(row); } var rows4 = from o in db.content_over_8000 select o; foreach (var row in rows4) { db.content_over_8000.Remove(row); } db.SaveChanges(); } }
//Работает public AuthInfoWithSocket Auth(object data) { #region Тестовые данные /* * { * "execFun": "authorization", * "data": { * "login": "******", * "an": "00000000000000000000000000000000" * } * } * */ #endregion AuthInfoWithSocket output = new AuthInfoWithSocket(); AuthInfo info; try { info = JsonConvert.DeserializeObject <AuthInfo>(data.ToString()); using (var db = new CloudChatEntities()) { if (db.members.Any(it => it.login.Trim().Equals(info.login, StringComparison.CurrentCultureIgnoreCase) && it.an == info.an)) { output.auth = true; output.publicId = db.members.FirstOrDefault(it => it.login.Trim().Equals(info.login, StringComparison.CurrentCultureIgnoreCase) && it.an == info.an).public_id; output.an = info.an; } else { output.auth = false; } } } catch { output.auth = false; } return(output); }
public ActionResult Index() { ViewBag.Title = "Home Page"; Dictionary <Guid, Guid> users = new Dictionary <Guid, Guid>(); Dictionary <Guid, String> groups = new Dictionary <Guid, String>(); using (var db = new CloudChatEntities()) { db.members.ToList().ForEach(it => users.Add(it.public_id, it.an)); db.groups.ToList().ForEach(it => groups.Add(it.group_id, it.group_name_part)); } ViewBag.users = users; ViewBag.groups = groups; return(View()); }
//Работает private OutputSocketMessageWithUsers registration(Object val, Object nothing) { #region Тестовые данные /* * { * "execFun": "registration", * "data": { * "login": "******", * "an": "d842703c8acb4bd893876d700f60683e", * "publicId": "80f7efc032dd4a7c97f69fca51ad3000" * } * } */ #endregion OutputSocketMessage output = new OutputSocketMessage("registration", true, "", new { }); OutputSocketMessageWithUsers rez = new OutputSocketMessageWithUsers(); RegistrationInfo info = DeserObj <RegistrationInfo>(val, output, out rez); if (info == null) { return(rez); } using (var db = new CloudChatEntities()) { if (db.members.Any(it => it.login.Equals(info.login.Trim(), StringComparison.CurrentCultureIgnoreCase))) { output.success = false; output.msgError = "This login already exists"; } else { db.usp_membersInsert(info.login.Trim(), info.publicId, info.an, Guid.NewGuid(), DateTime.Now, Guid.NewGuid(), "", new byte[5], 0, "redy"); } } rez.msgForOwner = output; return(rez); }
//Работает private OutputSocketMessageWithUsers creategroup(Object val, Guid myPublicLogin) { #region Тестовые данные /* * { * "execFun": "createGroup", * "data": { * "groupName": "MeCloseGroup", * "public_id": "48A0CA0657DE4FB09CDC86008B2A8EBE" * } * } */ #endregion OutputSocketMessage output = new OutputSocketMessage("createGroup", true, "", new { }); OutputSocketMessageWithUsers rez = new OutputSocketMessageWithUsers(); GroupInfo info = DeserObj <GroupInfo>(val, output, out rez); if (info == null) { return(rez); } using (var db = new CloudChatEntities()) { Guid owner = db.usp_membersSelect(myPublicLogin).First().private_id; db.usp_groupsInsert(info.public_id, info.name, owner, "", Guid.Empty); db.usp_group_membersInsert(info.public_id, owner, "allow_or_deny"); } output.data = new { id = info.public_id, name = info.name }; rez.msgForOwner = output; //rez.usersId.Add(info.login); return(rez); }
private OutputSocketMessageWithUsers getmsg(Object val, Guid myPublicLogin) { #region Тестовые данные /* * { * "execFun": "getMsg", * "data": { * "getAll": "true", * "onGroup": "false", * "onlyId": "00000000000000000000000000000000" * } * } * * { * "execFun": "getMsg", * "data": { * "getAll": "false", * "onGroup": "true", * "onlyId": "48A0CA0657DE4FB09CDC86008B2A8EBE" * } * } * { * "execFun": "getMsg", * "data": { * "getAll": "false", * "onGroup": "false", * "onlyId": "788FEFAD0ED24436AD73D968685110E8" * } * } */ #endregion OutputSocketMessage output = new OutputSocketMessage("getMsg", true, "", new { }); OutputSocketMessageWithUsers rez = new OutputSocketMessageWithUsers(); InGetMsgInfo info = DeserObj <InGetMsgInfo>(val, output, out rez); if (info == null) { return(rez); } using (var db = new CloudChatEntities()) { List <OutGetMsgInfo> list = new List <OutGetMsgInfo>(); var owner = db.usp_membersSelect(myPublicLogin).Single(); var myListGroupId = from m in db.members join membgr in db.group_members on m.private_id equals membgr.member_id //join gr in db.groups on membgr.group_id equals gr.group_id where m.public_id == owner.public_id select membgr.group_id; if (info.getAll) { var msgInfoList = from s in db.shares join content in db.content_over_8000 on s.id equals content.shar_id join groupp in db.groups on s.to_public equals groupp.group_id into gs from groupp in gs.DefaultIfEmpty() where s.owner_private == owner.private_id || (s.to_public == owner.public_id && s.self_one_or_group.Equals("false", StringComparison.InvariantCultureIgnoreCase)) || (myListGroupId.Contains(s.to_public) && s.self_one_or_group.Equals("true", StringComparison.InvariantCultureIgnoreCase)) orderby s.sending_date descending select new { guidMsg = s.id, textMsg = content.file_data, sender = s.owner_private, gr = s.self_one_or_group, recip = s.to_public, time = s.sending_date, cur = s.current_fragment, total = s.total_fragment, grName = groupp.group_name_part, login = db.members.FirstOrDefault(it => it.private_id == s.owner_private).login }; foreach (var item in msgInfoList) { string senderName = Boolean.Parse(item.gr) ? item.grName : item.login; list.Add( new OutGetMsgInfo( item.guidMsg, Encoding.Unicode.GetString(item.textMsg), db.members.First(it => it.private_id == item.sender).public_id, item.gr, item.recip, item.time, item.cur, item.total, item.login, item.grName ) ); } } else { if (info.onGroup) { if (!db.groups.Any(it => it.group_id == info.onlyId) && !myListGroupId.Contains(info.onlyId)) { output.success = false; output.msgError = "Group is not found"; rez.msgForOwner = output; return(rez); } else { var msgInfoList = from s in db.shares join content in db.content_over_8000 on s.id equals content.shar_id where (s.to_public == info.onlyId && s.self_one_or_group.Equals("true", StringComparison.InvariantCultureIgnoreCase)) orderby s.sending_date descending select new { guidMsg = s.id, textMsg = content.file_data, sender = s.owner_private, gr = s.self_one_or_group, recip = s.to_public, time = s.sending_date, cur = s.current_fragment, total = s.total_fragment, login = db.members.FirstOrDefault(it => it.private_id == s.owner_private).login }; foreach (var item in msgInfoList) { list.Add( new OutGetMsgInfo( item.guidMsg, Encoding.Unicode.GetString(item.textMsg), db.members.First(it => it.private_id == item.sender).public_id, item.gr, item.recip, item.time, item.cur, item.total, item.login, item.login ) ); } } } else if (!db.members.Any(it => it.public_id == info.onlyId)) { output.success = false; output.msgError = "User is not found"; rez.msgForOwner = output; return(rez); } else { var msgInfoList = from s in db.shares join content in db.content_over_8000 on s.id equals content.shar_id where (s.owner_private == owner.private_id && s.to_public == info.onlyId && s.self_one_or_group.Equals("false", StringComparison.InvariantCultureIgnoreCase)) || (s.owner_private == db.members.FirstOrDefault(it => it.public_id == info.onlyId).private_id&& s.to_public == owner.public_id && s.self_one_or_group.Equals("false", StringComparison.InvariantCultureIgnoreCase)) orderby s.sending_date descending select new { guidMsg = s.id, textMsg = content.file_data, sender = s.owner_private, gr = s.self_one_or_group, recip = s.to_public, time = s.sending_date, cur = s.current_fragment, total = s.total_fragment, login = db.members.FirstOrDefault(it => it.private_id == s.owner_private).login }; foreach (var item in msgInfoList) { list.Add( new OutGetMsgInfo( item.guidMsg, Encoding.Unicode.GetString(item.textMsg), db.members.First(it => it.private_id == item.sender).public_id, item.gr, item.recip, item.time, item.cur, item.total, item.login, item.login ) ); } } } output.data = list; } rez.msgForOwner = output; //rez.usersId.Add(info.login); return(rez); }
private OutputSocketMessageWithUsers sendmsg(Object val, Guid myPublicLogin) { #region Тестовые данные /* * { * "execFun": "sendMsg", * "data": { * "recipientId": "788FEFAD0ED24436AD73D968685110E8", * "recipientLogin": "******", * "toGroup": "false", * "textMsg": "test message for one user", * "guidMsg": "91D8333FA55B40AFB46CA63E214C93C8", * "sendTime": "1511450497620", * "curFrg":"1", * "totalFrg":"2" * } * } * * { * "execFun": "sendMsg", * "data": { * "recipientId": "48A0CA0657DE4FB09CDC86008B2A8EBE", * "toGroup": "true", * "textMsg": "test message for group", * "guidMsg": "CA5BBD6B488941FEACFA19692D3087E0", * "sendTime": "1511450497620", * "curFrg":"1", * "totalFrg":"2" * } * } * { * "execFun": "sendMsg", * "data": { * "recipientId": "80f7efc032dd4a7c97f69fca51ad3000", * "toGroup": "false", * "textMsg": "response fo test message", * "guidMsg": "19D2B66BB477467ABAE72AC79F5A2C48", * "sendTime": "1511450497620", * "curFrg":"1", * "totalFrg":"2" * } * } * { * "execFun": "sendMsg", * "data": { * "recipientId": "48A0CA0657DE4FB09CDC86008B2A8EBE", * "toGroup": "true", * "textMsg": "response for group test message", * "guidMsg": "3D45AF8702CA4857A03D7EBD90D95C89", * "sendTime": "1511450497620", * "curFrg":"1", * "totalFrg":"2" * } * } */ #endregion OutputSocketMessage output = new OutputSocketMessage("sendMsg", true, "", new { }); OutputSocketMessageWithUsers rez = new OutputSocketMessageWithUsers(); OutGetMsgInfo outputForOther = null; InputMsgInfo info = DeserObj <InputMsgInfo>(val, output, out rez); if (info == null) { return(rez); } using (var db = new CloudChatEntities()) { Guid recepId = info.recipientId; if (info.toGroup) { if (!db.groups.Any(it => it.group_id == info.recipientId)) { output.success = false; output.msgError = "Group is not found"; rez.msgForOwner = output; return(rez); } } else { if (!db.members.Any(it => it.public_id == info.recipientId || it.login.Equals(info.recipientLogin.Trim(), StringComparison.CurrentCultureIgnoreCase))) { output.success = false; output.msgError = "User is not found"; rez.msgForOwner = output; return(rez); } recepId = db.members.FirstOrDefault(it => it.public_id == info.recipientId || it.login.Equals(info.recipientLogin.Trim(), StringComparison.CurrentCultureIgnoreCase)).public_id; } if (output.success) { content_over_8000 msg = new content_over_8000(); msg.shar_id = info.msgId; msg.file_data = Encoding.Unicode.GetBytes(info.textMsg); db.content_over_8000.Add(msg); shares newShare = new shares(); newShare.id = info.msgId; newShare.owner_private = db.usp_membersSelect(myPublicLogin).First().private_id; newShare.to_public = recepId; newShare.self_one_or_group = info.toGroup.ToString(); newShare.content = msg; newShare.current_fragment = info.curFrg; newShare.total_fragment = info.totalFrg; newShare.sending_date = info.sendTime; newShare.file_extention = "none"; db.shares.Add(newShare); db.SaveChanges(); string groupName = ""; if (info.toGroup) { groupName = db.groups.Where(it => it.group_id == recepId).FirstOrDefault().group_name_part; } else { groupName = db.members.FirstOrDefault(it => it.public_id == recepId).login; } string login = db.members.FirstOrDefault(it => it.private_id == newShare.owner_private).login; outputForOther = new OutGetMsgInfo(info.msgId, info.textMsg, myPublicLogin, info.toGroup.ToString(), recepId, info.sendTime, info.curFrg, info.totalFrg, login, groupName); if (info.toGroup) { db.group_members.Where(it => it.group_id == recepId && it.member_id != newShare.owner_private) .ToList() .ForEach(it => rez.usersId.Add( db.members.First(m => m.private_id == it.member_id).public_id ) ); } else { //rez.usersId.Add(info.login); rez.usersId.Add(recepId); } } } output.data = outputForOther; rez.msgForOwner = output; rez.msgForOther = output; // rez.msgForOther = new { callFunction="newMessage", data = outputForOther } ; return(rez); }
//Работает private OutputSocketMessageWithUsers addmemberingroup(Object val, Guid myPublicLogin) { #region Тестовые данные /* * { * "execFun": "addMemberInGroup", * "data": { * "memberLogin": "******", * "groupId": "48A0CA0657DE4FB09CDC86008B2A8EBE" * } * } */ #endregion OutputSocketMessage output = new OutputSocketMessage("addMemberInGroup", true, "", new { }); OutputSocketMessageWithUsers rez = new OutputSocketMessageWithUsers(); AddMemberInGroupInfo info = DeserObj <AddMemberInGroupInfo>(val, output, out rez); if (info == null) { return(rez); } using (var db = new CloudChatEntities()) { if (db.members.Any(it => it.login.Equals(info.memberLogin.Trim(), StringComparison.CurrentCultureIgnoreCase))) { Guid owner = db.members.First(it => it.public_id == myPublicLogin).private_id; if (db.group_members.Any(it => it.member_id == owner && it.group_id == info.groupId)) { members user = db.members.FirstOrDefault(it => it.login.Equals(info.memberLogin.Trim())); if (db.group_members.Any(it => it.group_id == info.groupId && it.member_id == user.private_id)) { output.success = false; output.msgError = "This user already consists in this group"; } else { db.usp_group_membersInsert(info.groupId, user.private_id, "I don't known"); rez.usersId.Add(user.public_id); rez.msgForOther = new { callFunction = "addMemberInGroup", id = info.groupId, name = db.groups.Where(it => it.group_id == info.groupId).First().group_name_part }; } } else { output.success = false; output.msgError = "Group is not found"; } } else { output.success = false; output.msgError = "User is not found"; } } rez.msgForOwner = output; return(rez); }