Näide StudentController.cs’ist
using System.Reflection;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using TallinnaRakenduslikKolledz.Data;
using TallinnaRakenduslikKolledz.Models;
namespace TallinnaRakenduslikKolledz.Controllers
{
public class InstructorsController : Controller
{
private readonly SchoolContext _context;
public InstructorsController(SchoolContext context)
{
_context = context;
}
public async Task<IActionResult> Index(int? id, int? courseId)
{
var vm = new InstructorIndexData();
vm.Instructors = await _context.Instructors
.Include(i => i.OfficeAssignment)
.Include(i => i.CourseAssignments)
.ToListAsync();
return View(vm);
}
[HttpGet]
public IActionResult Create()
{
var instructor = new Instructor();
instructor.CourseAssignments = new List<CourseAssignment>();
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Instructor instructor, string selectedCourses)
{
if (selectedCourses != null)
{
instructor.CourseAssignments = new List<CourseAssignment>();
foreach (var course in selectedCourses)
{
var courseToAdd = new CourseAssignment
{
InstructorID = instructor.ID,
CourseID = course
};
instructor.CourseAssignments.Add(courseToAdd);
}
}
ModelState.Remove("selectedCourses");
if (ModelState.IsValid)
{
_context.Add(instructor);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
// PopulateAssignedCourseData(instructor);
return View(instructor);
}
[HttpGet]
public async Task<IActionResult> Delete(int? id, bool? saveChangesError= false)
{
if (id == null)
{
return NotFound();
}
var deletableInstructor=await _context.Instructors.FirstOrDefaultAsync(s => s.ID ==id);
if (deletableInstructor == null)
{
return NotFound();
}
return View(deletableInstructor);
}
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
Instructor deletableInstructor = await _context.Instructors.SingleAsync(i => i.ID == id);
_context.Instructors.Remove(deletableInstructor);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
private void PopulateAssignedCourseData(Instructor instructor)
{
var allCourses = _context.Courses; // Leiame kõik kursused
var instructorCourses = new HashSet<int>(instructor.CourseAssignments.Select(c => c.CourseID));
// valime kursused kus courseid on õpetajal olemas
var vm = new List<AssignCourseData>();
foreach (var course in allCourses)
{
vm.Add(new AssignCourseData
{
CourseID = course.ID,
Title = course.Title,
Assigned = instructorCourses.Contains(course.ID)
});
}
ViewData["Courses"] = vm;
}
[HttpGet]
public async Task<IActionResult> Details(int? id)
{
var instructor = await _context.Instructors.FindAsync(id);
return View(instructor);
}
[HttpGet]
public async Task<IActionResult> Edit(int id)
{
var instructor = await _context.Students.FindAsync(id);
return View(instructor);
}
[HttpPost, ActionName("EditConfirmed")]
public async Task<IActionResult> Edit([Bind("ID, LastName, FirstName, CourseAssignments, OfficeAssignment, HireDate, Salary, Gender, Bonuses")] Instructor instructor)
{
if (ModelState.IsValid)
{
_context.Instructors.Update(instructor);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(instructor);
}
}
}

