// GET: Тесты
        public async Task <ActionResult> Index(string razdel = "", string redactor = "", string practice = "")
        {
            int id_Section = 0;

            if (redactor == "redactor") //если зашли с учетки редактора, то нужно меню для него
            {
                ViewBag.Id_user = "******";
            }
            else if (practice == "practice") //если зашли с учетки Практика, то нужно меню для него
            {
                ViewBag.Id_user = "******";
            }
            if (razdel != "")
            {
                id_Section = Convert.ToInt32(razdel);
                var тесты = (db.Тесты.Include(в => в.азделы).Include(в => в.Вопросы).Where(в => в.Id_Раздела == id_Section));
                ViewBag.IdРаздела = id_Section;                                      //для передачи в представление id раздела
                азделы раздел = await db.азделы.FindAsync(id_Section);               //находим раздел в бд по id

                ViewBag.НазваниеРаздела = раздел.Название_раздела.Replace("  ", ""); //получаем название раздела

                return(View(await тесты.ToListAsync()));
            }
            else
            {
                var тесты = db.Тесты.Include(т => т.азделы);
                ViewBag.IdРаздела = 1;
                return(View(await тесты.ToListAsync()));
            }
        }
        // GET: Тесты/Create
        public ActionResult Create(int?id)
        {
            // var section = (from t in db.Разделы select t).ToList();
            //  SelectList разделы = new SelectList(section, "id_Раздела", "Название_раздела");

            азделы раздел = db.азделы.Find(id);

            ViewBag.аздел    = раздел.id_Раздела;
            ViewBag.id_Теста = new SelectList(db.Тесты, "id_теста", "Название_темы_теста");
            return(View());
        }
        public async Task <ActionResult> Index(int razdel, Тесты item, int?Units)
        {
            азделы разделы = await db.азделы.FindAsync(razdel);              //получаем раздел по Id

            ViewBag.razdelName = разделы.Название_раздела.Replace("  ", ""); //передаем название раздела в представлнение
            ViewBag.razdel     = razdel.ToString();                          //Передаем Id раздела в представление
            string nameTest = item.Название_темы_теста;

            ViewBag.НазваниеТеста = nameTest.Replace("  ", "");                                                                       //передаем название теста в представление
            int        selectedIndex = 0;
            SelectList подразделения = new SelectList(db.Подразделение, "Id_подразделения", "Название_подразделения", selectedIndex); //для передачи в представление списка подразделений

            ViewBag.Подразделения = подразделения;
            int userТестId = 0;

            foreach (var t in db.Тесты) //определяем id выбранного теста
            {
                if (t.Название_темы_теста == nameTest)
                {
                    userТестId = t.id_теста;
                }
            }
            ViewBag.id_topic = userТестId;
            Тесты тема = await db.Тесты.FindAsync(userТестId);

            IQueryable <езультат_теста> users;

            if (Units != null)
            {
                users = (from u in db.езультат_теста where u.id_Теста == тема.id_теста && u.Пользователи.id_подразделения == Units select u); //выбор тех, кто уже сдавал теорию
            }
            else
            {
                users = (from u in db.езультат_теста where u.id_Теста == тема.id_теста select u);   //выбор тех, кто уже сдавал теорию
            }
            List <Пользователи> пользователи = new List <Пользователи>();

            foreach (var temp in users)
            {
                // пользователи.Add(db.Пользователи.Find(temp.id_User));
                пользователи.Add(temp.Пользователи);
            }
            var sortedUsers = from u in пользователи orderby u.Фамилия select u; //сортируем пользователей по алфавиту

            /* List<string> status = new List<string>();
             * status.Add("Не сдавалось");
             * status.Add("Не сдано");
             * status.Add("Сдано");
             * SelectList statusPractice = new SelectList(status, status[0]); //для передачи в представление списка подразделений
             * ViewBag.statusPractice = statusPractice;*/
            return(View(sortedUsers));
        }
        // GET: Разделы/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            азделы разделы = await db.азделы.FindAsync(id);

            if (разделы == null)
            {
                return(HttpNotFound());
            }
            return(View(разделы));
        }
 public async Task <ActionResult> Edit([Bind(Include = "id_раздела,Название_раздела")]  азделы разделы)
 {
     if (ModelState.IsValid)
     {
         разделы.Название_раздела = разделы.Название_раздела.TrimEnd(' ');
         var temp = from v in db.азделы where v.Название_раздела.Replace(" ", "").ToLower() == разделы.Название_раздела.Replace(" ", "").ToLower() select v;
         if (temp.Count() == 0) //проверяем, есть ли раздел с таки же именем, если нет, то добавляем
         {
             db.Entry(разделы).State = EntityState.Modified;
             await db.SaveChangesAsync();
         }
         return(RedirectToAction("Index", new { redactor = "redactor" }));
     }
     return(View(разделы));
 }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            азделы разделы = await db.азделы.FindAsync(id);                                                     //получеам раздел для удаления по Id

            var            тесты   = await(from t in db.Тесты where t.Id_Раздела == id select t).ToListAsync(); // получаем тесты из этого раздела
            List <Вопросы> вопросы = new List <Вопросы>();                                                      //для хранения вопросов из тестов раздела
            List <Ответы>  ответы  = new List <Ответы>();                                                       //для хранения ответов к вопросам из раздела

            foreach (var q in тесты)
            {
                var Q = await(from q1 in db.Вопросы where q1.id_Теста == q.id_теста select q1).ToListAsync(); //получаем все вопросы из всех тестов данного раздела
                foreach (var qAdd in Q)
                {
                    вопросы.Add(qAdd); //заносим эти вопросы в список
                }
            }
            foreach (var a in вопросы)
            {
                var A = await(from a1 in db.Ответы where a1.id_Вопроса == a.id_вопроса select a1).ToListAsync();  //получаем все ответы для вопросов  всех тестов данного раздела
                foreach (var aAdd in A)
                {
                    ответы.Add(aAdd); //заносим эти ответы в список
                }
            }
            foreach (var aD in ответы) //удаляем  ответы из раздела
            {
                db.Ответы.Remove(aD);
            }
            foreach (var qD in вопросы) //удаляем  вопросы из раздела
            {
                db.Вопросы.Remove(qD);
            }
            foreach (var tD in тесты) //удаляем удаляем темы из раздела
            {
                db.Тесты.Remove(tD);
            }
            db.азделы.Remove(разделы);  //удаляем раздел
            await db.SaveChangesAsync();

            return(RedirectToAction("Index", new { redactor = "redactor" }));
        }