public CreateSubjectCredentialsDataModel GetSubjectById(String subject) { var model = new CreateSubjectCredentialsDataModel(); // FirstOrDefault() có nghĩa: Nếu có thì lấy phần tử đầu, không thì null model.Subject = mContext.Subject.Where(x => x.Subject == subject).FirstOrDefault(); // Lấy danh sách lịch học tương ứng model.Schedule = mContext.Schedules.Where(x => x.Id == model.Subject.Id).ToList(); return(model); }
public IActionResult PostSubject([FromBody] CreateSubjectCredentialsDataModel data) { try { mContext.Subject.Add(data.Subject); mContext.SaveChanges(); } catch (Exception ex) { return(BadRequest("Tạo môn học thất bại." + "\nCó thể mã học phần bị trùng hoặc chưa điền đầy đủ các thông tin cần thiết.")); } mContext.Schedules.AddRange(data.Schedule); mContext.SaveChanges(); return(Ok()); }
public List <CreateSubjectCredentialsDataModel> GetSubjectByTerm(String major, String course, String term) { // Tạo danh sách các môn học và lịch học tương ứng (xem class CreateSubjectCredentialsDataModel) var listSubject = new List <CreateSubjectCredentialsDataModel>(); // Tạo danh sách các môn học trước List <SubjectDataModel> models = mContext.Subject.Where(x => EF.Functions.Like(x.Major, major) && EF.Functions.Like(x.Course, course) && EF.Functions.Like(x.Term, term)) .ToList(); // Làm tương tự for (int i = 0; i < models.Count(); i++) { var model = new CreateSubjectCredentialsDataModel(); model.Subject = models.ElementAtOrDefault(i); model.Schedule = mContext.Schedules.Where(x => x.Id == model.Subject.Id).ToList(); listSubject.Add(model); } return(listSubject); }
/// <summary> /// Hàm tạo môn học /// </summary> public async Task Create() { await RunCommand(() => this.CreateIsRunning, async() => { #region Khởi tạo data để gửi CreateSubjectCredentialsDataModel DataToPost = new CreateSubjectCredentialsDataModel(); DataToPost.Subject = new SubjectDataModel(); DataToPost.Subject.Major = this.Major.EditText; DataToPost.Subject.Id = this.ID.EditText; DataToPost.Subject.Subject = this.Subject.EditText; DataToPost.Subject.Teacher = this.Teacher.EditText; DataToPost.Subject.Term = Term; DataToPost.Subject.Course = Course; DataToPost.Subject.TimeStart = this.DateStart; DataToPost.Subject.TimeFinish = this.DateFinish; DataToPost.Subject.Status = 0; #endregion #region Kiểm tra tín chỉ có phải là số không int credit; try { credit = int.Parse(Credit.EditText); } catch (Exception ex) { MessageBox.Show($"Credit: {ex.Message}", "Notify", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (credit < 0) { MessageBox.Show("Credit must be bigger than zero", "Notify", MessageBoxButton.OK, MessageBoxImage.Error); return; } DataToPost.Subject.Credit = credit; #endregion #region Kiểm tra ngày và thời gian bắt đầu và kết thúc DateTime dateStart, dateEnd; // Kiểm tra xem ngày và thời gian bắt đầu có hợp lệ không try { dateStart = DateTime.ParseExact(DataToPost.Subject.TimeStart, "MM/dd/yyyy", CultureInfo.CurrentCulture); } catch { MessageBox.Show("Ngày bắt đầu hoặc thời gian bắt đầu không hợp lệ.\n Mời bạn kiểm tra lại!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error); return; } // Đến đây, ngày và thời gian bắt đầu đã hợp lệ. // Tiếp tục kiểm tra xem ngày và thời gian kết thúc có hợp lệ không try { dateEnd = DateTime.ParseExact(DataToPost.Subject.TimeFinish, "MM/dd/yyyy", CultureInfo.CurrentCulture); } catch { MessageBox.Show("Ngày kết thúc hoặc thời gian kết thúc không hợp lệ.\n Mời bạn kiểm tra lại!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error); return; } // Đến đây, ngày và thời gian kết thúc đã hợp lệ // Tiếp tục kiểm tra xem ngày và thời gian bắt đầu có trước ngày và thời gian kết thúc không. // Nếu không thì báo lỗi. if (dateStart >= dateEnd) { MessageBox.Show("Ngày và thời gian bắt đầu phải trước ngày và thời gian kết thúc.\n Mời bạn kiểm tra lại!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error); return; } // Đến đây ngày và thời gian đã hợp lệ là kiểu datetime // Tiếp tục kiểm tra xem ngày và thời gian bắt đầu có sau ngày và thời gian hiện tại không. // Nếu không thì báo lỗi. if (DateTimeOffset.UtcNow.Date > dateStart) { MessageBox.Show("Ngày và thời gian bắt đầu phải sau ngày và thời gian hiện tại.\n Mời bạn kiểm tra lại!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error); return; } #endregion #region Lấy và kiểm tra lịch trong tuần của môn học DataToPost.Schedule = new List <ScheduleDataModel>(); foreach (var item in SpecificTimeItems.Items) { if (!item.IsChecked) { continue; } #region Kiểm tra thời gian if (!item.TimeStart.IsTime()) { MessageBox.Show($"Time start of {item.DayInTheWeek} is not in a correct format", "Notify", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (!item.TimeFinish.IsTime()) { MessageBox.Show($"Time finish of {item.DayInTheWeek} is not in a correct format", "Notify", MessageBoxButton.OK, MessageBoxImage.Error); return; } DateTime start, finish; start = DateTime.ParseExact(item.TimeStart, "HH:mm", CultureInfo.CurrentCulture); finish = DateTime.ParseExact(item.TimeFinish, "HH:mm", CultureInfo.CurrentCulture); if (start > finish) { MessageBox.Show($"{item.DayInTheWeek}: Time start must be before time finish", "Notify", MessageBoxButton.OK, MessageBoxImage.Error); return; } #endregion DataToPost.Schedule.Add(new ScheduleDataModel { Id = this.ID.EditText, DayInTheWeek = item.DayInTheWeek, Room = item.Room, Period = item.Period, TimeStart = item.TimeStart, TimeFinish = item.TimeFinish }); } #endregion #region Gửi cho server lưu và nhận phản hồi // Đến đây, mọi thứ đều đã hợp lệ. // Tiến hành gửi data cho server lưu xuống database HttpResult result; try { result = await WebRequest <CreateSubjectCredentialsDataModel> .PostAsync("http://localhost:51197/api/subject", DataToPost); } catch (Exception ex) { MessageBox.Show(ex.Message, "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (200 != result.StatusCode) { MessageBox.Show(result.MessageResponse, "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error); return; } MessageBox.Show("Tạo môn học thành công", "Thông báo", MessageBoxButton.OK); #endregion }); }