public ActionResult Edit(string id, string teacher, string error = null)
        {
            ViewData["Consult"] = error;
            var consultation = _context.Consultations
                               .GroupJoin(_context.UserConsultation, e => e.Id, r => r.ConsultationId, (e, r) =>
                                          new { Date   = e.Date, Room = e.Room, AppStudents = r.Select(t => t.User.Pesel),
                                                Emails = r.Select(o => o.User.Email), Id = e.Id })
                               .Where(q => q.Id == id).FirstOrDefault();

            if (!consultation.Emails.Contains(teacher))
            {
                return(RedirectToAction(nameof(Edit)));
            }

            FindStudents();

            var createCon = new CreateConsultationViewModel
            {
                Id       = consultation.Id,
                Date     = consultation.Date,
                Room     = consultation.Room,
                Students = consultation.AppStudents.ToList()
            };

            return(View(createCon));
        }
        public IActionResult Edit(CreateConsultationViewModel createConsultationViewModel)
        {
            FindStudents();

            try
            {
                if (ModelState.IsValid)
                {
                    var consultation = _context.Consultations.Where(x => x.Id == createConsultationViewModel.Id).FirstOrDefault();
                    var usercons     = _context.UserConsultation.Where(z => z.ConsultationId == createConsultationViewModel.Id);
                    _context.UserConsultation.RemoveRange(usercons);

                    var students  = new List <UserConsultation>();
                    var teacherId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

                    createConsultationViewModel.Students
                    .Add(_context.AppUsers.Where(x => x.Id == teacherId).Select(o => o.Pesel).FirstOrDefault());

                    var when = createConsultationViewModel.Date;
                    if (when < DateTime.Now.AddHours(-24))
                    {
                        return(RedirectToAction(nameof(Edit), new { id = consultation.Id,
                                                                    teacher = _context.AppUsers.Where(x => x.Id == teacherId).Select(o => o.Email).FirstOrDefault()
                                                                    , error = "Cannot edit consultaton 24h before start" }));
                    }


                    foreach (var stu in createConsultationViewModel.Students)
                    {
                        var temp = _context.AppUsers.Where(q => q.Id == stu).FirstOrDefault();
                        students.Add(new UserConsultation {
                            User = _context.AppUsers.Where(o => o.Pesel == stu).FirstOrDefault()
                        });
                    }

                    // _context.UserConsultation.RemoveRange(students);
                    //var consultation = _context.Consultations.Where(x => x.Id == createConsultationViewModel.Id).FirstOrDefault();

                    consultation.AppUsers = students;
                    consultation.Room     = createConsultationViewModel.Room;
                    consultation.Date     = createConsultationViewModel.Date;
                    _context.SaveChanges();
                }

                return(RedirectToAction(nameof(Edit), new { error = "ok" }));
            }
            catch
            {
                return(View());
            }
        }
        public ActionResult Create(CreateConsultationViewModel createConsultationViewModel)
        {
            try
            {
                var when = createConsultationViewModel.Date;
                if (when < DateTime.Now.AddHours(-24))
                {
                    return(RedirectToAction(nameof(Create), new { error = "Cannot create consultaton 24h before start" }));
                }
                if (ModelState.IsValid)
                {
                    var students  = new List <UserConsultation>();
                    var teacherId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

                    createConsultationViewModel.Students
                    .Add(_context.AppUsers.Where(x => x.Id == teacherId).Select(o => o.Pesel).FirstOrDefault());

                    foreach (var stu in createConsultationViewModel.Students)
                    {
                        var temp = _context.AppUsers.Where(q => q.Id == stu).FirstOrDefault();
                        students.Add(new UserConsultation {
                            User = _context.AppUsers.Where(o => o.Pesel == stu).FirstOrDefault()
                        });
                    }
                    var consult = new Consultation
                    {
                        AppUsers = students,
                        Room     = createConsultationViewModel.Room,
                        Date     = createConsultationViewModel.Date
                    };
                    _context.Consultations.Add(consult);
                    _context.SaveChanges();
                }

                return(RedirectToAction(nameof(Create), new { error = "ok" }));
            }
            catch
            {
                return(View());
            }
        }