private void UpdatePaperKeywords(string[] selectedOptions, PaperInfo paperInfoToUpdate) { if (selectedOptions == null) { paperInfoToUpdate.PaperKeywords = new List <PaperKeyword>(); return; } var selectedOptionsHS = new HashSet <string>(selectedOptions); var papKey = new HashSet <int>(paperInfoToUpdate.PaperKeywords.Select(b => b.KeywordID)); foreach (var s in _context.Keywords) { if (selectedOptionsHS.Contains(s.ID.ToString())) { if (!papKey.Contains(s.ID)) { paperInfoToUpdate.PaperKeywords.Add(new PaperKeyword { KeywordID = s.ID, PaperInfoID = paperInfoToUpdate.ID }); } } else { if (papKey.Contains(s.ID)) { PaperKeyword specToRemove = paperInfoToUpdate.PaperKeywords.SingleOrDefault(d => d.KeywordID == s.ID); _context.Remove(specToRemove); } } } }
public async Task <IActionResult> Create([Bind("PaperId,TitleENG,TitleORG,Authors,Abstract,OrgName,LanguageId,PaperKeywords")] ViewModels.PaperPaperKeyworsViewModel paperPaperKeyword, IFormFile file) { var userId = _userManager.GetUserId(HttpContext.User); var user = _context.ApplicationUser .Include(ap => ap.Users) .FirstOrDefault(ap => ap.Id == userId); foreach (var userType in user.Users) { if (userType.GetType().ToString() == "ConFutureNce.Models.Author") { if (ModelState.IsValid & file != null) { var paper = new Paper { Abstract = paperPaperKeyword.Abstract, TitleENG = paperPaperKeyword.TitleENG, TitleORG = paperPaperKeyword.TitleORG, Authors = paperPaperKeyword.Authors, OrgName = paperPaperKeyword.OrgName, LanguageId = paperPaperKeyword.LanguageId }; var userTypeId = user.Users.First().UserTypeId; paper.AuthorId = userTypeId; if (paperPaperKeyword.PaperKeywords != null) { var paperKeywordsTableWithRepeats = paperPaperKeyword.PaperKeywords.Split(","); for (int i = 0; i < paperKeywordsTableWithRepeats.Length; i++) { paperKeywordsTableWithRepeats[i] = paperKeywordsTableWithRepeats[i].Trim(); } paperKeywordsTableWithRepeats = paperKeywordsTableWithRepeats.Where(x => !string.IsNullOrEmpty(x)).ToArray(); var paperKeywordsTable = paperKeywordsTableWithRepeats.Distinct().ToArray(); List <PaperKeyword> ppk = new List <PaperKeyword>(); foreach (string keyword in paperKeywordsTable) { var paperKeywords = new PaperKeyword { KeyWord = keyword, Paper = paper }; ppk.Add(paperKeywords); } paper.PaperKeywords = ppk; } using (var memoryStream = new MemoryStream()) { await file.CopyToAsync(memoryStream); paper.PaperFile = memoryStream.ToArray(); } paper.SubmissionDate = DateTime.Now; paper.Status = 0; _context.Add(paper); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Payments", new PaymentViewModel { UserName = user.Fullname, BillingAddress = user.Address, PaperId = paper.PaperId })); } ICollection <Language> languageList = new List <Language>(); languageList = (from language in _context.Language select language).ToList(); ViewBag.ListofLanguages = languageList; return(View(paperPaperKeyword)); } } return(RedirectToAction("Index")); }
public void InitContext() { if (context != null) { return; } // UserManager initialization var userStore = new Mock <IUserStore <ApplicationUser> >(); userManager = new UserManager <ApplicationUser>(userStore.Object, null, null, null, null, null, null, null, null); // DB in memory initialization var option = new DbContextOptionsBuilder <ConFutureNceContext>().UseInMemoryDatabase("db").Options; context = new ConFutureNceContext(option); // DB data creation if ApplicationUser table is empty if (context.ApplicationUser.Any()) { return; } #region DB content var languages = new Language[] { new Language { LanguageName = "Afrikanns" }, new Language { LanguageName = "Albanian" }, new Language { LanguageName = "Arabic" }, new Language { LanguageName = "Armenian" }, new Language { LanguageName = "Basque" }, new Language { LanguageName = "Bengali" }, new Language { LanguageName = "Bulgarian" }, new Language { LanguageName = "Catalan" }, new Language { LanguageName = "Cambodian" }, new Language { LanguageName = "Chinese (Mandarin)" }, new Language { LanguageName = "Croation" }, new Language { LanguageName = "Czech" }, new Language { LanguageName = "Danish" }, new Language { LanguageName = "Dutch" }, new Language { LanguageName = "English" }, new Language { LanguageName = "Estonian" }, new Language { LanguageName = "Fiji" }, new Language { LanguageName = "Finnish" }, new Language { LanguageName = "French" }, new Language { LanguageName = "Georgian" }, new Language { LanguageName = "German" }, new Language { LanguageName = "Greek" }, new Language { LanguageName = "Gujarati" }, new Language { LanguageName = "Hebrew" }, new Language { LanguageName = "Hindi" }, new Language { LanguageName = "Hungarian" }, new Language { LanguageName = "Icelandic" }, new Language { LanguageName = "Indonesian" }, new Language { LanguageName = "Irish" }, new Language { LanguageName = "Italian" }, new Language { LanguageName = "Japanese" }, new Language { LanguageName = "Javanese" }, new Language { LanguageName = "Korean" }, new Language { LanguageName = "Latin" }, new Language { LanguageName = "Latvian" }, new Language { LanguageName = "Lithuanian" }, new Language { LanguageName = "Macedonian" }, new Language { LanguageName = "Malay" }, new Language { LanguageName = "Malayalam" }, new Language { LanguageName = "Maltese" }, new Language { LanguageName = "Maori" }, new Language { LanguageName = "Marathi" }, new Language { LanguageName = "Mongolian" }, new Language { LanguageName = "Nepali" }, new Language { LanguageName = "Norwegian" }, new Language { LanguageName = "Persian" }, new Language { LanguageName = "Polish" }, new Language { LanguageName = "Portuguese" }, new Language { LanguageName = "Punjabi" }, new Language { LanguageName = "Quechua" }, new Language { LanguageName = "Romanian" }, new Language { LanguageName = "Russian" }, new Language { LanguageName = "Samoan" }, new Language { LanguageName = "Serbian" }, new Language { LanguageName = "Slovak" }, new Language { LanguageName = "Slovenian" }, new Language { LanguageName = "Spanish" }, new Language { LanguageName = "Swahili" }, new Language { LanguageName = "Swedish " }, new Language { LanguageName = "Tamil" }, new Language { LanguageName = "Tatar" }, new Language { LanguageName = "Telugu" }, new Language { LanguageName = "Thai" }, new Language { LanguageName = "Tibetan" }, new Language { LanguageName = "Tonga" }, new Language { LanguageName = "Turkish" }, new Language { LanguageName = "Ukranian" }, new Language { LanguageName = "Urdu" }, new Language { LanguageName = "Uzbek" }, new Language { LanguageName = "Vietnamese" }, new Language { LanguageName = "Welsh" }, new Language { LanguageName = "Xhosa" } }; foreach (Language l in languages) { context.Language.Add(l); } context.SaveChanges(); // 4 Applicaton Users in each UserType var users = new ApplicationUser[] { new ApplicationUser { Name = "Author", Email = "*****@*****.**", Address = "Plac Grunwaldzki 23, Wroc³aw, Polska", ConferenceName = "Great Conference", EmailConfirmed = true, UserName = "******" }, new ApplicationUser { Name = "Author2", Email = "*****@*****.**", Address = "Plac Grunwaldzki 23, Wroc³aw, Polska", ConferenceName = "Great Conference", EmailConfirmed = true, UserName = "******" }, new ApplicationUser { Name = "Reviewer", Email = "*****@*****.**", Address = "Koœciuszki 28, Wroc³aw, Polska", ConferenceName = "Great Conference", EmailConfirmed = true, UserName = "******" }, new ApplicationUser { Name = "Reviewer2", Email = "*****@*****.**", Address = "Koœciuszki 28, Wroc³aw, Polska", ConferenceName = "Great Conference", EmailConfirmed = true, UserName = "******" }, new ApplicationUser { Name = "ProgrammeCommitteeMember", Email = "*****@*****.**", Address = "Kochanowskiego 21, Bogatynia, Polska", ConferenceName = "Great Conference", EmailConfirmed = true, UserName = "******" }, new ApplicationUser { Name = "Organizer", Email = "*****@*****.**", Address = "D³uga 28, Gdañsk, Polska", ConferenceName = "Great Conference", EmailConfirmed = true, UserName = "******" } }; foreach (ApplicationUser u in users) { context.ApplicationUser.Add(u); } context.SaveChanges(); // UserType creation // 1 ApplicationUser = 1 UserType // 1 organizers var organizers = new Organizer[] { new Organizer { ApplicationUserId = context.ApplicationUser.First(ap => ap.Name == "Organizer").Id, EmployeePosition = "Master Organizer" } }; foreach (var organizer in organizers) { context.Organizer.Add(organizer); } context.SaveChanges(); // 1 programmeCommitteeMembers var programmeCommitteeMembers = new ProgrammeCommitteeMember[] { new ProgrammeCommitteeMember { ApplicationUserId = context.ApplicationUser.First(ap => ap.Name == "ProgrammeCommitteeMember").Id, EmployeePosition = "Slave Programme Committee Member" } }; foreach (var programmeCommitteeMember in programmeCommitteeMembers) { context.ProgrammeCommitteeMember.Add(programmeCommitteeMember); } context.SaveChanges(); // 1 author var authors = new Author[] { new Author { ApplicationUserId = context.ApplicationUser.First(ap => ap.Name == "Author").Id, ScTitle = "MSc", OrgName = "Wroc³aw University of Science and Technology" }, new Author { ApplicationUserId = context.ApplicationUser.First(ap => ap.Name == "Author2").Id, ScTitle = "MSc", OrgName = "Wroc³aw University of Science and Technology" } }; foreach (Author a in authors) { context.Author.Add(a); } context.SaveChanges(); // 1 reviewer var reviewers = new Reviewer[] { new Reviewer { ApplicationUserId = context.ApplicationUser.First(ap => ap.Name == "Reviewer").Id, ScTitle = "Ph.D.", OrgName = "Wroc³aw University of Science and Technology", Language1Id = 47, Language2Id = 15 }, new Reviewer { ApplicationUserId = context.ApplicationUser.First(ap => ap.Name == "Reviewer2").Id, ScTitle = "Ph.D.", OrgName = "Wroc³aw University of Science and Technology", Language1Id = 47, Language2Id = 15 } }; foreach (Reviewer r in reviewers) { context.Reviewer.Add(r); } context.SaveChanges(); var papers = new Paper[] { new Paper { TitleENG = "Test1", TitleORG = "Teœcik1", Abstract = "taki tam sobie test enuma", Authors = "Marek Granowicz", LanguageId = 47, OrgName = "PWr", Status = Paper.ProcessStatus.Reviewed, AuthorId = context.Author.First().UserTypeId, ReviewerId = context.Reviewer.First().UserTypeId }, new Paper { TitleENG = "New Big Bang Theory", TitleORG = "Nowa teoria Wielkiego Wybuchu", Authors = "Wocjciech Pêciak, Robert Lewandowski", Abstract = "Skrót treœci - abstract", OrgName = "WAT", SubmissionDate = DateTime.Now, Status = Paper.ProcessStatus.UnderReview, LanguageId = 15, AuthorId = context.Author.First().UserTypeId }, new Paper { TitleENG = "Test1", TitleORG = "Teœcik1", Abstract = "taki tam sobie test enuma", Authors = "Marek Granowicz", LanguageId = 47, OrgName = "PWr", Status = Paper.ProcessStatus.UnderReview, AuthorId = context.Author.First().UserTypeId, ReviewerId = context.Reviewer.First().UserTypeId }, new Paper { TitleENG = "Test2", TitleORG = "Teœcik2", Abstract = "taki tam sobie test enuma", Authors = "Marek Granowicz", LanguageId = 47, OrgName = "PWr", Status = 0, AuthorId = context.Author.First().UserTypeId }, new Paper { TitleENG = "Test3", TitleORG = "Teœcik3", Abstract = "taki tam sobie test enuma", Authors = "Marek Granowicz", LanguageId = 47, OrgName = "PWr", Status = 0, AuthorId = context.Author.First().UserTypeId } }; foreach (Paper p in papers) { context.Paper.Add(p); } context.SaveChanges(); var keywords = new PaperKeyword[] { new PaperKeyword { KeyWord = "physics", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 1).PaperId }, new PaperKeyword { KeyWord = "frog", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 1).PaperId }, new PaperKeyword { KeyWord = "wood", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 1).PaperId }, new PaperKeyword { KeyWord = "rock", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 1).PaperId }, new PaperKeyword { KeyWord = "music", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 2).PaperId }, new PaperKeyword { KeyWord = "lake", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 2).PaperId }, new PaperKeyword { KeyWord = "mutant", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 2).PaperId }, new PaperKeyword { KeyWord = "leaf", PaperId = context.Paper.FirstOrDefault(p => p.PaperId == 2).PaperId }, }; foreach (var keyword in keywords) { context.PaperKeyword.Add(keyword); } context.SaveChanges(); // Make payment for each paper foreach (var paper in papers) { context.Payment.Add(new Payment { IsDone = true, PaperId = paper.PaperId }); } context.SaveChanges(); var reviews = new Review[] { new Review { Problems = "What was the problem?", WhyProblems = "Why it was a problem?", Solution = "What is a proposed solution?", Achievements = "What is outcome?", NotMentioned = "Gaps?", Grade = "On scale 0 to 10.", GeneralComments = "It was lovely day.", Date = DateTime.Now, PaperId = context.Paper.First(p => p.Status == Paper.ProcessStatus.Reviewed).PaperId } }; foreach (var review in reviews) { context.Review.Add(review); } context.SaveChanges(); #endregion }