Ejemplo n.º 1
0
        //Работает
        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);
        }
Ejemplo n.º 2
0
        public OutputSocketMessageWithUsers Execute(object val, string myLogin, Guid actId)
        {
            #region Тестовые данные

            /*
             *          {
             *              "execFun": "addMemberInGroup",
             *              "data": {
             *                  "memberLogin": "******",
             *                  "groupId": "48A0CA0657DE4FB09CDC86008B2A8EBE",
             *                   "transactionId": "80f7efc032dd4a7c97f69fca51ad1100"
             *              }
             *          }
             */
            #endregion

            OutputSocketMessage          output = new OutputSocketMessage("addMemberInGroup", actId, true, "", new { });
            OutputSocketMessageWithUsers rez    = new OutputSocketMessageWithUsers();

            AddMemberInGroupInfo info = DeserializeObject.ParseJSON <AddMemberInGroupInfo>(val, output, out rez);
            if (info == null)
            {
                return(rez);
            }

            using (var db = new RaidaContext())
            {
                if (db.Members.Any(it => it.login.Equals(info.memberLogin.Trim(), StringComparison.CurrentCultureIgnoreCase)))
                {
                    Members owner = db.Members.First(it => it.login.Equals(myLogin));
                    if (db.MemberInGroup.Any(it => it.member == owner && it.groupId == info.groupId && !it.group.one_to_one))
                    {
                        Members user = db.Members.FirstOrDefault(it => it.login.Equals(info.memberLogin.Trim(), StringComparison.CurrentCultureIgnoreCase));
                        if (db.MemberInGroup.Any(it => it.groupId == info.groupId && it.member == user))
                        {
                            output.success  = false;
                            output.msgError = "This user already exists in this group";
                        }
                        else
                        {
                            Groups group = db.Groups.First(it => it.group_id == info.groupId);

                            if (group.privated)
                            {
                                output.success  = false;
                                output.msgError = "This group is private";
                                rez.msgForOwner = output;
                                return(rez);
                            }

                            int newId = 0;
                            if (db.MemberInGroup.Any())
                            {
                                newId = db.MemberInGroup.OrderByDescending(it => it.Id).FirstOrDefault().Id + 1;
                            }

                            MemberInGroup mg = new MemberInGroup
                            {
                                Id     = newId,
                                group  = group,
                                member = user
                            };
                            db.MemberInGroup.Add(mg);

                            Transaction.saveTransaction(db, info.transactionId, Transaction.TABLE_NAME.MEMBERS_IN_GROUP, mg.Id.ToString(), owner);

                            db.SaveChanges();

                            output.data = new { itself = true, newUser = new UserInfo(user.login, user.nick_name, user.photo_fragment, user.online), groupId = group.group_id };

                            var members = db.MemberInGroup.Include(ming => ming.member)
                                          .Where(it => it.groupId.Equals(group.group_id)).Select(x => x.member.login).ToList(); //Logins of all users in dialog
                            rez.forUserLogin = members.Where(it => !it.Equals(myLogin)).ToList();                               //Send all users in dialog, but not me

                            rez.msgForOther = new
                            {
                                callFunction = "AddMemberInGroup",
                                data         = new {
                                    id       = info.groupId,
                                    name     = group.group_name_part,
                                    oneToOne = group.one_to_one,
                                    members  = members,
                                    newUser  = new UserInfo(user.login, user.nick_name, user.photo_fragment, user.online)
                                }
                            };
                        }
                    }
                    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);
        }