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()); } }