コード例 #1
0
ファイル: WordsService.cs プロジェクト: KhorAMus/Promit2
        public async Task CreateDictionary(string fileName)
        {
            Dictionary <string, int> wordToCount = await _fileReader.ReadFile(fileName);

            await ClearDictionary();

            var wordEntities = wordToCount.Select((wordAndCount) => new Word()
            {
                Count = wordAndCount.Value, Value = wordAndCount.Key
            })
                               .ToList();
            await _context.Words.AddRangeAsync(wordEntities);

            _context.SaveChanges();
        }
コード例 #2
0
        //public ActionResult CreateNewDuplicate()
        //{
        //    try
        //    {
        //        using (var ctx = new WordsContext())
        //        {
        //            var model = new Models.DuplicatesModel();

        //            //CREATE NEW DUPLICATE
        //            int order = ctx.Duplicates.OrderByDescending(i => i.Order).Take(1).Select(x => x.Order).FirstOrDefault();
        //            order++;
        //            var dup = ctx.Duplicates.Add(new Duplicate() { Answer1 = "xxx", Answer2 = "xxx", Answer3 = "xxx", Answer4 = "xxx", Order = order });
        //            ctx.SaveChanges();
        //            model.Duplicate = dup;

        //            return View(model);
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //}

        public ActionResult CreateCollection()
        {
            using (var ctx = new WordsContext())
            {
                var collection = new Collection()
                {
                    Name = "Empty" + DateTime.Now.Millisecond
                };

                var dup = new List <Duplicate>();
                for (int i = 0; i < 10; i++)
                {
                    dup.Add(new Duplicate()
                    {
                        Order      = i,
                        Collection = collection
                    });
                }
                //collection.Duplicates = dup;
                collection.Type = collectionType.duplicates;
                ctx.Collections.Add(collection);
                ctx.SaveChanges();
            }
            Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
            return(RedirectToAction("Index", "Duplicates"));
        }
コード例 #3
0
        public ActionResult ManageDuplicatesAjax(string duplicateid, string question, string answer1, string answer2, string answer3, string answer4, bool answer1iscorrect, bool answer2iscorrect, bool answer3iscorrect, bool answer4iscorrect)
        {
            if (!(Session["IsAdmin"] != null && Session["IsAdmin"].ToString().ToUpper() == "TRUE"))
            {
                return(Content("Not allowed", MediaTypeNames.Text.Plain));
            }


            using (var ctx = new WordsContext())
            {
                var dup = ctx.Duplicates.Where(x => x.DuplicateId.ToString() == duplicateid).SingleOrDefault();
                dup.Question = question;

                dup.Answer1 = answer1;
                dup.Answer2 = answer2;
                dup.Answer3 = answer3;
                dup.Answer4 = answer4;

                dup.Answer1IsCorrect = answer1iscorrect;
                dup.Answer2IsCorrect = answer2iscorrect;
                dup.Answer3IsCorrect = answer3iscorrect;
                dup.Answer4IsCorrect = answer4iscorrect;
                ctx.ChangeTracker.DetectChanges(); //alternative is to set  context.Configuration.AutoDetectChangesEnabled = true
                ctx.SaveChanges();
            }

            //  Response.StatusCode = (int)HttpStatusCode.OK;
            return(Content("Message sent!", MediaTypeNames.Text.Plain));
            //  return View(model);
        }
コード例 #4
0
        public ActionResult CreateCollection()
        {
            using (var ctx = new WordsContext())
            {
                var collection = new Collection()
                {
                    Name = "Empty" + DateTime.Now.Millisecond
                };

                var words = new List <Word>();
                for (int i = 0; i < 10; i++)
                {
                    words.Add(new Word()
                    {
                        Part1      = "",
                        Part2      = "",
                        Part3      = "",
                        Part4      = "",
                        Collection = collection
                    });
                }
                //collection.Words = words;
                collection.Type = collectionType.words;
                ctx.Collections.Add(collection);
                ctx.SaveChanges();
            }
            Response.StatusCode = (int)HttpStatusCode.OK;
            return(RedirectToAction("Index", "Words"));
        }
コード例 #5
0
        public JsonResult AddNewLanguageWords()
        {
            bool isAuthenticated = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated;

            if (!isAuthenticated)
            {
                return(null);
            }

            using (wordContext = new WordsContext())
            {
                usercl = wordContext.Users.Where(x => x.name == User.Identity.Name).FirstOrDefault();
                IEnumerable <UserWord> userLanguageWords = usercl.usersWords.Where(x => x.word.foreignLanguage.id == usercl.settings.currentLangage.id);
                IQueryable <Word>      newLanguageWords  = wordContext.Words.Where(x => x.foreignLanguage.id == usercl.settings.currentLangage.id);
                int numberOfNewWords = 0;
                foreach (Word word in newLanguageWords)
                {
                    if (userLanguageWords.FirstOrDefault(x => x.word.id == word.id) == null)
                    {
                        usercl.usersWords.Add(new UserWord()
                        {
                            lastTimeAccesed = DateTime.Now, levelOfKnowledge = 0, user = usercl, word = word
                        });
                        numberOfNewWords++;
                    }
                }

                wordContext.SaveChanges();

                return(Json(numberOfNewWords, JsonRequestBehavior.AllowGet));
            }
        }
コード例 #6
0
        public ActionResult Index([Bind(Include = "language,strategy")] LanguageAndStrategyContener lanStr)
        {
            using (wordcontext = new WordsContext())
            {
                UserCl usercl = wordcontext.Users.Where(x => x.name == User.Identity.Name).FirstOrDefault();
                if (usercl.languages.Where(x => x.id == lanStr.language.id).FirstOrDefault() == null)
                {
                    if (usercl.languages.ToList() == null)
                    {
                        usercl.languages = new List <Language>();
                    }
                    if (usercl.usersWords.ToList() == null)
                    {
                        usercl.usersWords = new List <UserWord>();
                    }
                    IQueryable <Word> languageWords = wordcontext.Words.Where(x => x.foreignLanguage.id == lanStr.language.id);
                    foreach (Word word in languageWords)
                    {
                        usercl.usersWords.Add(new UserWord()
                        {
                            lastTimeAccesed = DateTime.Now, levelOfKnowledge = 0, user = usercl, word = word
                        });
                    }
                    usercl.languages.Add(wordcontext.Languages.Where(x => x.id == lanStr.language.id).First());
                }
                usercl.settings.currentLangage           = usercl.languages.FirstOrDefault(x => x.id == lanStr.language.id);
                usercl.settings.numberOfWordsPerLearning = lanStr.strategy.id;
                wordcontext.SaveChanges();

                return(RedirectToAction("Index", "Home"));
            }
        }
コード例 #7
0
 public static void Add(Word word)
 {
     using (wordsContext = new WordsContext())
     {
         wordsContext.Words.Add(word);
         wordsContext.SaveChanges();
     }
 }
コード例 #8
0
 public ActionResult DeleteCollection(int collectionid)
 {
     using (var ctx = new WordsContext())
     {
         ctx.Words.RemoveRange(ctx.Words.Where(x => x.Collection.CollectionId == collectionid));
         ctx.Collections.RemoveRange(ctx.Collections.Where(x => x.CollectionId == collectionid));
         ctx.SaveChanges();
     }
     return(RedirectToAction("Index", "Words"));
 }
コード例 #9
0
 public JsonResult LevelUp(int option)
 {
     using (wordcontext = new WordsContext())
     {
         UserCl usercl = wordcontext.Users.Where(x => x.name == User.Identity.Name).FirstOrDefault();
         wordcontext.UserWords.Where(x => x.id == option).First().levelOfKnowledge = 10;
         wordcontext.SaveChanges();
         return(Json(JsonRequestBehavior.AllowGet));
     }
 }
コード例 #10
0
        public ActionResult Create([Bind(Include = "id,category,partOfSpeach,homeText,homeLanguage,foreignLanguage,foreignText,description")] Word word)
        {
            if (ModelState.IsValid)
            {
                Language     homeLanguage    = wordcontext.Languages.FirstOrDefault(x => x.id == word.homeLanguage.id);
                Language     foreignLanguage = wordcontext.Languages.FirstOrDefault(x => x.id == word.homeLanguage.id);
                PartOfSpeach partOfSpeach    = wordcontext.Parts.FirstOrDefault(x => x.id == word.partOfSpeach.id);
                Category     category        = wordcontext.Categories.FirstOrDefault(x => x.id == word.category.id);
                word.homeLanguage    = homeLanguage;
                word.foreignLanguage = foreignLanguage;
                word.partOfSpeach    = partOfSpeach;
                word.category        = category;
                wordcontext.Words.Add(word);
                wordcontext.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(word));
        }
コード例 #11
0
        public ActionResult UploadImage(string FileUpload, string DuplicateId, int Num)
        {
            if (!(Session["IsAdmin"] != null && Session["IsAdmin"].ToString().ToUpper() == "TRUE"))
            {
                return(Content("Not allowed", System.Net.Mime.MediaTypeNames.Text.Plain));
            }


            using (var ctx = new WordsContext())
            {
                using (var image = System.Drawing.Image.FromStream(Request.Files[0].InputStream))
                {
                    using (var scaledImage = ImageController.ScaleImage(image, 300, 300))
                    {
                        MemoryStream ms = new MemoryStream();
                        scaledImage.Save(ms, ImageFormat.Jpeg);

                        var dup = ctx.Duplicates.Where(x => x.DuplicateId.ToString() == DuplicateId).SingleOrDefault();
                        switch (Num)
                        {
                        case 0:
                            dup.ImageQuestion         = new Picture();
                            dup.ImageQuestion.Content = ms.ToArray();
                            break;

                        case 1:
                            dup.Image1         = new Picture();
                            dup.Image1.Content = ms.ToArray();
                            break;

                        case 2:
                            dup.Image2         = new Picture();
                            dup.Image2.Content = ms.ToArray();
                            break;

                        case 3:
                            dup.Image3         = new Picture();
                            dup.Image3.Content = ms.ToArray();
                            break;

                        case 4:
                            dup.Image4         = new Picture();
                            dup.Image4.Content = ms.ToArray();
                            break;
                        }


                        ctx.ChangeTracker.DetectChanges();
                        ctx.SaveChanges();
                    }
                }
            }

            return(Json(new { success = "Valid" }));
        }
コード例 #12
0
 public ActionResult ChangeCollectionName(string collectionname, int collectionid)
 {
     using (var ctx = new WordsContext())
     {
         var collectionToChange = ctx.Collections.Where(x => x.CollectionId == collectionid).SingleOrDefault();
         collectionToChange.Name = collectionname;
         ctx.ChangeTracker.DetectChanges();
         ctx.SaveChanges();
     }
     return(Json(new { success = "Valid" }));
 }
コード例 #13
0
        public ActionResult Upload(string File, int WordId, int PartId)
        {
            if (!(Session["IsAdmin"] != null && Session["IsAdmin"].ToString().ToUpper() == "TRUE"))
            {
                return(Content("Not allowed", System.Net.Mime.MediaTypeNames.Text.Plain));
            }


            var file = Request.Files[0];


            using (var ctx = new WordsContext())
            {
                var wordToChange = ctx.Words.Where(x => x.WordId == WordId).SingleOrDefault();
                var bytes        = SoundController.ReadFully(file.InputStream);
                //var data = ConvertWavToMp3(bytes);
                switch (PartId)
                {
                case 1:
                    wordToChange.Part1Sound = bytes;
                    break;

                case 2:
                    wordToChange.Part2Sound = bytes;
                    break;

                case 3:
                    wordToChange.Part3Sound = bytes;
                    break;

                case 4:
                    wordToChange.Part4Sound = bytes;
                    break;

                case 5:
                    wordToChange.Part5Sound = bytes;
                    break;

                case 6:
                    wordToChange.Part6Sound = bytes;
                    break;

                case 7:
                    wordToChange.Part7Sound = bytes;
                    break;
                }

                ctx.ChangeTracker.DetectChanges();
                ctx.SaveChanges();
            }

            return(Json(new { success = "Successfully uploaded file for Wordid:" + WordId + " PartId:" + PartId }));
        }
コード例 #14
0
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };

                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);

                    if (result.Succeeded)
                    {
                        var usercl = new UserCl {
                            name = user.UserName
                        };
                        var userSettings = new UserSettings {
                            currentLangage = null, numberOfWordsPerLearning = 20
                        };
                        WordsContext wc = new WordsContext();

                        wc.Settings.Add(userSettings);
                        usercl.settings = userSettings;
                        wc.Users.Add(usercl);
                        wc.SaveChanges();
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return(View(model));
        }
コード例 #15
0
 public static void Delete(string wordId)
 {
     using (wordsContext = new WordsContext())
     {
         foreach (var item in wordsContext.Words)
         {
             if (item.WordId == wordId)
             {
                 wordsContext.Words.Remove(item);
                 wordsContext.SaveChanges();
             }
         }
     }
 }
コード例 #16
0
        private void DoImportCategory(string obj)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "JSON file | *.json";
            openFileDialog.ShowDialog();
            //openFileDialog.ShowDialog() == DialogResult.OK --> erkennt DialgResult nicht????
            if (true)
            {
                if (openFileDialog.FileName.Trim() != string.Empty)
                {
                    using (StreamReader r = new StreamReader(openFileDialog.FileName))
                    {
                        string   json     = r.ReadToEnd();
                        Category category = JsonConvert.DeserializeObject <Category>(json);
                        Console.WriteLine("Test Import: " + category.WordGroups.Count);
                        words_db.Categories.Add(category);
                        words_db.SaveChanges();
                        Categories = words_db.Categories.Select(x => x).AsObservableCollection();
                    }
                }
            }
        }
コード例 #17
0
        public ActionResult CreateNewDuplicateCollection()
        {
            try
            {
                using (var ctx = new WordsContext())
                {
                    //var model = new Models.DuplicatesModel();
                    var col = new Collection()
                    {
                        Type = collectionType.duplicates, Name = "xxx"
                    };
                    ctx.Collections.Add(col);
                    ctx.SaveChanges();

                    //CREATE NEW DUPLICATE
                    for (int i = 0; i < 10; i++)
                    {
                        //int order = ctx.Duplicates.OrderByDescending(i => i.Order).Take(1).Select(x => x.Order).FirstOrDefault();
                        //order++;
                        var dup = new Duplicate()
                        {
                            Answer1 = "xxx", Answer2 = "xxx", Answer3 = "xxx", Answer4 = "xxx", Order = i + 1, Collection = col
                        };
                        ctx.Duplicates.Add(dup);
                        //col.Duplicates.Add(dup);
                    }
                    ctx.SaveChanges();
                    //modelDuplicate = dup;

                    return(null);// View(model);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #18
0
        public ActionResult ManageWords(string wordid, string partid, string content)
        {
            if (!(Session["IsAdmin"] != null && Session["IsAdmin"].ToString().ToUpper() == "TRUE"))
            {
                return(Content("Not allowed", MediaTypeNames.Text.Plain));
            }

            string Partid = partid.First().ToString().ToUpper() + partid.Substring(1);

            using (var ctx = new WordsContext())
            {
                var wordToChange = ctx.Words.Include(x => x.Image).Where(x => x.WordId.ToString() == wordid).SingleOrDefault();
                wordToChange.GetType().GetProperty(Partid).SetValue(wordToChange, content);

                ctx.ChangeTracker.DetectChanges(); //alternative is to set  context.Configuration.AutoDetectChangesEnabled = true
                ctx.SaveChanges();
            }
            Response.StatusCode = (int)HttpStatusCode.OK;
            return(Content("Message sent!", MediaTypeNames.Text.Plain));
        }
コード例 #19
0
        public ActionResult RemoveImage(string Id, int Num)
        {
            if (!(Session["IsAdmin"] != null && Session["IsAdmin"].ToString().ToUpper() == "TRUE"))
            {
                return(Content("Not allowed", System.Net.Mime.MediaTypeNames.Text.Plain));
            }

            using (var ctx = new WordsContext())
            {
                var dup = ctx.Duplicates.Where(x => x.DuplicateId.ToString() == Id).SingleOrDefault();
                switch (Num)
                {
                case 0:
                    dup.ImageQuestion = null;
                    break;

                case 1:
                    dup.Image1 = null;
                    break;

                case 2:
                    dup.Image2 = null;
                    break;

                case 3:
                    dup.Image3 = null;
                    break;

                case 4:
                    dup.Image4 = null;
                    break;
                }

                ctx.ChangeTracker.DetectChanges();
                ctx.SaveChanges();


                return(RedirectToAction("ManageDuplicates", new { id = dup.DuplicateId }));
            }
        }
コード例 #20
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var usercl = new UserCl {
                    name = user.UserName
                };
                var userSettings = new UserSettings {
                    currentLangage = null, numberOfWordsPerLearning = 20
                };
                WordsContext wc = new WordsContext();

                wc.Settings.Add(userSettings);
                usercl.settings = userSettings;
                wc.Users.Add(usercl);
                wc.SaveChanges();
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
コード例 #21
0
        public ActionResult UploadImage(string FileUpload, string WordId, string CollectionId)
        {
            if (!(Session["IsAdmin"] != null && Session["IsAdmin"].ToString().ToUpper() == "TRUE"))
            {
                return(Content("Not allowed", System.Net.Mime.MediaTypeNames.Text.Plain));
            }


            using (var ctx = new WordsContext())
            {
                using (var image = System.Drawing.Image.FromStream(Request.Files[0].InputStream))
                {
                    using (var scaledImage = ImageController.ScaleImage(image, 300, 300))
                    {
                        MemoryStream ms = new MemoryStream();
                        scaledImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                        if (CollectionId == "undefined")
                        {
                            var word = ctx.Words.Where(x => x.WordId.ToString() == WordId).SingleOrDefault();
                            word.Image         = new Picture();
                            word.Image.Content = ms.ToArray();
                        }
                        else
                        {
                            var collection = ctx.Collections.Where(x => x.CollectionId.ToString() == CollectionId).SingleOrDefault();
                            collection.Image         = new Picture();
                            collection.Image.Content = ms.ToArray();
                        }

                        ctx.ChangeTracker.DetectChanges();
                        ctx.SaveChanges();
                    }
                }
            }

            return(Json(new { success = "Valid" }));
        }
コード例 #22
0
 public void Save()
 {
     _dbContext.SaveChanges();
 }
コード例 #23
0
        public JsonResult GetResults(Dictionary <string, object> option)
        {
            bool isAuthenticated = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated;

            if (!isAuthenticated)
            {
                return(null);
            }

            UserWord                    checkedWord;
            List <ResultType>           listOfResults = new List <ResultType>();
            Dictionary <string, object> resultList    = option;
            double result;
            bool   okWord;
            double okWords = 0;
            double subResult;
            object Jresult;

            wordContext = new WordsContext();



            usercl = wordContext.Users.Where(x => x.name == User.Identity.Name).FirstOrDefault();

            foreach (var cell in resultList)
            {
                checkedWord = usercl.usersWords.Where(x => x.id == Convert.ToInt32(cell.Key)).First();
                if (checkedWord.word.foreignText.ToLower() == Convert.ToString(cell.Value).ToLower())
                {
                    if (checkedWord.levelOfKnowledge < 10)
                    {
                        checkedWord.levelOfKnowledge += 1;
                    }
                    else
                    {
                        checkedWord.levelOfKnowledge = 10;
                    }
                    okWord = true;
                    okWords++;
                }
                else
                {
                    okWord = false;
                    checkedWord.levelOfKnowledge -= 1;
                }
                checkedWord.lastTimeAccesed = DateTime.Now;
                listOfResults.Add(new ResultType(checkedWord.word.homeText, checkedWord.word.foreignText,
                                                 Convert.ToString(cell.Value), checkedWord.levelOfKnowledge, okWord));
            }
            subResult = okWords / resultList.Count;
            result    = Convert.ToInt32(Math.Round(subResult, 2) * 100);


            var listOfWords = listOfResults
                              .Select(a => new
            {
                Word       = a.word,
                WordExt    = a.extWord,
                Level      = a.currentLevel,
                LevelUp    = a.levlUp,
                YourResult = a.yourResponse
            });

            Jresult = new { Result = result, List = listOfWords };
            wordContext.SaveChanges();

            return(Json(Jresult, JsonRequestBehavior.AllowGet));
        }