// GET public IActionResult Remove(int?gid) { using var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0 || gid != null) { return(Redirect("/Home/Index")); } var record = context.GroupsList.First(i => i.Id == gid); if (record.Owner <= 0) { return(Redirect("/User/Profile")); } var order0 = context.GroupsList.Where(i => i.GroupId == gid); var order1 = context.Groups.Where(i => i.Id == gid); foreach (var g in order0) { context.GroupsList.Remove(g); } foreach (var g in order1) { context.Groups.Remove(g); } context.SaveChanges(); return(Redirect("/User/Profile")); }
public IActionResult LoadPhoto(ImageData imageData, string Id) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var id = int.Parse(Id); var tst = context.Tests.First(i => i.Id == id && i.OwnerId == userData.Id); if (imageData.Image == null) { return(Redirect($"/Test/Create?id={id}")); } byte[] data = null; using (var binaryReader = new BinaryReader(imageData.Image.OpenReadStream())) { data = binaryReader.ReadBytes((int)imageData.Image.Length); } tst.Photo = data; context.Tests.Update(tst); context.SaveChanges(); return(Redirect($"/Test/Create?id={id}")); }
public IActionResult Index(int id) { var context = ContextBuilder.Context; // Проверка на доступность пользователю var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var ask = context.Asks.First(i => i.Id == id); if (context.Tests.Count(i => i.Id == ask.TestId && i.OwnerId == userData.Id) < 1) { return(Redirect("/Home/Index")); } var answers = new List <Answer>(context.Answers.Where(i => i.AskId == ask.Id)); ViewData["ask"] = ask; ViewData["answers"] = answers; return(View()); }
public IActionResult Login(int gid, string pass) { using var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var count = context.Groups.Count(i => i.Id == gid && i.Pass == pass); if (count > 0) { var countInList = context.GroupsList.Count(i => i.GroupId == gid && i.UserId == userData.Id); if (countInList >= 1) { return(Redirect($"/Group/Index?gid={gid}")); } var record = new GroupList { GroupId = gid, Owner = 0, UserId = userData.Id }; context.GroupsList.Add(record); context.SaveChanges(); return(Redirect($"/Group/Index?gid={gid}")); } return(View()); }
public IActionResult Kick(int?gid, int usr) { using var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0 || gid is null) { return(Redirect("/Home/Index")); } if (usr == userData.Id) { return(Redirect($"/Group/Create?gid={gid}")); } var countInList = context.GroupsList.Count(i => i.GroupId == gid && i.UserId == userData.Id && i.Owner > 0); if (countInList < 1) { return(Redirect($"/Group/Create?gid={gid}")); } var record = context.GroupsList.First(i => i.UserId == usr && i.UserId != userData.Id); context.GroupsList.Remove(record); context.SaveChanges(); return(Redirect($"/Group/Create?gid={gid}")); }
public IActionResult LoadPhoto(ImageData imageData, int id) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var ask = context.Asks.First(i => i.Id == id); if (context.Tests.Count(i => i.Id == ask.TestId && i.OwnerId == userData.Id) < 1) { return(Redirect("/Home/Index")); } if (imageData.Image == null) { return(Redirect($"/Ask/Index?id={ask.Id}")); } byte[] data = null; using (var binaryReader = new BinaryReader(imageData.Image.OpenReadStream())) { data = binaryReader.ReadBytes((int)imageData.Image.Length); } ask.Photo = data; context.Asks.Update(ask); context.SaveChanges(); return(Redirect($"/Ask/Index?id={ask.Id}")); }
public IActionResult Create(int?gid, string name, string pass) { using var context = ContextBuilder.Context; SessionKeeper.Get(this, false); ViewData["Title"] = "Редактирование группы"; var userData = SessionKeeper.Get(this); if (gid == null) { ViewData["Title"] = "Создание группы"; var r = new Random(); var g = r.Next(0, 10000000).ToString(); context.Groups.Add(new Group { Name = g }); context.SaveChanges(); var created = context.Groups.First(i => i.Name == g); created.Name = "Новая группа"; context.Groups.Update(created); context.GroupsList.Add(new GroupList { GroupId = created.Id, Owner = 1, UserId = userData.Id }); context.SaveChanges(); ViewData["gid"] = created.Id; ViewData["gName"] = created.Name; ViewData["gPass"] = created.Pass; } else { var group = context.Groups.First(i => i.Id == gid); var allowed = context.GroupsList.Count(i => i.GroupId == gid && i.UserId == userData.Id && i.Owner > 0); if (allowed < 1) { return(Redirect("/Home/Index")); } // Изменение полей при запросе if (name != null && pass != null) { group.Name = name.TrimName().MakeSafe(); group.Pass = pass; context.Groups.Update(group); context.SaveChanges(); } ViewData["gid"] = gid; ViewData["gName"] = group.Name; ViewData["gPass"] = group.Pass; } return(View()); }
public IActionResult AnswerAdd(int id) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var ask = context.Asks.First(i => i.Id == id); if (context.Tests.Count(i => i.Id == ask.TestId && i.OwnerId == userData.Id) < 1) { return(Redirect("/Home/Index")); } var answer = new Answer { Value = "Вариант ответа", Impact = 0, AskId = ask.Id, TestId = ask.TestId }; context.Answers.Add(answer); context.SaveChanges(); return(Redirect($"/Ask/Index?id={id}")); }
public IActionResult LoadAvatar(ImageData imageData) { var context = ContextBuilder.Context; if (imageData.Image == null) { return(Redirect("/User/Profile")); } byte[] data = null; using (var binaryReader = new BinaryReader(imageData.Image.OpenReadStream())) { data = binaryReader.ReadBytes((int)imageData.Image.Length); } var userdata = SessionKeeper.Get(this); var name = userdata.Name; var pass = userdata.Password; var usr = context.Users.First(i => i.Name == name && i.Pass == pass); usr.Photo = data; context.Users.Update(usr); context.SaveChanges(); return(Redirect("/User/Profile")); }
public IActionResult Index() { SessionKeeper.Get(this); using var context = ContextBuilder.Context; var tests = new List <Test>(context.Tests.Where(r => r.Show > 0).Take(MainTestsCount)); return(View(tests)); }
public ResultContent SendTest(int tid, int[] AskId, int[] AnswerId, string user, string sessionkey) { try { var usrData = SessionKeeper.Get(user, sessionkey); var result = FreqRequests.GetResultContent(tid, AskId, AnswerId, usrData.Id); return(result); } catch { return(ResultContent.Error); } }
public TestContent GetTest(int id, string user, string sessionkey) { try { var usrData = SessionKeeper.Get(user, sessionkey); var test = FreqRequests.GetTestContent(id, usrData.Id); return(test); } catch { return(TestContent.Error); } }
// GET public IActionResult Index() { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); var id = int.Parse(Request.Query["id"]); var test = context.Tests.First(i => i.Id == id); ViewData["test"] = test; ViewData["Title"] = $"Тест - {test.Name}"; ViewData["tAllow"] = false; ViewData["tries"] = 0; // Проверка на количество попыток var triesCount = context.Results.Count(i => i.UserId == userData.Id); ViewData["tries"] = triesCount; if (test.Tries > 0 && test.Tries - triesCount < 1) { return(View()); } // Проверка на наличие в группе var groupCount = context.GroupsList.Count(i => i.UserId == userData.Id && i.GroupId == test.Limit); if (groupCount < 1 && test.Limit > 0) { return(View()); } if (userData.Id < 0 && test.SaveResults > 0) { return(View()); } // Отображение body в случае прохождения проверок ViewData["tAllow"] = true; var asks = new List <Ask>(); asks.AddRange(context.Asks.Where(i => i.TestId == test.Id)); var answers = new List <Answer>(); answers.AddRange(context.Answers.Where(i => i.TestId == test.Id)); ViewData["tAsks"] = asks; ViewData["tAnswers"] = answers; ViewData["Title"] = $"Тест - {test.Name}"; return(View()); }
public IActionResult Find(string name) { using var context = ContextBuilder.Context; SessionKeeper.Get(this, false); ViewBag.Groups = null; if (name is null) { return(View()); } var groups = new List <Group>(context.Groups.Where(i => i.Name == name)); ViewBag.Groups = groups; return(View()); }
public IActionResult Remove() { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var id = int.Parse(Request.Query["id"]); var tst = context.Tests.First(i => i.Id == id && i.OwnerId == userData.Id); context.Tests.Remove(tst); context.SaveChanges(); return(Redirect("/User/Profile")); }
public IActionResult Index(int?id) { var context = ContextBuilder.Context; SessionKeeper.Get(this); if (id is null) { return(Redirect("/User/Profile")); } var user = context.Users.First(i => i.Id == id); var groupslist = new List <GroupList>(context.GroupsList.Where(i => i.UserId == id)); var groups = groupslist.Select(g => context.Groups.First(i => i.Id == g.GroupId)).ToList(); ViewData["user"] = user; ViewData["groups"] = groups; return(View()); }
public IActionResult Create(int tid) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var test = context.Tests.First(i => i.Id == tid && i.OwnerId == userData.Id); var ask = new Ask { TestId = test.Id, Value = "Empty" }; context.Asks.Add(ask); context.SaveChanges(); return(Redirect($"/Test/Create?id={tid}")); }
public IActionResult AddDescription(int tid) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var test = context.Tests.First(i => i.Id == tid && i.OwnerId == userData.Id); var descr = new ResultDescription { MinValue = 0, Text = "", TestId = test.Id }; context.Descriptions.Add(descr); context.SaveChanges(); return(Redirect($"/Test/Create?id={tid}")); }
public IActionResult SetGroup() { var context = ContextBuilder.Context; ViewData["Title"] = "Сделать доступным для группы..."; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var id = int.Parse(Request.Query["id"]); var tst = context.Tests.First(i => i.Id == id && i.OwnerId == userData.Id); // Вывод списка с доступными группами if (Request.Query.ContainsKey("gname")) { var gname = (string)Request.Query["gname"]; var groups = new List <Group>(context.Groups.Where(i => i.Name == gname)); ViewData["groups"] = groups; ViewData["test"] = tst; return(View()); } if (!Request.Query.ContainsKey("gid")) { return(Redirect($"/Test/Create?id={id}")); } // Установка новой группы для теста var gid = int.Parse(Request.Query["gid"]); tst.Limit = gid; context.Tests.Update(tst); context.SaveChanges(); return(Redirect($"/Test/Create?id={id}")); }
public IActionResult Remove(int id) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var ask = context.Asks.First(i => i.Id == id); if (context.Tests.Count(i => i.Id == ask.TestId && i.OwnerId == userData.Id) < 1) { return(Redirect("/Home/Index")); } context.Asks.Remove(ask); context.SaveChanges(); return(Redirect($"/Test/Create?id={ask.TestId}")); }
public IActionResult Index(int?gid) { using var context = ContextBuilder.Context; SessionKeeper.Get(this, false); if (gid is null) { return(Redirect("/Home/Index")); } var group = context.Groups.First(i => i.Id == gid); var needReg = 1; try { var usr = context.Users.First(i => i.Name == (string)ViewData["Name"]); var contains = context.GroupsList.Count(i => i.UserId == usr.Id && i.GroupId == gid); if (contains > 0) { needReg = 2; } } catch { needReg = 0; } var glists = new List <GroupList>(context.GroupsList.Where(i => i.GroupId == gid)); var users = glists.Select(u => context.Users.First(i => i.Id == u.UserId)).ToList(); var tests = new List <Test>(context.Tests.Where(i => i.Limit == gid)); ViewData["needReg"] = needReg; ViewData["Title"] = group.Name; ViewData["gName"] = group.Name; ViewData["gUsers"] = users; ViewData["gid"] = gid; ViewData["tests"] = tests; return(View()); }
// GET public IActionResult Profile() { var context = ContextBuilder.Context; var user = SessionKeeper.Get(this); if (!Request.Cookies.ContainsKey("Name")) { return(Redirect("/Home/Index")); } if (user.Id < 0) { return(Redirect("/Home/Index")); } ViewData["Password"] = user.Password; ViewData["HideBar"] = true; ViewData["Title"] = $"Профиль пользователя {Request.Cookies["Name"]}"; ViewData["Tests"] = new List <Test>(context.Tests.Where(i => i.OwnerId == user.Id)); return(View()); }
public IActionResult KickSelf(int gid) { using var context = ContextBuilder.Context; try { var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var record = context.GroupsList.First(i => i.UserId == userData.Id && i.Owner < 1 && i.GroupId == gid); context.GroupsList.Remove(record); context.SaveChanges(); return(Redirect($"/Group/Index?gid={gid}")); } catch { return(Redirect($"/User/Profile")); } }
public IActionResult AnswerEdit(int id, string value, int impact) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var answer = context.Answers.First(i => i.Id == id); if (context.Tests.Count(i => i.Id == answer.TestId && i.OwnerId == userData.Id) < 1) { return(Redirect("/Home/Index")); } answer.Impact = impact; answer.Value = value.MakeSafe(); context.Answers.Update(answer); context.SaveChanges(); return(Redirect($"/Ask/Index?id={answer.AskId}")); }
public IActionResult Edit(int id, string value) { var context = ContextBuilder.Context; // Проверка на доступность пользователю var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var ask = context.Asks.First(i => i.Id == id); if (context.Tests.Count(i => i.Id == ask.TestId && i.OwnerId == userData.Id) < 1) { return(Redirect("/Home/Index")); } ask.Value = value; context.Asks.Update(ask); context.SaveChanges(); return(Redirect($"/Ask/Index?id={id}")); }
public IActionResult EditDescription(int id, string descr, int minv) { var context = ContextBuilder.Context; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } var resdescr = context.Descriptions.First(i => i.Id == id); if (context.Tests.Count(i => i.OwnerId == userData.Id && i.Id == resdescr.TestId) < 1) { return(Redirect($"/Test/Create?id={resdescr.TestId}")); } resdescr.Text = descr.MakeSafe(); resdescr.MinValue = minv; context.Descriptions.Update(resdescr); context.SaveChanges(); return(Redirect($"/Test/Create?id={resdescr.TestId}")); }
public bool IsSessionValid(string name, string key) { var usrData = SessionKeeper.Get(name, key); return(usrData.Id > 0); }
public IActionResult Create() { var context = ContextBuilder.Context; ViewData["Title"] = "Редактирование теста"; var userData = SessionKeeper.Get(this); if (userData.Id < 0) { return(Redirect("/Home/Index")); } if (!Request.Query.ContainsKey("id")) { ViewData["Title"] = "Создание теста"; // Создание нового теста var r = new Random(); var testname = r.Next(0, 10000).ToString(); var newtest = new Test { Name = testname, Limit = 0, Info = "", SaveResults = 0, Show = 0, Tries = 0, OwnerId = userData.Id }; context.Tests.Add(newtest); context.SaveChanges(); // Получение нового теста из БД var test = context.Tests.First(i => i.Name == testname); test.Name = "Новый тест"; context.Tests.Update(test); context.SaveChanges(); return(Redirect($"/Test/Create?id={test.Id}")); } // Редактирование имеющейся записи var id = int.Parse(Request.Query["id"]); var tst = context.Tests.First(i => i.Id == id && i.OwnerId == userData.Id); var changed = false; if (Request.Query.ContainsKey("name")) { tst.Name = ((string)Request.Query["name"]).MakeSafe(); changed = true; } if (Request.Query.ContainsKey("text")) { tst.Info = ((string)Request.Query["text"]).MakeSafe(); changed = true; } if (Request.Query.ContainsKey("tries")) { tst.SaveResults = 1; tst.Tries = int.Parse(Request.Query["tries"]); changed = true; } if (Request.Query.ContainsKey("name")) { tst.SaveResults = Request.Query.ContainsKey("saveres") ? 1 : 0; tst.Show = Request.Query.ContainsKey("show") ? 1 : 0; } if (changed) { context.Tests.Update(tst); context.SaveChanges(); } var asks = new List <Ask>(context.Asks.Where(i => i.TestId == tst.Id)); var descrs = new List <ResultDescription>(context.Descriptions.Where(i => i.TestId == tst.Id)); var results = new List <Result>(context.Results.Where(i => i.TestId == tst.Id)); ViewData["asks"] = asks; ViewData["test"] = tst; ViewData["descrs"] = descrs; ViewData["results"] = results; ViewData["groupname"] = ""; // Описание группы, для которой доступен тест if (tst.Limit != 0) { var group = context.Groups.First(i => i.Id == tst.Limit); ViewData["groupname"] = group.Name; } return(View()); }
public IActionResult Send(int[] AskId, int[] AnswerId) { var context = ContextBuilder.Context; ViewData["error"] = true; ViewData["Title"] = "Результаты тестирования"; var userData = SessionKeeper.Get(this); if (AskId.Length < 1 || AnswerId.Length < 1) { return(View()); } // Получение теста var firstAsk = context.Asks.First(i => i.Id == AskId[0]); var test = context.Tests.First(i => i.Id == firstAsk.TestId); // Контроль доступа if (userData.Id < 0 && test.SaveResults > 0) { return(View()); } if (context.GroupsList.Count(i => i.GroupId == test.Limit && i.UserId == userData.Id) < 0) { return(View()); } var asks = new List <Ask>(context.Asks.Where(i => i.TestId == test.Id)); var answers = new List <Answer>(context.Answers.Where(i => i.TestId == test.Id)); var userAnswers = new Dictionary <int, int>(); if (asks.Count != AskId.Length) { return(View()); } // Максимально возможный результат var maxResult = 0; foreach (var ask in asks) { var maxImpact = int.MinValue; foreach (var a in answers.Where(a => a.AskId == ask.Id && a.Impact > maxImpact)) { maxImpact = a.Impact; } maxResult += maxImpact; } // Результат пользователя foreach (var ask in asks) { int j; for (j = 0; j < AskId.Length && AskId[j] != ask.Id; j++) { ; } var answ = answers.First(i => i.Id == AnswerId[j]); userAnswers[ask.Id] = answ.Impact; } var result = userAnswers.Values.Sum(); // Отображение описания результата var resultText = ""; var descriptions = context.Descriptions.Where(i => i.TestId == test.Id); var maxDescrImpact = int.MinValue; foreach (var d in descriptions) { if (d.MinValue <= maxDescrImpact || result <= d.MinValue) { continue; } maxDescrImpact = d.MinValue; resultText = d.Text; } ViewData["error"] = false; ViewData["rText"] = resultText; ViewData["res"] = result; ViewData["maxres"] = maxResult; if (test.SaveResults <= 0) { return(View()); } var record = new Result { TestId = test.Id, UserId = userData.Id, Value = result }; context.Results.Add(record); context.SaveChanges(); return(View()); }