public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //_context.Courses.Add(Course);
            //await _context.SaveChangesAsync();

            //return RedirectToPage("./Index");

            var emptyCourse = new Course();

            if (await TryUpdateModelAsync <Course>(
                    emptyCourse,
                    "course",                                            // Prefix for form value.
                    s => s.CourseID, s => s.DepartmentID, s => s.Title)) // , s => s.Credits
            {
                _context.Courses.Add(emptyCourse);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            // Select DepartmentID if TryUpdateModelAsync fails.
            //PopulateDepartmentsDropDownList(_context);
            PopulateDepartmentsDropDownList(_context, emptyCourse.DepartmentID);
            return(Page());
        }
        public async Task <IActionResult> OnPostAsync(int?id, string[] selectedCourses)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            /*
             *
             * //先查找一个连接数据的临时表集合
             * var instructorToUpdate= await _context.Instructors
             * .Include(i => i.OfficeAssignment)
             * .AsNoTracking()
             * .FirstOrDefaultAsync(i => i.ID == id);
             *
             *
             * //如果办公室位置为空,则将 Instructor.OfficeAssignment 设置为 null。 当 Instructor.OfficeAssignment 为 null 时,OfficeAssignment 表中的相关行将会删除。 因为OfficeAssignment 设置了外键引用参照Instructor
             * //看不出哪里设置的????
             * if (await TryUpdateModelAsync<Instructor>(
             *        instructorToUpdate,
             *        "Instructor",
             *        i => i.FirstName, i => i.LastName, i => i.HireDate, i => i.OfficeAssignment))//,i=>i.OfficeAssignment.Location 加上这个也不行, 因为这个是更新Instructors数据集?
             * {
             *     if (string.IsNullOrWhiteSpace(instructorToUpdate.OfficeAssignment?.Location))//用Location因为string.IsNullOrWhiteSpace 接受的是字符串类型???更方便
             *     {
             *         instructorToUpdate.OfficeAssignment = null;
             *     }
             *     await _context.SaveChangesAsync();
             * }
             *
             * return RedirectToPage("./Index");
             * }*/

            var instructorToUpdate = await _context.Instructors
                                     .Include(i => i.OfficeAssignment)
                                     .Include(i => i.CourseAssignments)
                                     .ThenInclude(i => i.Course)
                                     .FirstOrDefaultAsync(s => s.ID == id);

            if (await TryUpdateModelAsync <Instructor>(
                    instructorToUpdate,
                    "Instructor",
                    i => i.FirstName, i => i.LastName,
                    i => i.HireDate, i => i.OfficeAssignment))
            {
                if (String.IsNullOrWhiteSpace(
                        instructorToUpdate.OfficeAssignment?.Location))
                {
                    instructorToUpdate.OfficeAssignment = null;
                }
                UpdateInstructorCourses(_context, selectedCourses, instructorToUpdate);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            UpdateInstructorCourses(_context, selectedCourses, instructorToUpdate);
            PopulateAssignedCourseData(_context, instructorToUpdate);
            return(Page());
        }
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            //if (id == null)
            //{
            //    return NotFound();
            //}

            //Instructor = await _context.Instructors.FindAsync(id);

            //if (Instructor != null)
            //{
            //    _context.Instructors.Remove(Instructor);
            //    await _context.SaveChangesAsync();
            //}

            //return RedirectToPage("./Index");

            Instructor instructor = await _context.Instructors
                                    .Include(i => i.CourseAssignments)
                                    .SingleAsync(i => i.ID == id);

            var departments = await _context.Departments
                              .Where(d => d.InstructorID == id)
                              .ToListAsync();

            departments.ForEach(d => d.InstructorID = null);

            _context.Instructors.Remove(instructor);

            await _context.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }
示例#4
0
        public async Task <IActionResult> Create([Bind("FirstMidName,HireDate,LastName,OfficeAssignment")] 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 = int.Parse(course)
                    };
                    instructor.CourseAssignments.Add(courseToAdd);
                }
            }
            if (ModelState.IsValid)
            {
                _context.Add(instructor);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            PopulateAssignedCourseData(instructor);
            return(View(instructor));
        }
示例#5
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Student = await _context.Students.FindAsync(id);

            if (Student != null)
            {
                _context.Students.Remove(Student);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
示例#6
0
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            var emptyStudent = new Student();

            if (await TryUpdateModelAsync <Student>(
                    emptyStudent,
                    "student",
                    s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate))
            {
                _context.Students.Add(emptyStudent);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            return(Page());
        }
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            //Course = await _context.Courses.FindAsync(id);
            Course = await _context.Courses
                     .AsNoTracking()
                     .FirstOrDefaultAsync(m => m.CourseID == id);

            if (Course != null)
            {
                _context.Courses.Remove(Course);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
示例#8
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            var courseToUpdate = await _context.Courses.FindAsync(id);

            if (await TryUpdateModelAsync <Course>(
                    courseToUpdate,
                    "course", // Prefix for form value.
                    c => c.Credits, c => c.DepartmentID, c => c.Title))
            {
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            // Select DepartmentID if TryUpdateModelAsync fails.
            PopulateDepartmentsDropDownList(_context, courseToUpdate.DepartmentID);
            return(Page());
            //_context.Attach(Course).State = EntityState.Modified;

            //try
            //{
            //    await _context.SaveChangesAsync();
            //}
            //catch (DbUpdateConcurrencyException)
            //{
            //    if (!CourseExists(Course.CourseID))
            //    {
            //        return NotFound();
            //    }
            //    else
            //    {
            //        throw;
            //    }
            //}

            //return RedirectToPage("./Index");
        }
示例#9
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var studentToUpdate = await _context.Student.FindAsync(id);

            if (await TryUpdateModelAsync <Student>(
                    studentToUpdate,
                    "student",
                    s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate))
            {
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }

            return(Page());
        }
示例#10
0
        public async Task <IActionResult> OnPostAsync(string[] course)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var newInstructor = new Instructor();

            if (selectedCourses != null)
            {
                newInstructor.CourseAssignments = new List <CourseAssignment>();
                foreach (var course in selectedCourses)
                {
                    var courseToAdd = new CourseAssignment
                    {
                        CourseID = int.Parse(course)
                    };
                    newInstructor.CourseAssignments.Add(courseToAdd);
                }
            }

            if (await TryUpdateModelAsync <Instructor>(
                    newInstructor,
                    "Instructor",
                    i => i.FirstMidName, i => i.LastName,
                    i => i.HireDate, i => i.OfficeAssignment))
            {
                _context.Instructors.Add(newInstructor);
                await _context.SaveChangesAsync();

                return(RedirectToPage("./Index"));
            }
            PopulateAssignedCourseData(_context, newInstructor);
            return(Page());
        }
示例#11
0
            public static async Task CreateTerm(SchoolContext context)
            {
                List <Semester> contextSems = context.Semesters.ToList();

                if (contextSems.Count == 0)
                {
                    int currentYear;
                    if (DateTime.Now.Month > 4)
                    {
                        currentYear = DateTime.Now.Year;
                    }
                    else
                    {
                        currentYear = DateTime.Now.Year - 1;
                    }
                    DateTime current     = DateTime.Today;
                    int      currentTerm = 4;
                    if (current.Month > 1 && current.Month < 5)
                    {
                        currentTerm = 4;
                    }
                    else if (current.Month > 5 && current.Month < 7)
                    {
                        currentTerm = 1;
                    }
                    else if (current.Month > 7 && current.Month < 9)
                    {
                        currentTerm = 2;
                    }
                    else if (current.Month > 9)
                    {
                        currentTerm = 3;
                    }

                    {
                        contextSems = new List <Semester>();
                        DateTime date = new DateTime();
                        for (int i = 2015; i < 2020; i++)
                        {
                            for (int j = 1; j <= 4; j++)
                            {
                                switch (j)
                                {
                                case 1:
                                    date = new DateTime(i, 5, 1);
                                    break;

                                case 2:
                                    date = new DateTime(i, 7, 1);
                                    break;

                                case 3:
                                    date = new DateTime(i, 9, 1);
                                    break;

                                case 4:
                                    date = new DateTime(i + 1, 1, 7);
                                    break;
                                }
                                //if (i == currentYear && ((DateTime.Today.Year < date.Year && DateTime.Today.Month < date.Month) || DateTime.Today.Year < date.Year))
                                if (i == currentYear && currentTerm == j)
                                {
                                    Semester term = new Semester()
                                    {
                                        StartYear    = i,
                                        StartingDate = date,
                                        Open         = false,
                                        Season       = (Term)j,
                                        Current      = true,
                                    };
                                    contextSems.Add(term);
                                }
                                else
                                {
                                    Semester term = new Semester()
                                    {
                                        StartYear    = i,
                                        StartingDate = date,
                                        Open         = false,
                                        Season       = (Term)j,
                                        Current      = false,
                                    };
                                    contextSems.Add(term);
                                }
                            }
                        }
                        context.Semesters.AddRange(contextSems);
                        await context.SaveChangesAsync();
                    }
                }
            }