예제 #1
0
        public ActionResult Upload(HttpPostedFileBase postedFile, int Id)
        {
            if (postedFile != null)
            {
                string path = Server.MapPath("~/Uploads/");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                postedFile.SaveAs(path + Path.GetFileName(postedFile.FileName));
                ViewBag.Message = "File uploaded successfully.";
            }

            var     path1 = Server.MapPath("~/Uploads/") + postedFile.FileName;
            var     lista = CSVToList(path1);
            Chapter ch    = db.Chapters.Find(Id);

            foreach (var a in lista)
            {
                Console.WriteLine(a.Word1 + a.Word2);
                if (!ch.FlashCards.Exists(c => c.Word1 == a.Word1 && c.Word2 == a.Word1))
                {
                    ch.FlashCards.Add(a);
                }
            }

            db.Entry(ch).State = EntityState.Modified;
            db.SaveChanges();
            System.IO.File.Delete(path1);

            return(RedirectToAction("Details" + "/" + Id));
        }
예제 #2
0
        public ActionResult  AddChapter(string Id, string Name)
        {
            Course course = db.Courses.Find(Int32.Parse(Id));
            int    rc     = course.Chapters.FindLastIndex(a => a.ID > 0);

            rc++;
            course.Chapters.Add(new Chapter
            {
                ID     = rc,
                Name   = Name,
                UserID = User.Identity.Name
            });;
            db.Entry(course).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Details" + "/" + Id));
        }
예제 #3
0
        public bool Add(Object o)
        {
            try
            {
                switch (o)
                {
                case User u:
                    _fscontext.Add(o);
                    _fscontext.SaveChanges();
                    return(true);

                case DeckOfCards d:
                    d.Subject = _fscontext.Subjects.Single(x => x.SubjectID == d.Subject.SubjectID);
                    d.User    = _fscontext.Users.Single(x => x.Username == d.User.Username);

                    List <Card> cards = d.Cards;

                    _fscontext.Add(d);
                    _fscontext.SaveChanges();

                    int lastDeckOfCardsID = _fscontext.DecksOfCards.Max(x => x.DeckOfCardsID);

                    foreach (Card c in cards)
                    {
                        c.DeckOfCards.DeckOfCardsID = lastDeckOfCardsID;
                        _fscontext.Add(c);
                    }

                    return(true);

                case Card c:
                    c.DeckOfCards = _fscontext.DecksOfCards.Single(x => x.DeckOfCardsID == c.DeckOfCards.DeckOfCardsID);

                    _fscontext.Add(c);
                    _fscontext.SaveChanges();
                    return(true);

                case Like l:
                    l.User        = _fscontext.Users.Single(x => x.Username == l.User.Username);
                    l.DeckOfCards = _fscontext.DecksOfCards.Single(x => x.DeckOfCardsID == l.DeckOfCards.DeckOfCardsID);

                    Like lajkovao = _fscontext.Likes.Where(x => x.User.Username == l.User.Username && x.DeckOfCards.DeckOfCardsID == l.DeckOfCards.DeckOfCardsID).Cast <Like>().FirstOrDefault();

                    if (lajkovao != null)
                    {
                        return(false);
                    }

                    _fscontext.Add(l);
                    _fscontext.SaveChanges();
                    return(true);

                case Comment c:
                    c.User        = _fscontext.Users.Single(x => x.Username == c.User.Username);
                    c.DeckOfCards = _fscontext.DecksOfCards.Single(x => x.DeckOfCardsID == c.DeckOfCards.DeckOfCardsID);

                    _fscontext.Add(c);
                    _fscontext.SaveChanges();
                    return(true);

                case SubComment s:
                    s.Comment        = _fscontext.Comments.Single(x => x.CommentID == s.Comment.CommentID);
                    s.SubCommentedBy = _fscontext.Users.Single(x => x.Username == s.SubCommentedBy.Username);

                    _fscontext.Add(s);
                    _fscontext.SaveChanges();
                    return(true);

                default:
                    return(false);
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
예제 #4
0
        public ActionResult Index(int?page, int?nr, int?know)
        {
            Random rnd = new Random();

            var Chapter    = db.Chapters.Find(nr);
            var flashCards = Chapter.FlashCards.ToList();
            int pageSize   = 1;

            int pageNumber = page.GetValueOrDefault(0);

            ViewData["nr"] = nr;
            pageNumber--;
            if (know == null)
            {
                String         userid  = User.Identity.GetUserName();
                List <Profile> profile = db.Profiles.ToList();
                Profile        profil  = profile.Find(x => x.UserName == userid);
                Test           test    = new Test();
                db.Tests.Add(test);

                db.SaveChanges();
                profil.Tests.Add(test);
                pageNumber = rnd.Next(flashCards.Count);

                db.Entry(profil).State = EntityState.Modified;
                db.SaveChanges();
            }
            else if (know == 0)
            {
                String         userid  = User.Identity.GetUserName();
                List <Profile> profile = db.Profiles.ToList();
                Profile        profil  = profile.Find(x => x.UserName == userid);
                List <Test>    tests   = db.Tests.ToList();
                var            test    = tests.OrderByDescending(a => a.ID).First();

                int nrq = test.Questions.Count + 1;
                test.Questions.Add(new Question {
                    ID = nrq, flashCard = flashCards[pageNumber], Score = 0
                });
                List <Answer> answers = db.Answers.Where(a => a.UserID == User.Identity.Name).ToList();
                Answer        answer  = answers.Find(a => a.FlashCard.ID == flashCards[pageNumber].ID);
                if (answer == null)
                {
                    if (db.Answers.Count() == 0)
                    {
                        Answer answer1 = new Answer {
                            ID = 0, FlashCard = flashCards[pageNumber], UserID = User.Identity.Name, CorrectAnswers = 1
                        };
                        db.Answers.Add(answer1);
                    }
                    else
                    {
                        int    a       = db.Answers.OrderByDescending(b => b.ID).Select(b => b.ID).First();
                        Answer answer1 = new Answer {
                            ID = a, FlashCard = flashCards[pageNumber], UserID = User.Identity.Name, CorrectAnswers = 1
                        };
                        db.Answers.Add(answer1);
                    }
                }
                else
                {
                    answer.CorrectAnswers  = 0;
                    db.Entry(answer).State = EntityState.Modified;
                }

                profil.Tests.Add(test);



                db.Entry(profil).State = EntityState.Modified;


                db.Entry(test).State = EntityState.Modified;
                db.SaveChanges();



                List <int> ids = new List <int>();
                foreach (var a in test.Questions.Where(b => b.Score == 1))
                {
                    ids.Add(flashCards.IndexOf(a.flashCard));
                }

                int i = 0;
                do
                {
                    i++;
                    pageNumber = rnd.Next(flashCards.Count);
                }while (ids.Contains(pageNumber) && i < 100);
            }

            else if (know == 1)
            {
                String         userid  = User.Identity.GetUserName();
                List <Profile> profile = db.Profiles.ToList();
                Profile        profil  = profile.Find(x => x.UserName == userid);
                List <Test>    tests   = db.Tests.ToList();

                var test = tests.OrderByDescending(a => a.ID).First();

                int nrq = test.Questions.Count + 1;
                Console.WriteLine(flashCards[pageNumber].Word1 + " " + flashCards[pageNumber].Word2);
                Question question = new Question {
                    ID = nrq, flashCard = flashCards[pageNumber], Score = 1
                };

                List <Answer> answers = db.Answers.Where(a => a.UserID == User.Identity.Name).ToList();
                Answer        answer  = answers.Find(a => a.FlashCard.ID == flashCards[pageNumber].ID);
                if (answer == null)
                {
                    if (db.Answers.Count() == 0)
                    {
                        Answer answer1 = new Answer {
                            ID = 0, FlashCard = flashCards[pageNumber], UserID = User.Identity.Name, CorrectAnswers = 1
                        };
                        db.Answers.Add(answer1);
                    }
                    else
                    {
                        int    a       = db.Answers.OrderByDescending(b => b.ID).Select(b => b.ID).First();
                        Answer answer1 = new Answer {
                            ID = a, FlashCard = flashCards[pageNumber], UserID = User.Identity.Name, CorrectAnswers = 1
                        };
                        db.Answers.Add(answer1);
                    }
                }
                else
                {
                    answer.CorrectAnswers  = +1;
                    db.Entry(answer).State = EntityState.Modified;
                }


                db.Questions.Add(question);

                test.Questions.Add(question);
                profil.Tests.Add(test);



                db.Entry(profil).State = EntityState.Modified;
                db.Entry(test).State   = EntityState.Modified;
                db.SaveChanges();



                List <int> ids = new List <int>();
                foreach (var a in test.Questions.Where(b => b.Score == 1))
                {
                    ids.Add(flashCards.IndexOf(a.flashCard));
                }

                int i = 0;
                do
                {
                    i++;
                    pageNumber = rnd.Next(flashCards.Count);
                }while (ids.Contains(pageNumber) && i < 100);
            }


            pageNumber++;
            if (know == null)
            {
                return(View(flashCards.ToPagedList(pageNumber, pageSize)));
            }
            else
            {
                String         userid  = User.Identity.GetUserName();
                List <Profile> profile = db.Profiles.ToList();
                Profile        profil  = profile.Find(x => x.UserName == userid);
                List <Test>    tests   = db.Tests.ToList();
                var            test    = tests.OrderByDescending(a => a.ID).First();
                if (test.Questions.Count >= 20)
                {
                    return(RedirectToAction("Stats/" + test.ID));
                }
            }
            return(View(flashCards.ToPagedList(pageNumber, pageSize)));
        }