public IQueryable GetMyGroupKey(string owner)
        {
            //string gk = "";

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                var gid_war = context.Group_Status_Table.SingleOrDefault(s => s.groupname == owner + "Friends");

                int gid = gid_war.groupid;

                var raws = context.Group_Key_Table.Where(g => g.groupid == gid && g.username == owner).ToList();

                int Maxvn = raws.Max(r => r.version_num);

                var k2 = context.Group_Key_Table.Where(u => u.groupid == gid && u.version_num == Maxvn &&
                                                       u.username == owner).
                         Select(u => new {
                    groupid     = u.groupid,
                    version_num = u.version_num,
                    groupKey    = u.groupKey
                }).ToList();

                //gk = k2.groupKey;
                return(k2.AsQueryable());
            }
        }
示例#2
0
        public String PostGroupStatus(Group_Status_Table group_status_table)
        {
            string status;

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                try
                {
                    context.Group_Status_Table.Add(group_status_table);
                    if (context.SaveChanges() > 0)
                    {
                        status = group_status_table.groupid.ToString();
                        return(status);
                    }
                    else
                    {
                        status = "failed";
                        return(status);
                    }
                }
                catch (Exception e)
                {
                    status = e.ToString();
                    return(status);
                }
            }
        }
        public String AddNewKeyData(string username, string gid, string new_key, string vn)
        {
            int group_id_int   = int.Parse(gid);
            int version_no_int = int.Parse(vn);

            using (MlaDatabaseEntities context = new MlaDatabaseEntities()) {
                try
                {
                    Group_Key_Table new_data = new Group_Key_Table
                    {
                        username    = username,
                        groupKey    = new_key,
                        groupid     = group_id_int,
                        version_num = version_no_int
                    };

                    context.Group_Key_Table.Add(new_data);

                    if (context.SaveChanges() > 0)
                    {
                        return("ok");
                    }
                    else
                    {
                        return("add failed");
                    }
                }catch (Exception e)
                {
                    return(e.ToString());
                }
            }
        }
        public String UpdateStatustoClean(int gid)
        {
            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                try
                {
                    Group_Status_Table new_status = new Group_Status_Table {
                    };

                    new_status.groupid = gid;
                    context.Group_Status_Table.Attach(new_status);
                    new_status.status = 0;
                    context.Entry(new_status).Property(n => n.status).IsModified = true;

                    var st = "fail";

                    if (context.SaveChanges() > 0)
                    {
                        return("ok");
                    }
                    else
                    {
                        return(st);
                    }
                }
                catch (Exception e)
                {
                    return(e.ToString());
                }
            }
        }
示例#5
0
        public string RemoveRequest(string owner, string new_user, string groupname)
        {
            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                try
                {
                    var rawToRemove = context.Group_Invitation_Table.Single(i => i.username_to == owner &&
                                                                            i.username_from == new_user && i.groupname == groupname);

                    context.Group_Invitation_Table.Remove(rawToRemove);

                    if (context.SaveChanges() < 0)
                    {
                        return("ok");
                    }
                    else
                    {
                        return("failed in Save Context");
                    }
                }catch (Exception e)
                {
                    return(e.ToString());
                }
            }
        }
示例#6
0
        public string uploadPost(Post_Table post_table)
        {
            string query_status = "failed";

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                try
                {
                    context.Post_Table.Add(post_table);
                    if (context.SaveChanges() > 0)
                    {
                        query_status = "ok";
                        return(query_status);
                    }
                    else
                    {
                        return(query_status);
                    }
                }
                catch (Exception e)
                {
                    query_status = "failed" + e.ToString();
                    return(query_status);
                }
            }
        }
示例#7
0
        public IQueryable FindFriends(string text, string username)
        {
            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                var currently_following = context.Group_Table.Where(g => g.username == username &&
                                                                    g.isOwner == "no" && g.isFriend == "yes").ToList();


                if (text.Equals("All") || text.Equals("all") || text.Equals("ALL"))
                {
                    var users = context.Users.Where(u => u.username != username)
                                .Select(u => new
                    {
                        username  = u.username,
                        groupname = u.username + "Friends"
                    }).ToList();

                    var result =
                        from fnew in users
                        from cur in currently_following
                        where fnew.groupname != cur.groupname
                        select fnew;

                    var result_ = result.ToList();

                    if (result_ == null || !(result_.Any()))
                    {
                        return(users.AsQueryable());
                    }
                    return(result_.AsQueryable());
                }

                else
                {
                    var users = context.Users.Where(u => u.username.Contains(text) && u.username != username)
                                .Select(u => new
                    {
                        username  = u.username,
                        groupname = u.username + "Friends"
                    }).ToList();


                    var result =
                        from fnew in users
                        from cur in currently_following
                        where fnew.groupname != cur.groupname
                        select fnew;

                    var result_ = result.ToList();
                    if (result_ == null || !(result_.Any()))
                    {
                        return(users.AsQueryable());
                    }


                    return(result_.AsQueryable());
                }
            }
        }
示例#8
0
 public List <Group_Status_Table> getAGroup(int id)
 {
     using (MlaDatabaseEntities context = new MlaDatabaseEntities())
     {
         var gps = context.Group_Status_Table.Where(g => g.groupid == id).ToList();
         return(gps);
     }
 }
示例#9
0
 public List <Post_Table> GetAllPosts()
 {
     using (MlaDatabaseEntities context = new MlaDatabaseEntities())
     {
         var posts = context.Post_Table.ToList();
         return(posts);
     }
 }
示例#10
0
 public List <Group_Invitation_Table> GetFriendsRequest(string username_to)
 {
     using (MlaDatabaseEntities context = new MlaDatabaseEntities())
     {
         var invites = context.Group_Invitation_Table.Where(i => i.username_to == username_to && i.isFriend == "yes").ToList();
         return(invites);
     }
 }
示例#11
0
 public Group_Status_Table GetGroupInfo(string groupname)
 {
     using (MlaDatabaseEntities context = new MlaDatabaseEntities())
     {
         var gps = context.Group_Status_Table.Single(g => g.groupname == groupname);
         return(gps);
     }
 }
示例#12
0
 public List <Group_Status_Table> GetAllGroupInfo(string groupname)
 {
     using (MlaDatabaseEntities context = new MlaDatabaseEntities())
     {
         var gps = context.Group_Status_Table.ToList();
         return(gps);
     }
 }
示例#13
0
 public List <User> GetUserInfo(string username)
 {
     using (MlaDatabaseEntities context = new MlaDatabaseEntities())
     {
         var user_info = context.Users.Where(u => u.username == username).ToList();
         return(user_info);
     }
 }
        public int?GetMaxVersion(int gid)
        {
            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                int?maxV = (int?)context.Group_Key_Table.Where(g => g.groupid == gid).Max(g => (int?)g.version_num);

                return(maxV);
            }
        }
示例#15
0
        //public String PostUser(string username, string password, string emailid, string firstname, string lastname, string mobile)
        public String PostUser(User user, string defaultGroupKey)
        {
            string query_status;

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                try
                {
                    context.Users.Add(user);

                    int?maxGroupID         = (int?)context.Group_Status_Table.Max(g => (int?)g.groupid);
                    Group_Status_Table gst = new Group_Status_Table
                    {
                        groupid   = (maxGroupID == null) ? 1 : (int)maxGroupID + 1,
                        groupname = user.username + "Friends",
                        status    = 0
                    };
                    context.Group_Status_Table.Add(gst);

                    Group_Table gt = new Group_Table
                    {
                        username  = user.username,
                        groupid   = gst.groupid,
                        groupname = gst.groupname,
                        isFriend  = "yes",
                        isOwner   = "yes"
                    };
                    context.Group_Table.Add(gt);

                    Group_Key_Table gk = new Group_Key_Table {
                        username    = user.username,
                        groupKey    = defaultGroupKey,
                        groupid     = gst.groupid,
                        version_num = 1
                    };
                    context.Group_Key_Table.Add(gk);

                    int x = context.SaveChanges();
                    if (x > 0)
                    {
                        query_status = "OK";
                        return(query_status);
                    }
                    else
                    {
                        query_status = "failed";
                        return(query_status);
                    }
                }
                catch (Exception e)
                {
                    query_status = e.ToString();
                    return(query_status);
                }
            }
        }
示例#16
0
        public string GetPublicKey(string username)
        {
            string pk = "";

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                var pub = context.Users.Single(u => u.username == username);
                pk = pub.publickey;
                return(pk);
            }
        }
示例#17
0
        public IQueryable UserAuth(string username, string password)
        {
            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                var user = context.Users.Where(u => u.username == username && u.password == password)
                           .Select(u => new
                {
                    username = u.username,
                    password = u.password,
                }).ToList();

                return(user.AsQueryable());
            }
        }
        public string AcceptGroupRequest(Group_Key_Table group_key_table, string gname, string owner)
        {
            string query_result = "failed";

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                string s = "";
                try
                {
                    context.Group_Key_Table.Add(group_key_table);
                    s += "group_key_added ";

                    Group_Table group_table = new Group_Table
                    {
                        username  = group_key_table.username,
                        groupid   = group_key_table.groupid,
                        groupname = gname,
                        isOwner   = "no",
                        isFriend  = "no"
                    };
                    context.Group_Table.Add(group_table);
                    s += "group_table_added ";

                    var rawToRemove = context.Group_Invitation_Table.Single(t => t.username_from == group_key_table.username &&
                                                                            t.username_to == owner &&
                                                                            t.groupid == group_key_table.groupid);

                    context.Group_Invitation_Table.Remove(rawToRemove);
                    s += "removed_raw ";

                    if (context.SaveChanges() > 0)
                    {
                        query_result = "ok";
                        return(query_result);
                    }
                    else
                    {
                        return(s + query_result);
                    }
                }
                catch (Exception e)
                {
                    query_result = s + e.ToString();
                    return(query_result);
                }
            }
        }
示例#19
0
        public IQueryable GetMyPosts(string username)
        {
            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                var query =
                    from posts in context.Post_Table
                    from groups in context.Group_Table.Where(t => t.username == username)
                    where groups.groupid == posts.groupid select posts;

                var result = query.ToList();

                var public_post = context.Post_Table.Where(p => p.privacy == "Public" && p.ownerusername != username).ToList();

                var final_result = result.Union(public_post).OrderByDescending(g => g.timestamp);

                return(final_result.AsQueryable());
            }
        }
示例#20
0
        public string addRequest(Group_Invitation_Table data)
        {
            string status = "failed";

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                var already_exists = context.Group_Invitation_Table.SingleOrDefault(u => u.username_from == data.username_from &&
                                                                                    u.groupid == data.groupid);

                if (already_exists is null)
                {
                    try
                    {
                        if (data == null)
                        {
                            return("its null");
                        }
                        context.Group_Invitation_Table.Add(data);
                        if (context.SaveChanges() > 0)
                        {
                            status = "SENT";
                            return(status);
                        }
                        else
                        {
                            status = "failed in save";
                            return(status);
                        }
                    }
                    catch (Exception e)
                    {
                        status = e.ToString();
                        return(status);
                    }
                }
                else
                {
                    return("SENT");
                }
            }
        }
        public IQueryable GetStatusAndDetails(int gid)
        {
            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                try
                {
                    var stat = context.Group_Status_Table.Single(g => g.groupid == gid);

                    if (stat.status == 1)
                    {
                        int?maxV  = (int?)context.Group_Key_Table.Where(g => g.groupid == gid).Max(g => (int?)g.version_num);
                        var users = context.Group_Key_Table.Where(u => u.groupid == gid && u.version_num == maxV).ToList();


                        var user_details_ = from u in users
                                            from user in context.Users.ToList()
                                            where u.username == user.username
                                            select new
                        {
                            username  = u.username,
                            publicKey = user.publickey
                        };

                        var result = user_details_.ToList();
                        return(result.AsQueryable());
                    }
                    else
                    {
                        return(null);
                    }
                }catch (Exception e)
                {
                    return(null);
                }
            }
        }
        public string GetGroupKey(int gid, int vn, string owner)
        {
            string gk = "";

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                if (vn == 0)
                {
                    var raws = context.Group_Key_Table.Where(g => g.groupid == gid && g.username == owner).ToList();

                    int Maxvn = raws.Max(r => r.version_num);

                    var k2 = context.Group_Key_Table.Single(u => u.groupid == gid && u.version_num == Maxvn && u.username == owner);
                    gk = k2.groupKey;
                    return(gk);
                }
                else
                {
                    var k1 = context.Group_Key_Table.Single(u => u.groupid == gid && u.version_num == vn && u.username == owner);
                    gk = k1.groupKey;
                    return(gk);
                }
            }
        }
        public string RemoveGroup(int gid, string gname, string username)
        {
            string check_ = "";

            using (MlaDatabaseEntities context = new MlaDatabaseEntities())
            {
                var f = context.Group_Table.Single(g => g.groupid == gid && g.username == username);

                if (f.isOwner == "yes")
                {
                    return("Can not Remove Owner");
                }

                check_ += "Ownership checked ";
                try
                {
                    var gt_ = context.Group_Table.Single(t => t.groupname == gname &&
                                                         t.groupid == gid &&
                                                         t.username == username);

                    string grp_name = gt_.groupname;
                    context.Group_Table.Remove(gt_);
                    check_ += " gt removed ";



                    int?maxV = (int?)context.Group_Key_Table.Where(g => g.groupid == gid).Max(g => (int?)g.version_num);

                    var gk_ = context.Group_Key_Table.Single(t => t.groupid == gid &&
                                                             t.username == username && t.version_num == maxV);

                    context.Group_Key_Table.Remove(gk_);
                    check_ += "gkt removed ";


                    //update status
                    Group_Status_Table new_status = new Group_Status_Table {
                    };

                    new_status.groupid = gid;
                    context.Group_Status_Table.Attach(new_status);
                    new_status.status = 1;
                    context.Entry(new_status).Property(n => n.status).IsModified = true;
                    check_ += " status checked";



                    if (context.SaveChanges() > 0)
                    {
                        return("removed");
                    }
                    else
                    {
                        return("failed");
                    }
                }
                catch (Exception e)
                {
                    return(check_ + e.ToString());
                }
            }
        }