コード例 #1
0
        //Metod som hämtar profilinfo när en användare är inloggad samt om profilen är aktiverad.
        public ActionResult ListProfileData()
        {
            var user = User.Identity.GetUserId();

            // Ser till att man inte kommer åt sidan om man är utloggad.
            if (user == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            var ctx = new MVCDbContext();

            var profileActive = ctx.Profile.FirstOrDefault(p => p.ProfileId == user);

            //Kollar så att profilen inte är avaktiverad.
            if (!profileActive.IsActive)
            {
                return(RedirectToAction("EditProfileData", "Profile"));
            }

            // Lägger till de meddelanden vars mottagare är den inloggade användaren.
            var viewModel = new ImageIndexViewModel
            {
                Profiles = ctx.Profile.ToList(),
                Messages = ctx.Message.Where(m => m.RecieverId == user).ToList()
            };

            return(View(viewModel));
        }
コード例 #2
0
        public ActionResult CategoryPage()
        {
            var userid = User.Identity.GetUserId();

            if (userid == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            var viewmodel = new FriendIndexViewModel();
            var ctx       = new MVCDbContext();
            var profiles  = new List <Profile>();

            //Kollar om variabeln existerar ännu, och isåfall ta ut värdet därifrån.
            if (Session["categorySaved"] != null)
            {
                var chosencategory = (Session["categorySaved"]).ToString();
                viewmodel.Category = chosencategory;
                //Hämtar ut de kategori-rader som har den specifika kategorin
                var categories = ctx.Category.Where(c => c.CategoryName == chosencategory).ToList();
                foreach (var c in categories)
                {
                    //Plockar ut profilerna som finns i category-tabellen och den som kategoriserat dem är användaren.
                    if (c.CategorizerId.Equals(userid))
                    {
                        var profile = ctx.Profile.FirstOrDefault(p => p.ProfileId == c.TheCategorizedId);
                        profiles.Add(profile);
                    }
                }
            }
            profiles.RemoveAll(x => x.IsActive == false);
            viewmodel.Profiles = profiles;

            return(View(viewmodel));
        }
コード例 #3
0
        public GraphQLAppQuery(MVCDbContext contextMVC)
        {
            Name = "Query";

            Field <ListGraphType <TeamType> >(
                "teams",
                resolve: context => contextMVC.Team.ToList()
                );

            Field <TeamType>(
                "team",
                arguments: new QueryArguments(new QueryArgument <IntGraphType> {
                Name = "teamId"
            }),                                                                                    // lowercase
                resolve: context => contextMVC.Team.FindAsync(context.GetArgument <int>("teamId")) // lowercase
                );

            Field <ListGraphType <PlayerType> >(
                "players",
                resolve: context => contextMVC.Player.ToList()
                );

            Field <PlayerType>(
                "player",
                arguments: new QueryArguments(new QueryArgument <IntGraphType> {
                Name = "playerId"
            }),
                resolve: context => contextMVC.Player.FindAsync(context.GetArgument <int>("playerId"))
                );
        }
コード例 #4
0
        public void ActivateAccount(string userid)
        {
            var ctx     = new MVCDbContext();
            var profile = ctx.Profile.FirstOrDefault(u => u.ProfileId == userid);

            profile.IsActive = true;
            ctx.SaveChanges();
        }
コード例 #5
0
 protected override void Dispose(bool disposing)
 {
     if (dbContext != null)
     {
         dbContext.Dispose();
     }
     dbContext = null;
     base.Dispose(disposing);
 }
コード例 #6
0
        public PlayerType(MVCDbContext _contextMVC)
        {
            Name = "Player";
            Field(x => x.PlayerId).Description("The id of the Player");
            Field(x => x.Name).Description("The name of the Player");

            Field <TeamType>("Team",
                             resolve: context => _contextMVC.Team.FindAsync(context.Source.TeamId));
        }
コード例 #7
0
        public void DeleteMessage(string messageid)
        {
            var ctx        = new MVCDbContext();
            int messageInt = Int32.Parse(messageid);
            var message    = ctx.Message.FirstOrDefault(u => u.MessageId == messageInt);

            ctx.Message.Remove(message);
            ctx.SaveChanges();
        }
コード例 #8
0
        public Course Post(Course course)
        {
            using (MVCDbContext entities = new MVCDbContext())
            {
                entities.Courses.Add(course);
                entities.SaveChanges();
            }

            return(course);
        }
コード例 #9
0
        public ActionResult EditProfileData()
        {
            var ctx     = new MVCDbContext();
            var userid  = User.Identity.GetUserId();
            var profile = new Profile();

            profile = ctx.Profile.FirstOrDefault(u => u.ProfileId == userid);

            return(View(profile));
        }
コード例 #10
0
ファイル: TeamType.cs プロジェクト: pedrynteam/Teach_MGT_Team
 public TeamType(MVCDbContext _contextMVC)
 {
     Name = "Team";
     Field(x => x.TeamId).Description("The id of the Team");
     Field(x => x.Name).Description("The name of the Team");
     Field <ListGraphType <PlayerType> >(
         "players",
         resolve: context => _contextMVC.Player.Where(x => x.TeamId == context.Source.TeamId)
         );
 }
コード例 #11
0
        public ActionResult Dismiss(string profileId)
        {
            var ctx     = new MVCDbContext();
            var userId  = User.Identity.GetUserId();
            var profil  = new Profile();
            var request = ctx.Request.FirstOrDefault(r => r.AskerId == profileId && r.GetterId == userId);

            ctx.Request.Remove(request);
            ctx.SaveChanges();

            return(RedirectToAction("Index", "Request"));
        }
コード例 #12
0
        public void AddMessage(string textObj, string recieverObj)
        {
            var ctx     = new MVCDbContext();
            var message = new Message
            {
                AuthorId    = User.Identity.GetUserId(),
                RecieverId  = recieverObj,
                Date        = DateTime.Now,
                MessageText = textObj
            };

            ctx.Message.Add(message);
            ctx.SaveChanges();
        }
コード例 #13
0
        public ActionResult EditProfileData(Profile model)
        {
            var     ctx    = new MVCDbContext();
            var     userID = User.Identity.GetUserId();
            Profile pro    = ctx.Profile.FirstOrDefault(u => u.ProfileId == userID);

            pro.FirstName = model.FirstName;
            pro.LastName  = model.LastName;
            pro.Gender    = model.Gender;
            pro.Age       = model.Age;
            pro.Sexuality = model.Sexuality;
            ctx.SaveChanges();

            return(RedirectToAction("ListProfileData"));
        }
コード例 #14
0
        public ActionResult Index()
        {
            var userId = User.Identity.GetUserId();
            var ctx    = new MVCDbContext();
            //Hämtar ut alla profiler förutom användaren som är inloggad, och randomizar listan)
            var chosenProfiles = ctx.Profile.Where(p => p.ProfileId != userId).OrderBy(p => Guid.NewGuid()).ToList();
            var viewModel      = new ProfileIndexViewModel
            {
                Profiles = chosenProfiles,
            };

            viewModel.Profiles.RemoveAll(x => x.IsActive == false);

            return(View(viewModel));
        }
コード例 #15
0
        public ActionResult Index(string profileId)
        {
            var userId = User.Identity.GetUserId();

            if (userId == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            // Sparar ner profilid i en variabel som kan nås i SendRequest-metoden när man skickar vänförfrågan.
            Session["usid"] = profileId;
            var ctx = new MVCDbContext();

            var profileActive = ctx.Profile.FirstOrDefault(p => p.ProfileId == userId);

            // Om ens konto är inaktiverat kommer man redirectas till ens redigeringssida.
            if (!profileActive.IsActive)
            {
                return(RedirectToAction("EditProfileData", "Profile"));
            }

            var profileList   = ctx.Profile.ToList();
            var chosenProfile = new ChosenProfileView();
            var profileExist  = ctx.Profile.FirstOrDefault(p => p.ProfileId == profileId);

            // Tre olika variabler som kollar ifall man redan har skickat förfrågan, har fått en förfrågan, eller är vänner redan.
            var alreadyFriend = ctx.Relation.FirstOrDefault
                                    (p => (p.FriendId == profileId || p.UserId == profileId) && (p.FriendId == userId || p.UserId == userId));

            var pendingRequest = ctx.Request.FirstOrDefault
                                     (p => (p.GetterId == userId) && (p.AskerId == profileId));

            var alreadySent = ctx.Request.FirstOrDefault
                                  (p => (p.AskerId == userId) && (p.GetterId == profileId));

            chosenProfile.Relation    = alreadyFriend;
            chosenProfile.Requests    = pendingRequest;
            chosenProfile.SentRequest = alreadySent;

            if (profileExist != null)
            {
                chosenProfile.Messages         = ctx.Message.ToList();
                chosenProfile.Profile          = profileExist;
                chosenProfile.personalMessages = ctx.Message.Where(m => m.RecieverId == profileId).OrderByDescending(m => m.Date).ToList();
            }

            return(View(chosenProfile));
        }
コード例 #16
0
        public ActionResult UploadPhoto(HttpPostedFileBase ImagePath)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (ImagePath != null)
                    {
                        //Validering som ser till att filformatet måste vara JPEG, JPG eller PNG.
                        var checkextension = Path.GetExtension(ImagePath.FileName).ToLower();

                        if (checkextension.ToLower().Contains(".jpg") || checkextension.ToLower().Contains(".jpeg") || checkextension.Contains(".png"))
                        {
                            //Ser till att sökvägen för bilden sparas likadant
                            string path         = System.IO.Path.Combine(Server.MapPath("~/Images"), System.IO.Path.GetFileName(ImagePath.FileName));
                            string relativePath = System.IO.Path.Combine("~/Images/" + ImagePath.FileName);

                            var     ctx     = new MVCDbContext();
                            var     userId  = User.Identity.GetUserId();
                            Profile profile = ctx.Profile.FirstOrDefault(p => p.ProfileId == userId);

                            if (profile != null)
                            {
                                profile.ImagePath = relativePath;
                                ImagePath.SaveAs(path);
                                ctx.SaveChanges();
                                ViewBag.FileStatus = "File uploaded successfully.";
                            }
                            else
                            {
                                ViewBag.FileStatus = "Write in your information first.";
                            }
                        }
                        else
                        {
                            return(RedirectToAction("EditProfileData"));
                        }
                    }
                }
                catch (Exception)
                {
                    ViewBag.FileStatus = "Error while file uploading.";
                }
            }
            return(RedirectToAction("ListProfileData"));
        }
コード例 #17
0
        public ActionResult Accept(string profileId)
        {
            var ctx = new MVCDbContext();
            var req = ctx.Request.FirstOrDefault(p => p.AskerId == profileId);

            var relation = new Relation();

            relation.UserId   = User.Identity.GetUserId();
            relation.FriendId = profileId;

            // Tar bort förfrågan från request-tabellen och lägger in i relation-tabellen istället.
            ctx.Request.Remove(req);
            ctx.Relation.Add(relation);
            ctx.SaveChanges();

            return(RedirectToAction("Index", "Request"));
        }
コード例 #18
0
        public ActionResult AddAndEditProfileData(Profile model, HttpPostedFileBase ImagePath)
        {
            var ctx = new MVCDbContext();
            var p   = new Profile
            {
                ProfileId = User.Identity.GetUserId(),
                FirstName = model.FirstName,
                LastName  = model.LastName,
                Age       = model.Age,
                Gender    = model.Gender,
                Sexuality = model.Sexuality,
                //Alla nya medlemmar får värdet true i databasen för att visa att de har aktiverade konton.
                IsActive = true
            };

            try
            {
                var checkextension = Path.GetExtension(ImagePath.FileName).ToLower();
                if (checkextension.ToLower().Contains(".jpg") || checkextension.ToLower().Contains(".jpeg") || checkextension.Contains(".png"))
                {
                    // path skapar sökväg för att lägga in bilden i projektmappen Images
                    string path = System.IO.Path.Combine(Server.MapPath("~/Images"), System.IO.Path.GetFileName(ImagePath.FileName));
                    // relativePath skapar den relativa sökvägen som läggs in i databasen
                    string relativePath = System.IO.Path.Combine("~/Images/" + ImagePath.FileName);

                    var userId = User.Identity.GetUserId();
                    p.ImagePath = relativePath;
                    ctx.Profile.Add(p);
                    ImagePath.SaveAs(path);
                    ctx.SaveChanges();
                    ViewBag.FileStatus = "Photo uploaded successfully.";
                }

                else
                {
                    ViewBag.FileStatus = "Only .JPEG and .PNG allowed";
                }
            }
            catch (Exception)
            {
                ViewBag.FileStatus = "Error while photo uploading.";
            }

            ViewBag.EditStatus = "Successful registration";
            return(RedirectToAction("ListProfileData"));
        }
コード例 #19
0
        private static SqliteConnection CreateDatabaseAndGetConnection()
        {
            var connection = new SqliteConnection("Data Source=:memory:");

            connection.Open();

            var options = new DbContextOptionsBuilder <MVCDbContext>()
                          .UseSqlite(connection)
                          .Options;

            using (var context = new MVCDbContext(options))
            {
                context.GetService <IRelationalDatabaseCreator>().CreateTables();
            }

            return(connection);
        }
コード例 #20
0
        //Metod som hämtar profildata för den inloggade profilen samt sparar ner denna info i en XML-fil.
        public ActionResult DownloadProfile()
        {
            var ctx     = new MVCDbContext();
            var userid  = User.Identity.GetUserId();
            var profile = ctx.Profile.FirstOrDefault(p => p.ProfileId == userid);

            //Skapar namnet på filen och sökvägen där filen ska skapas
            var path = System.Web.Hosting.HostingEnvironment.MapPath("~/SavedProfiles/" + userid + ".txt");

            var serializer = new XmlSerializer(typeof(Profile));
            var writer     = new StreamWriter(path);

            serializer.Serialize(writer, profile);
            writer.Close();

            return(RedirectToAction("EditProfileData"));
        }
コード例 #21
0
        public ActionResult SearchProfile(string SearchText)
        {
            var userId = User.Identity.GetUserId();

            if (userId == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            var ctx      = new MVCDbContext();
            var profiles = ctx.Profile.Where(p => p.ProfileId != userId).ToList();

            var profileActive = ctx.Profile.FirstOrDefault(p => p.ProfileId == userId);

            if (!profileActive.IsActive)
            {
                return(RedirectToAction("EditProfileData", "Profile"));
            }

            if (!string.IsNullOrEmpty(SearchText))
            {
                string[]       names = SearchText.Split(' ');
                List <Profile> result;
                if (names.Length == 1)
                {
                    result = profiles.Where(
                        p => (p.FirstName.ToLower().Contains(SearchText.ToLower()) ||
                              p.LastName.ToLower().Contains(SearchText.ToLower())) &&
                        p.IsActive == true
                        ).ToList();
                }
                else
                {
                    result = profiles.Where(p => (p.FirstName.ToLower().Contains(names[0].ToLower()) && p.LastName.ToLower().Contains(names[1].ToLower())) && p.IsActive == true).ToList();
                }


                return(View(result));
            }
            else
            {
                profiles.Clear();
                return(View(profiles));
            }
        }
コード例 #22
0
        public bool CheckCompatibility(string profileid)
        {
            var ctx     = new MVCDbContext();
            var userid  = User.Identity.GetUserId();
            var user    = ctx.Profile.FirstOrDefault(p => p.ProfileId == userid);
            var profil1 = ctx.Profile.FirstOrDefault(p => p.ProfileId == profileid);

            var  userGender    = user.Gender;
            var  profileGender = profil1.Gender;
            bool sameGender    = false;
            bool isCompatible  = false;

            //Validering som matchar de olika profilerna med varandra.
            if (userGender == profileGender)
            {
                if (user.Gender != "Non-Binary")
                {
                    sameGender = true;
                }
            }

            if ((user.Sexuality == "Heterosexual" && profil1.Sexuality == "Heterosexual") && sameGender == false)
            {
                isCompatible = true;
            }

            if ((user.Sexuality == "Homosexual" && profil1.Sexuality == "Homosexual") && sameGender == true)
            {
                isCompatible = true;
            }

            if (user.Gender == "Non-Binary" && profil1.Gender == "Non-Binary")
            {
                isCompatible = true;
            }

            if ((user.Sexuality == "Bisexual" && profil1.Sexuality == "Bisexual") && (sameGender == true || sameGender == false))
            {
                isCompatible = true;
            }

            return(isCompatible);
        }
コード例 #23
0
        public void InsertVisit(string profileid)
        {
            var ctx        = new MVCDbContext();
            var userid     = User.Identity.GetUserId();
            var visitExist = ctx.Visitor.FirstOrDefault(v => v.UserId == profileid && v.VisitorId == userid);

            if (visitExist != null)
            {
                ctx.Visitor.Remove(visitExist);
            }
            var newVisit = new Visit
            {
                VisitorId = userid,
                UserId    = profileid
            };

            ctx.Visitor.Add(newVisit);
            ctx.SaveChanges();
        }
コード例 #24
0
        // GET: FriendList
        public ActionResult Index()
        {
            var userId = User.Identity.GetUserId();

            if (userId == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            var ctx = new MVCDbContext();

            var profileActive = ctx.Profile.FirstOrDefault(p => p.ProfileId == userId);

            if (!profileActive.IsActive)
            {
                return(RedirectToAction("EditProfileData", "Profile"));
            }

            var viewmodel = new FriendIndexViewModel();

            //Fyller listan med de rader där användaren är den som kategoriserar.
            viewmodel.Categories = ctx.Category.Where(p => p.CategorizerId == userId).ToList();
            viewmodel.Relations  = ctx.Relation.ToList();
            var friendList = new List <Profile>();

            foreach (var r in viewmodel.Relations)
            {
                if (r.UserId.Equals(userId) || r.FriendId.Equals(userId))
                {
                    //Lägger till de profiler som personen har en relation med.
                    var profile = ctx.Profile.FirstOrDefault(
                        p => (p.ProfileId == r.FriendId || p.ProfileId == r.UserId) && (p.ProfileId != userId));
                    friendList.Add(profile);
                }
            }

            friendList.RemoveAll(x => x.IsActive == false);

            viewmodel.Profiles = friendList;

            return(View(viewmodel));
        }
コード例 #25
0
        public ActionResult RemoveFriend(string profileId)
        {
            var ctx    = new MVCDbContext();
            var userId = User.Identity.GetUserId();
            //Hämtar den specifika relationen så den kan raderas.
            var person = ctx.Relation.FirstOrDefault(p => (p.UserId == profileId || p.FriendId == profileId) && (p.UserId == userId || p.FriendId == userId));

            // Tar bort kategorin från databasen om användaren har gett en till den andra personen.
            var category = ctx.Category.FirstOrDefault(p => p.CategorizerId == userId && p.TheCategorizedId == profileId);

            if (category != null)
            {
                ctx.Category.Remove(category);
            }

            ctx.Relation.Remove(person);
            ctx.SaveChanges();

            return(RedirectToAction("Index", "FriendList"));
        }
コード例 #26
0
        public void ChangeCategory(string category, string id)
        {
            var ctx         = new MVCDbContext();
            var user        = User.Identity.GetUserId();
            var newCategory = new Category
            {
                CategorizerId    = user,
                TheCategorizedId = id,
                CategoryName     = category
            };

            var categoryExist = ctx.Category.FirstOrDefault(c => c.CategorizerId == user && c.TheCategorizedId == id);

            if (categoryExist != null)
            {
                ctx.Category.Remove(categoryExist);
            }
            ctx.Category.Add(newCategory);
            ctx.SaveChanges();
        }
コード例 #27
0
        //Räknar hur många förfrågningar den inloggade användaren har och returnerar antalet till headerns notisfunktion.
        public int CountRequest()
        {
            var count    = 0;
            var ctx      = new MVCDbContext();
            var userID   = User.Identity.GetUserId();
            var request  = ctx.Request.Where(r => r.GetterId == userID).ToList();
            var profiles = ctx.Profile.ToList();

            count = request.Count();

            foreach (var r in request)
            {
                // Tar bort från antalet om det finns profiler som är avaktiverade som skickat förfrågan till användaren.
                if (r.Asker.IsActive == false)
                {
                    count--;
                }
            }

            return(count);
        }
コード例 #28
0
        public ActionResult Index()
        {
            var user = User.Identity.GetUserId();

            if (user == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            var ctx = new MVCDbContext();

            var profileActive = ctx.Profile.FirstOrDefault(p => p.ProfileId == user);

            if (!profileActive.IsActive)
            {
                return(RedirectToAction("EditProfileData", "Profile"));
            }

            var viewmodel = new ProfileIndexViewModel();

            // Hämtar de förfrågningar som hör till användaren.
            viewmodel.Requests = ctx.Request.Where(p => p.GetterId == user).ToList();
            var profiles = new List <Profile>();

            //Hämtar ut de profiler som skrivit meddelandena.
            foreach (var r in viewmodel.Requests)
            {
                if (r.GetterId.Equals(user))
                {
                    var profile = ctx.Profile.FirstOrDefault(p => p.ProfileId == r.AskerId);
                    profiles.Add(profile);
                }
            }

            // Tar bort de profiler som är avaktiverade.
            profiles.RemoveAll(x => x.IsActive == false);
            viewmodel.Profiles = profiles;

            return(View(viewmodel));
        }
コード例 #29
0
        public List <Profile> GetVisits()
        {
            var userid      = User.Identity.GetUserId();
            var ctx         = new MVCDbContext();
            var visitlist   = ctx.Visitor.ToList();
            var profilelist = new List <Profile>();

            foreach (var v in visitlist)
            {
                if (v.UserId == userid)
                {
                    var profile = ctx.Profile.FirstOrDefault(p => p.ProfileId == v.VisitorId);
                    if (profilelist.Count < 5)
                    {
                        profilelist.Add(profile);
                    }
                }
            }

            profilelist.Reverse();

            return(profilelist);
        }
コード例 #30
0
        public ActionResult SendRequest()
        {
            // Tar värdet som tidigare lagrats i usid-variabeln från metoden som laddade in sidan.
            var profilevis = (Session["usid"]).ToString();
            var userId     = User.Identity.GetUserId();
            var ctx        = new MVCDbContext();
            // Kollar om det redan finns en förfrågan.
            var RequestPending = ctx.Request.FirstOrDefault(r => r.GetterId == profilevis && r.AskerId == userId);

            if (RequestPending == null)
            {
                var request = new FriendRequest
                {
                    AskerId  = userId,
                    GetterId = profilevis
                };

                ctx.Request.Add(request);
                ctx.SaveChanges();
            }

            return(RedirectToAction("Index", "VisitPage", new { profileId = profilevis }));
        }