コード例 #1
0
        }     //removeEmptyRoomInvitations()

        /// <summary>
        /// Dodawanie nowego pokoju
        /// </summary>
        /// <param name="roomToAdd">Pokój do dodania</param>
        /// <param name="oldRoomToAdd">Pokój do dodania</param>
        /// <returns></returns>
        private bool addRoom(Rooms roomToAdd, OldRooms oldRoomToAdd)
        {
            using (var db = new conferenceEntities2())
            {
                var rooms    = db.Set <Rooms>();
                var oldRooms = db.Set <OldRooms>();

                // dodwanie pokojów do bazy
                rooms.Add(roomToAdd);
                oldRooms.Add(oldRoomToAdd);
                db.SaveChanges();

                int roomId    = roomToAdd.roomId;
                int oldRoomId = oldRoomToAdd.oldRoomId;
                if (roomId == oldRoomId)
                {
                    // dodawanie twórcy do utworzonego pokoju
                    addUserToRoom(roomId, roomToAdd.ownerId);

                    return(true);
                }//if

                // usuwanie pokojów z bazy jeśli mają inne id
                rooms.Remove(roomToAdd);
                oldRooms.Remove(oldRoomToAdd);
                db.SaveChanges();
            }//using

            return(false);
        }//addRoom()
コード例 #2
0
        public ActionResult Create([Bind(Include = "messageId,oldRoomId,userId,content")] ChatHistory chatHistory)
        {
            if (ModelState.IsValid)
            {
                db.ChatHistory.Add(chatHistory);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.oldRoomId = new SelectList(db.OldRooms, "oldRoomId", "ownerId", chatHistory.oldRoomId);
            return(View(chatHistory));
        }
コード例 #3
0
        public ActionResult Index(string Email, string[] ListFriends)
        {
            ApplicationDbContext dbcont = new ApplicationDbContext();
            BigSearchFriendModel model  = new BigSearchFriendModel();

            model.tosendinginv = new SearchFriendModel();

            model.tosendinginv.ListFriends = ListFriends;
            model.toinivitations           = new SearchFriendModel();

            ApplicationUser user      = getUser();
            var             allusers  = dbcont.Users.ToArray();
            var             inviteeID = allusers[0].Id;

            foreach (var x in allusers)
            {
                if (x.Email.Equals(Email))
                {
                    inviteeID = x.Id;
                }
            }

            Invitation invitetoAdd = new Invitation
            {
                firstUserId  = user.Id,
                secondUserId = inviteeID
            };

            using (var db = new conferenceEntities2())
            {
                db.Invitation.Add(invitetoAdd);
                db.SaveChanges();
            }
            return(View(model));
        }
コード例 #4
0
        public ActionResult Friendrejected(string email, string[] model, string view)
        {
            ApplicationDbContext dbcont = new ApplicationDbContext();

            ApplicationUser user     = getUser();
            var             allusers = dbcont.Users.ToArray();

            BigSearchFriendModel br = new BigSearchFriendModel();

            br.toinivitations = new SearchFriendModel();

            br.toinivitations.Email       = email;
            br.toinivitations.ListFriends = model;
            var IDfr = allusers[0].Id;

            foreach (var x in allusers)
            {
                if (x.Email.Equals(email))
                {
                    IDfr = x.Id;
                    break;
                }
            }
            var        find = from docs in db.Invitation where docs.secondUserId == user.Id where docs.firstUserId == IDfr select docs;
            Invitation inv  = null;

            if (find.Any())
            {
                inv = find.First();
            }


            using (var db = new conferenceEntities2())
            {
                if (inv != null)
                {
                    db.Invitation.Attach(inv);
                    db.Invitation.Remove(inv);
                }

                db.SaveChanges();
            }
            br.tofriends = getFriends(user);

            if (view.Equals("contact"))
            {
                return(View("../Home/Contact", br));
            }
            else
            {
                return(View("../Home/Index", br));
            }
        }
コード例 #5
0
        public void delRoomInvite(string roomname)
        {
            ApplicationUser user = getUser();

            using (var db = new conferenceEntities2())
            {
                var roomIdToDel = db.Rooms.First(r => r.name == roomname).roomId;
                var invToDel    = db.RoomsInvitations.First(i => i.roomId == roomIdToDel && i.invitee == user.Id);

                db.RoomsInvitations.Remove(invToDel);
                db.SaveChanges();
            } //using
        }     //delRoomInvite()
コード例 #6
0
        public string inviteToRoom(string username, string roomname)
        {
            // użytkownik zapraszający
            ApplicationUser user = getUser();

            ApplicationUser[] users;
            using (ApplicationDbContext adb = new ApplicationDbContext())
            {
                users = adb.Users.ToArray();
            }//using
            string invitedUserId;

            try
            {
                // użytkownik zapraszany
                var invitedUser = users.First(u => u.UserName == username);
                invitedUserId = invitedUser.Id;
            }//try
            catch (InvalidOperationException)
            {
                return("Nie ma takiego użytkownika");
            }

            RoomsInvitations invitation = new RoomsInvitations()
            {
                inviterId = user.Id,
                invitee   = invitedUserId
            };

            using (var db = new conferenceEntities2())
            {
                var invitations = db.Set <RoomsInvitations>();
                var rooms       = db.Set <Rooms>();
                int roomId      = rooms.First(r => r.name == roomname).roomId;

                try
                {
                    // sprawdzanie czy użytkownik był wcześniej zaproszony
                    invitations.First(i => i.inviterId == invitation.inviterId && i.invitee == invitation.invitee && i.roomId == roomId);
                    return("Ten użytkownik został już wcześniej zaproszony.");
                }//try
                catch (InvalidOperationException)
                {
                    // wysyłanie zaproszenia
                    invitation.roomId = roomId;
                    invitations.Add(invitation);
                    db.SaveChanges();
                    return("Wysłano zaproszenie.");
                } //catch
            }     //using
        }         //inviteToRoom()
コード例 #7
0
        }         //deleteRoomIfEmpty()

        /// <summary>
        /// Usuwanie zaproszeń do pustego pokoju
        /// </summary>
        /// <param name="roomId">ID pokoju</param>
        private void removeEmptyRoomInvitations(int roomId)
        {
            using (var db = new conferenceEntities2())
            {
                RoomsInvitations[] roomsInvitations = (from roomsInv in db.RoomsInvitations
                                                       where roomsInv.roomId == roomId
                                                       select roomsInv).ToArray();
                foreach (var ri in roomsInvitations)
                {
                    db.RoomsInvitations.Remove(ri);
                }
                db.SaveChanges();
            } //using
        }     //removeEmptyRoomInvitations()
コード例 #8
0
        public void Add(string content, string roomnamee)
        {
            using (var db = new conferenceEntities2())
            {
                var his    = db.Set <ChatHistory>();
                var roomid = db.Rooms.First(r => r.name == roomnamee).roomId;


                ChatHistory chat = new ChatHistory {
                    userId = User.Identity.GetUserId(), oldRoomId = roomid, roomname = roomnamee, username = User.Identity.GetUserName(), content = content
                };
                his.Add(chat);
                db.SaveChanges();
            }
        }
コード例 #9
0
        }//addRoom()

        /// <summary>
        /// Dodawanie użytkownika do tabel UsersInRoom i UsersInOldRoom
        /// </summary>
        /// <param name="roomId">ID pokoju</param>
        /// <param name="userId">ID użytkownika</param>
        private void addUserToRoom(int roomId, string userId)
        {
            using (var db = new conferenceEntities2())
            {
                // dodawanie użytkownika do aktywnego pokoju
                try
                {
                    // jeśli rzuci wyjątek to znaczy, że użytkownik jeszcze nie jest dodany
                    db.UsersInRoom.First(u => u.roomId == roomId && u.userId == userId);
                }//try
                catch (InvalidOperationException)
                {
                    // dodaj użytkownika
                    UsersInRoom userInRoom = new UsersInRoom()
                    {
                        roomId = roomId,
                        userId = userId
                    };
                    db.UsersInRoom.Add(userInRoom);
                }//catch

                // dodawanie użytkownika do archiwalnego pokoju
                try
                {
                    // jw.
                    db.UsersInOldRoom.First(u => u.oldRoomId == roomId && u.userId == userId);
                }//try
                catch (InvalidOperationException)
                {
                    UsersInOldRoom usersInOldRoom = new UsersInOldRoom()
                    {
                        oldRoomId = roomId,
                        userId    = userId
                    };
                    db.UsersInOldRoom.Add(usersInOldRoom);
                }//catch

                // zapisz zmiany
                db.SaveChanges();
            } //using
        }     //addUserToRoom()
コード例 #10
0
        }//leavingRoom()

        /// <summary>
        /// Usuwa pokój jeśli ten jest pusty
        /// </summary>
        /// <param name="roomId">ID pokoju</param>
        private void deleteRoomIfEmpty(int roomId)
        {
            using (var db = new conferenceEntities2())
            {
                try
                {
                    // jeśli sekwencja jest pusta to rzuci wyjątek
                    db.UsersInRoom.First(u => u.roomId == roomId);
                }//try
                catch (InvalidOperationException)
                {
                    // nie ma użytkowników w pokoju, więc zostanie usunięty
                    var room = db.Rooms.First(r => r.roomId == roomId);

                    // usuwanie zależnośći
                    removeEmptyRoomInvitations(roomId);

                    // usuwanie pokoju
                    db.Rooms.Remove(room);
                    db.SaveChanges();
                } //catch
            }     //using
        }         //deleteRoomIfEmpty()
コード例 #11
0
        public void leavingRoom(string roomname)
        {
            int roomId;

            using (var db = new conferenceEntities2())
            {
                try
                {
                    roomId = db.Rooms.First(r => r.name == roomname).roomId;
                    string userId    = getUser().Id;
                    var    userToDel = db.UsersInRoom.First(u => u.userId == userId && u.roomId == roomId);

                    // usuwanie
                    db.UsersInRoom.Remove(userToDel);
                    db.SaveChanges();
                }//try
                catch (InvalidOperationException) {
                    return;
                };
            }//using

            // usuwanie pokoju jeżeli jest pusty
            deleteRoomIfEmpty(roomId);
        }//leavingRoom()
コード例 #12
0
        public ActionResult Friendinviteaccept(string email, string[] model, string[] array)
        {
            ApplicationDbContext dbcont = new ApplicationDbContext();

            ApplicationUser user     = getUser();
            var             allusers = dbcont.Users.ToArray();

            BigSearchFriendModel br = new BigSearchFriendModel();

            br.toinivitations           = new SearchFriendModel();
            br.tosendinginv             = new SearchFriendModel();
            br.tosendinginv.ListFriends = array;

            br.toinivitations.Email       = email;
            br.toinivitations.ListFriends = model;
            var IDfr = allusers[0].Id;

            foreach (var x in allusers)
            {
                if (x.Email.Equals(email))
                {
                    IDfr = x.Id;
                    break;
                }
            }

            Friends fr1 = new Friends
            {
                firstUserId  = user.Id,
                secondUserId = IDfr
            };

            Friends fr2 = new Friends
            {
                firstUserId  = IDfr,
                secondUserId = user.Id
            };



            using (var db = new conferenceEntities2())
            {
                var        find = from docs in db.Invitation where docs.secondUserId == user.Id where docs.firstUserId == IDfr select docs;
                Invitation inv  = null;
                if (find.Any())
                {
                    inv = find.First();
                }

                db.Friends.Add(fr1);
                db.Friends.Add(fr2);
                db.SaveChanges();
                if (inv != null)
                {
                    db.Invitation.Attach(inv);
                    db.Invitation.Remove(inv);
                }

                db.SaveChanges();
            }


            return(View("../Friends/Index", br));
        }
コード例 #13
0
        public ActionResult Index(string password)
        {
            ApplicationDbContext dbcont = new ApplicationDbContext();

            var allusers = dbcont.Users.ToArray();

            BigSearchFriendModel model = new BigSearchFriendModel();

            model.toinivitations = new SearchFriendModel();

            ApplicationUser user = getUser();

            try
            {
                ViewBag.Nick = user.Email.ToString();

                using (var db = new conferenceEntities2())
                {
                    var find = from docs in db.Invitation where docs.secondUserId == user.Id select docs;

                    var invitations = find.ToArray();



                    if (invitations.Count() > 0)
                    {
                        ViewBag.mess = invitations.Count().ToString();

                        model.toinivitations.ListFriends = new string[invitations.Count()];
                        int licz = 0;
                        foreach (var x in invitations)
                        {
                            foreach (var z in allusers)
                            {
                                if (z.Id.Equals(x.firstUserId))
                                {
                                    model.toinivitations.ListFriends.SetValue(z.Email, licz);
                                    licz++;
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        ViewBag.mess = null;
                    }
                }
            }
            catch (Exception)
            {
            }


            try
            {
                // sprawdzanie URL, jeśli nie rzuci wyjątku to znaczy, że użytkownik wszedł do pokoju
                string   url        = Request.Url.AbsoluteUri;
                string[] splitedUrl = url.Split('?');
                string   roomName   = splitedUrl[1];

                // sprawdzanie czy pokój isnieje
                if (roomNotExists(roomName))
                {
                    return(View("RoomNotExist"));
                }

                // inicjalizacja pustego hasła (pokój nie ma hasła)
                if (string.IsNullOrEmpty(password))
                {
                    password = "";
                }

                // sprawdzanie hasła do pokoju
                if (checkPass(roomName, password))
                {
                    using (var db = new conferenceEntities2())
                    {
                        // usuwanie zaproszeń do pokoju (jeśli były)
                        int roomId           = db.Rooms.First(r => r.name == roomName).roomId;
                        var invitationsArray = (from invit in db.RoomsInvitations
                                                where invit.invitee == user.Id && invit.roomId == roomId
                                                select invit).ToArray();
                        foreach (var i in invitationsArray)
                        {
                            db.RoomsInvitations.Remove(i);
                        }//foreach
                        db.SaveChanges();

                        // dodawanie uzytkownika do aktywnego pokoju
                        addUserToRoom(roomId, user.Id);
                    }//using

                    // lista znajomych
                    model.tofriends = getFriends(getUser());

                    return(View(model));
                }//if

                ViewBag.roomName = roomName;
                ViewBag.pass     = password;
                try
                {
                    ViewBag.Nick = user.Email.ToString();
                }
                catch (NullReferenceException)
                {
                    // nic nie rób
                }
                return(View("RoomPassword"));
            }//try
            catch (IndexOutOfRangeException)
            {
                // nic nie rób
            }

            // jeśli użytkownik jest zalogowany to wyświetl mu listę znajomych
            if (user != null)
            {
                model.tofriends = getFriends(user);
                return(View(model));
            }//if

            return(View());
        }