public ActionResult Create(SubjectsViewModel subjectsViewModel)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.Type = "create";
                return View(subjectsViewModel);
            }

            try
            {
                List<Groups> groups = new List<Groups>();

                foreach (string value in subjectsViewModel.SelectedGroups.ToList())
                {
                    groups.Add(groupsService.FindById(Convert.ToInt32(value)));
                }

                Subjects subject = subjectsViewModel.subject;
                subject.id_user = Convert.ToInt32(subjectsViewModel.SelectedUser);
                subject.Groups = groups;

                subjectService.Add(subject);
                TempData["Status"] = "success";
                TempData["Msg"] = "Nowy przedmiot został dodany!";
            }
            catch (Exception e)
            {
                TempData["Status"] = "invalid";
                TempData["Msg"] = "Nie udało się dodać nowego przedmiotu!";
            }
            return RedirectToAction("List");
        }
        public ActionResult Edit(SubjectsViewModel subjectsViewModel)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.Type = "edit";
                return View(subjectsViewModel);
            }

            try
            {
                Subjects subjectFromRepo = subjectService.FindById(subjectsViewModel.subject.id_subject);
                subjectFromRepo.id_user = Convert.ToInt32(subjectsViewModel.SelectedUser);
                subjectFromRepo.subject_name = subjectsViewModel.subject.subject_name;

                if (subjectsViewModel.SelectedGroups == null || subjectsViewModel.SelectedGroups.Length == 0)
                {
                    foreach (Groups group in subjectFromRepo.Groups.ToList())
                    {
                        subjectFromRepo.Groups.Remove(group);
                    }
                }
                else {
                    subjectFromRepo.Groups.Clear();
                    foreach (string value in subjectsViewModel.SelectedGroups.ToList())
                    {
                        Groups group = groupsService.FindById(Convert.ToInt32(value));
                        subjectFromRepo.Groups.Add(group);
                    }
                }
                subjectService.Edit(subjectFromRepo);
                TempData["Status"] = "success";
                TempData["Msg"] = "Aktualizacja przemdiotu przebiegła pomyślnie!";
            }
            catch (Exception e)
            {
                TempData["Status"] = "invalid";
                TempData["Msg"] = "Nie udało się zaktualizować przedmiotu!";
            }
            return RedirectToAction("List");
        }
        public ActionResult Edit(int id)
        {
            ViewBag.Type = "edit";

            if (id == null)
            {
                throw new SubjectNotFoundException();
            }

            Subjects subject = null;

            try
            {
                ViewBag.Teachers = new SelectList(usersService.FindAllTeachers(), "id_user", "full_name");
                ViewBag.Groups = new SelectList(groupsService.FindAll, "id_group", "full_name");

                subject = subjectService.FindById(id);

                List<string> selectedGroups = new List<string>();

                foreach (Groups group in subject.Groups)
                {
                    selectedGroups.Add(Convert.ToString(group.id_group));
                }

                SubjectsViewModel viewModel = new SubjectsViewModel();
                viewModel.subject = subject;
                viewModel.SelectedUser = Convert.ToString(subject.id_user);
                viewModel.SelectedGroups = selectedGroups.ToArray();

                return View(viewModel);
            }
            catch (SubjectNotFoundException ex)
            {
                TempData["Status"] = "invalid";
                TempData["Msg"] = "Nie znaleziono przedmiotu!";
                return RedirectToAction("List");
            }
        }