コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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
            });
        }