Пример #1
0
        public ActionResult RevokeBooking(CalendarEventQueryViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>().Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }));
            }
            else if (item.ContractTrustTrack.Any(t => t.SettlementID.HasValue))
            {
                return(Json(new { result = false, message = "課程資料已信託,不可取消!!" }));
            }
            else if (item.RegisterLesson.IsPaid)
            {
                return(Json(new { result = false, message = "課程資料已收款,不可取消!!" }));
            }
            //else if (item.LessonPlan != null || item.TrainingPlan.Count > 0)
            //{
            //    ViewBag.Message = "請先刪除預編課程!!";
            //    return RedirectToAction("Coach", "Account", new { lessonDate = lessonDate, message= "請先刪除預編課程!!" });
            //}
            item.RevokeBooking(models);

            return(Json(new { result = true }));
        }
        public ActionResult SelectToCloneLearnerTrainingPlan(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>()
                              .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }));
            }

            var lessonItems = item.GroupingLesson.RegisterLesson;

            if (lessonItems.Count() < 2)
            {
                return(Json(new { result = false, message = "課程非一對多!!" }));
            }

            var items = models.GetTable <RegisterLesson>().Where(r => r.RegisterGroupID == item.GroupID)
                        .Where(l => l.UID != viewModel.UID)
                        .Select(l => l.UserProfile);

            return(View("~/Views/LessonConsole/Module/SelectToCloneTrainingPlan.cshtml", items));
        }
        public ActionResult CopyTrainingPlan(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime copyTo = models.GetTable <LessonTime>()
                                .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (copyTo == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }));
            }

            LessonTime copyFrom = models.GetTable <LessonTime>()
                                  .Where(l => l.LessonID == viewModel.CopyFrom).FirstOrDefault();

            if (copyTo == null)
            {
                return(Json(new { result = false, message = "複製來源課程資料錯誤!!" }));
            }

            var source = copyFrom.AssertLearnerTrainingPlan(models, viewModel.UID.Value);
            var target = copyTo.AssertLearnerTrainingPlan(models, viewModel.UID.Value);

            models.CloneTrainingPlan(source, target, false);

            return(Json(new { result = true }));
        }
        public async Task <ActionResult> CommitCrossBranchAsync(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            var profile = await HttpContext.GetUserAsync();

            LessonTime item = profile.PreferredLessonTimeToApprove(models)
                              .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }));
            }

            item.PreferredLessonTime.ApprovalDate = DateTime.Now;
            item.PreferredLessonTime.ApproverID   = profile.UID;
            models.SubmitChanges();

            return(Json(new { result = true }));
        }
Пример #5
0
        public ActionResult SelectToCloneCoachPITrainingPlan(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>()
                              .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }, JsonRequestBehavior.AllowGet));
            }

            var lessonItems = models.GetTable <LessonTime>().Where(l => l.GroupID == item.GroupID && l.LessonID != item.LessonID);

            if (lessonItems.Count() < 1)
            {
                return(Json(new { result = false, message = "課程非多人團體課!!" }, JsonRequestBehavior.AllowGet));
            }

            var items = lessonItems.Where(l => l.LessonID != item.LessonID)
                        .Select(l => l.RegisterLesson.UserProfile);

            return(View("~/Views/LessonConsole/Module/SelectToCloneTrainingPlan.cshtml", items));
        }
Пример #6
0
        // update
        public bool UpdateLessonTime(int id, LessonTimeModel lessonTime)
        {
            using (AttenderEntities ef = new AttenderEntities())
            {
                LessonTime updateLessonTime = ef.LessonTimes.FirstOrDefault(a => a.Id == id);
                if (updateLessonTime == null)
                {
                    return(false);
                }

                //updateLessonTime.CourseId = lessonTime.CourseId;
                updateLessonTime.LessonDate      = lessonTime.LessonDate;
                updateLessonTime.StartTime       = lessonTime.StartTime;
                updateLessonTime.EndTime         = lessonTime.EndTime;
                updateLessonTime.ActualStartTime = lessonTime.ActualStartTime;
                updateLessonTime.ClassRoom       = lessonTime.ClassRoom;
                try
                {
                    ef.SaveChanges();
                }
                catch
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #7
0
        public ActionResult RevokeBooking(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>().Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "課程資料錯誤!!"));
            }
            else if (item.ContractTrustTrack.Any(t => t.SettlementID.HasValue))
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "課程資料已信託,不可取消!!"));
            }
            //else if (item.LessonPlan != null || item.TrainingPlan.Count > 0)
            //{
            //    ViewBag.Message = "請先刪除預編課程!!";
            //    return RedirectToAction("Coach", "Account", new { lessonDate = lessonDate, message= "請先刪除預編課程!!" });
            //}
            item.RevokeBooking(models);

            return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "課程預約已取消!!"));
        }
Пример #8
0
        public ActionResult CheckLessonEmphasis(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>().Where(t => t.LessonID == viewModel.LessonID).FirstOrDefault();

            var items = models.GetTable <TrainingPlan>().Where(p => p.LessonID == viewModel.LessonID)
                        .Where(p => p.TrainingExecution.Emphasis == null)
                        .Select(p => p.RegisterLesson);

            int count = items.Count();

            if (count == 1 && item.TrainingPlan.Count() == 1)
            {
                return(Json(new { result = false, message = "請先輸入上課重點!?" }, JsonRequestBehavior.AllowGet));
            }
            else if (count > 0)
            {
                return(Json(new { result = false, message = String.Concat(String.Join("、", items.Select(r => r.UserProfile.RealName)), "的上課重點未完成!?") }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { result = true }, JsonRequestBehavior.AllowGet));
            }
        }
Пример #9
0
        public static String LessonTypeStatus(this LessonTime item)
        {
            if (item.RegisterLesson.RegisterLessonEnterprise == null)
            {
                switch (item.RegisterLesson.LessonPriceType.Status)
                {
                case (int)Naming.LessonPriceStatus.自主訓練:
                    return("P.I");

                case (int)Naming.LessonPriceStatus.一般課程:
                case (int)Naming.LessonPriceStatus.團體學員課程:
                case (int)Naming.LessonPriceStatus.已刪除:
                    return("P.T");

                case (int)Naming.LessonPriceStatus.在家訓練:
                    return("S.T");

                case (int)Naming.LessonPriceStatus.教練PI:
                    return("Coach P.I");

                case (int)Naming.LessonPriceStatus.體驗課程:
                    return("T.S");

                case (int)Naming.LessonPriceStatus.點數兌換課程:
                    return(item.RegisterLesson.LessonPriceType.SimpleDescription);

                default:
                    return(item.RegisterLesson.LessonPriceType.Description);
                }
            }
            else
            {
                return(item.RegisterLesson.RegisterLessonEnterprise.EnterpriseCourseContent.EnterpriseLessonType.Status.LessonTypeStatus() + "(企)");
            }
        }
Пример #10
0
        public int CheckWhatLessonIsNow(string date, string hour)
        {
            LessonTimeModel lessonTime = null;
            DateTime        rdate      = DateTime.Parse(date);
            TimeSpan        rhour      = TimeSpan.Parse(hour);

            using (AttenderEntities ef = new AttenderEntities())
            {
                LessonTime item = ef.LessonTimes.FirstOrDefault(a => a.LessonDate == rdate &&
                                                                a.StartTime <= rhour && a.EndTime >= rhour);

                if (item != null)
                {
                    lessonTime = new LessonTimeModel()
                    {
                        Id              = item.Id,
                        CourseId        = item.CourseId,
                        LessonDate      = item.LessonDate,
                        StartTime       = item.StartTime,
                        EndTime         = item.EndTime,
                        ActualStartTime = TimeSpan.Parse(hour),
                        ClassRoom       = item.ClassRoom
                    };
                    return(lessonTime.CourseId);
                }
            }
            return(-1);
        }
Пример #11
0
 // Create;
 public bool AddLessonTime(LessonTimeModel newLessonTime)
 {
     using (AttenderEntities ef = new AttenderEntities())
     {
         LessonTime lessonTime = new LessonTime()
         {
             //Id = newLessonTime.Id,
             CourseId        = newLessonTime.CourseId,
             LessonDate      = newLessonTime.LessonDate,
             StartTime       = newLessonTime.StartTime,
             EndTime         = newLessonTime.EndTime,
             ActualStartTime = newLessonTime.ActualStartTime,
             ClassRoom       = newLessonTime.ClassRoom
         };
         ef.LessonTimes.Add(lessonTime);
         try
         {
             ef.SaveChanges();
         }
         catch
         {
             return(false);
         }
     }
     return(true);
 }
Пример #12
0
        public ActionResult AttendLesson(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            var profile = HttpContext.GetUser();

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>().Where(t => t.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "未登記此上課時間!!" }, JsonRequestBehavior.AllowGet));
            }

            if (item.TrainingPlan.Select(p => p.TrainingExecution.Emphasis).Any(a => a == null))
            {
                return(Json(new { result = false, message = "未輸入課表重點,無法完成上課!!" }, JsonRequestBehavior.AllowGet));
            }

            item.LessonPlan.Remark = viewModel.Remark.GetEfficientString();

            models.AttendLesson(item, profile, viewModel.QuestionnaireGroupID);
            //foreach (var r in item.GroupingLesson.RegisterLesson)
            //{
            //    models.CheckLearnerQuestionnaireRequest(r);
            //}

            return(Json(new { result = true, message = "資料存檔完成!!" }));
        }
        public async Task <ActionResult> UpdateLessonFeedBackAsync(int lessonID, String feedBack)
        {
            UserProfile profile = await HttpContext.GetUserAsync();

            if (profile == null)
            {
                return(Redirect($"~{Startup.Properties["LoginUrl"]}"));
            }

            LessonTime lesson = models.GetTable <LessonTime>().Where(l => l.LessonID == lessonID).FirstOrDefault();

            if (lesson == null)
            {
                return(new EmptyResult());
            }

            LessonFeedBack item = lesson.LessonFeedBack.Where(f => f.RegisterLesson.UID == profile.UID).FirstOrDefault();

            if (item == null)
            {
                if (lesson.RegisterLesson.GroupingMemberCount > 1)
                {
                    RegisterLesson regItem = lesson.GroupingLesson.RegisterLesson.Where(r => r.UID == profile.UID).FirstOrDefault();
                    if (regItem == null)
                    {
                        return(new EmptyResult());
                    }

                    item = new LessonFeedBack
                    {
                        LessonID   = lessonID,
                        RegisterID = regItem.RegisterID,
                        //Status = (int)Naming.IncommingMessageStatus.未讀
                    };
                }
                else
                {
                    item = new LessonFeedBack
                    {
                        LessonID   = lessonID,
                        RegisterID = lesson.RegisterID,
                        //Status = (int)Naming.IncommingMessageStatus.未讀
                    };
                }

                models.GetTable <LessonFeedBack>().InsertOnSubmit(item);
            }

            item.FeedBack     = feedBack;
            item.FeedBackDate = DateTime.Now;
            item.Status       = (int)Naming.IncommingMessageStatus.未讀;
            models.SubmitChanges();

            return(View("LessonFeedBackItem", item));
        }
Пример #14
0
        private bool ChangeDataValidation()
        {
            // Date check
            if (datePicker.SelectedDate is null)
            {
                MessageBox.Show("Поле 'Дата' не должно быть пустым");
                return(false);
            }

            // LessonTime check
            LessonTime _;

            cbcLessonTime.Text = cbcLessonTime.Text.Trim();
            if (cbcLessonTime.SelectedItem is null && !LessonTime.TryParse(cbcLessonTime.Text, out _))
            {
                MessageBox.Show("Неверный формат времени занятия");
                return(false);
            }

            // StudyGroup check
            cbcStudyGroup.Text = cbcStudyGroup.Text.Trim();
            if (cbcStudyGroup.SelectedItem is null && string.IsNullOrEmpty(cbcStudyGroup.Text))
            {
                MessageBox.Show("Поле 'Учебная группа' не должно быть пустым");
                return(false);
            }

            /// Lesson check
            cbcLesson.Text = cbcLesson.Text.Trim();
            if (cbcLesson.SelectedItem is null && string.IsNullOrEmpty(cbcLesson.Text))
            {
                MessageBox.Show("Поле 'Дисциплина' не должно быть пустым");
                return(false);
            }

            // Classroom check
            cbcClassroom.Text = cbcClassroom.Text.Trim();
            if (cbcClassroom.SelectedItem is null && string.IsNullOrEmpty(cbcClassroom.Text))
            {
                MessageBox.Show("Поле 'Аудитория' не должно быть пустым");
                return(false);
            }

            // Teacher check
            cbcTeacher.Text = cbcTeacher.Text.Trim();
            if (cbcTeacher.SelectedItem is null && string.IsNullOrEmpty(cbcTeacher.Text))
            {
                MessageBox.Show("Поле 'Преподаватель' не должго быть пустым");
                return(false);
            }

            return(true);
        }
Пример #15
0
 public static String CurrentLessonStatus(this LessonTime item)
 {
     return(item.TrainingPlan.Count == 0
                             ? item.RegisterLesson.LessonPriceType.Status == (int)Naming.DocumentLevelDefinition.自由教練預約
                                 ? item.LessonAttendance == null
                                     ? "已預約"
                                     : "已完成課程"
                                 : "已預約"
                             : item.LessonAttendance != null
                                 ? "已完成課程"
                                 : "編輯課程內容中");
 }
        public ActionResult CloneLearnerTrainingPlan(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>()
                              .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }));
            }

            IEnumerable <RegisterLesson> lessonItems = item.GroupingLesson.RegisterLesson;

            if (lessonItems.Count() < 2)
            {
                return(Json(new { result = false, message = "課程非一對多!!" }));
            }

            if (viewModel.CopyFrom.HasValue)
            {
                if (!viewModel.UID.HasValue)
                {
                    return(Json(new { result = false, message = "未指定同步目標之學員!!" }));
                }

                var source = item.AssertLearnerTrainingPlan(models, viewModel.CopyFrom.Value);
                var target = item.AssertLearnerTrainingPlan(models, viewModel.UID.Value);
                models.CloneTrainingPlan(source, target);
            }
            else
            {
                if (!viewModel.UID.HasValue)
                {
                    return(Json(new { result = false, message = "未指定同步來源之學員!!" }));
                }

                var source = item.AssertLearnerTrainingPlan(models, viewModel.UID.Value);
                foreach (var lesson in lessonItems.Where(r => r.UID != viewModel.UID.Value))
                {
                    var target = item.AssertLearnerTrainingPlan(models, lesson.UID);
                    models.CloneTrainingPlan(source, target);
                }
            }
            return(Json(new { result = true }));
        }
        public ActionResult CloneCoachPITrainingPlan(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>()
                              .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }));
            }

            var lessonItems = models.GetTable <LessonTime>().Where(l => l.GroupID == item.GroupID && l.LessonID != item.LessonID);

            if (lessonItems.Count() == 0)
            {
                return(Json(new { result = false, message = "課程非一對多!!" }));
            }

            if (viewModel.CopyFrom.HasValue)
            {
                var sourceLesson = item.GroupingLesson.LessonTime.Where(l => l.RegisterLesson.UID == viewModel.CopyFrom).FirstOrDefault();

                if (sourceLesson != null)
                {
                    var target = item.AssertTrainingPlan(models);
                    models.CloneTrainingPlan(sourceLesson.AssertTrainingPlan(models), target);

                    return(Json(new { result = true }));
                }
            }
            else
            {
                var source = item.AssertTrainingPlan(models);
                foreach (var lesson in lessonItems)
                {
                    var target = lesson.AssertTrainingPlan(models);
                    models.CloneTrainingPlan(source, target);
                }
                return(Json(new { result = true }));
            }

            return(Json(new { result = false, message = "複製失敗!!" }));
        }
Пример #18
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.Parameter != null)
            {
                LessonTime time = (LessonTime)e.Parameter;
                edit_lessontime = (LessonTime)e.Parameter;
                tbx_LessonNumber_AddGrade_Timetable_Settings.Text = time.lesson_number.ToString();
                tmp_Starttime_AddLesson_Timetable_Settings.Time   = time.start_time.GetTimeSpan();
                tmp_Endtime_AddLesson_Timetable_Settings.Time     = time.end_time.GetTimeSpan();
                tgs_DoubleLesson_AddLessonTime.IsOn = time.show_as_double;

                edit = true;
            }
            else
            {
                edit = false;
            }
        }
Пример #19
0
 public void PutBellList(string BellList)
 {
     try
     {
         string[] Lessons = BellList.Split('\n');
         for (int i = 0; i < Lessons.Length; i++)
         {
             LessonTime CurrentLesson = new LessonTime();
             CurrentLesson.beginTime = DateTime.Parse(Lessons[i].Split('-')[0]);
             CurrentLesson.endTime   = DateTime.Parse(Lessons[i].Split('-')[1]);
             BellSchedule.Add(CurrentLesson);
         }
     }
     catch
     {
         MessageBox.Show("ERROR_PutBellList");
     }
 }
Пример #20
0
        private void btn_Done_AddLesson_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                int.Parse(tbx_LessonNumber_AddGrade_Timetable_Settings.Text);
            } catch (Exception)
            {
                LessonNumberInValid();
                return;
            }
            TimeSpan starttime = tmp_Starttime_AddLesson_Timetable_Settings.Time;
            TimeSpan endtime   = tmp_Endtime_AddLesson_Timetable_Settings.Time;

            if (edit && edit_lessontime != null)
            {
                LessonTimeManager.DeleteLessonTime(edit_lessontime);
            }
            bool exeption_comes = false;
            Time startTime      = new Time();

            startTime.setTime(starttime.Hours, starttime.Minutes);
            Time endTime = new Time();

            endTime.setTime(endtime.Hours, endtime.Minutes);
            LessonTime new_lesson_time = new LessonTime();

            new_lesson_time.setLessonTime(int.Parse(tbx_LessonNumber_AddGrade_Timetable_Settings.Text), startTime, endTime, tgs_DoubleLesson_AddLessonTime.IsOn);
            try
            {
                new_lesson_time.Save();
            }
            catch (ArgumentException ae)
            {
                exeption_comes = true;
                if (ae.Message == "lessontime already exists")
                {
                    LessonTimeManager.lesson_already_exists_dialog();
                }
            }
            if (exeption_comes == false)
            {
                Frame.GoBack();
            }
        }
        public IViewComponentResult LessonContentDetails(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>()
                              .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Content("課程資料錯誤!!"));
            }

            return(View("~/Views/LessonConsole/Module/LessonContentDetails.cshtml", item));
        }
        public ActionResult LessonContentDetails(LessonTimeBookingViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>()
                              .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "課程資料錯誤!!" }));
            }

            return(View("~/Views/LessonConsole/Module/LessonContentDetails.cshtml", item));
        }
Пример #23
0
        public ActionResult LearnerAttendLesson(DailyBookingQueryViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }
            LessonTime item = models.GetTable <LessonTime>().Where(t => t.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "未登記此上課時間!!" }, JsonRequestBehavior.AllowGet));
            }

            item.LessonPlan.CommitAttendance = DateTime.Now;

            models.SubmitChanges();

            return(Json(new { result = true, message = "資料存檔完成!!" }));
        }
        public ActionResult RebookingByCoach(int id)
        {
            LessonTime item = models.GetTable <LessonTime>().Where(l => l.LessonID == id).FirstOrDefault();

            if (item == null)
            {
                return(View("~/Views/Shared/JsAlert.cshtml", model: "修改上課時間資料不存在!!"));
            }

            ViewBag.ViewModel = new LessonTimeViewModel
            {
                LessonID  = item.LessonID,
                ClassDate = item.ClassTime.Value,
                CoachID   = item.AttendingCoach.Value,
                //Duration = item.DurationInMinutes.Value,
                TrainingBySelf = (LessonTime.SelfTrainingDefinition?)item.TrainingBySelf,
                BranchID       = item.BranchID.Value
            };

            return(View("~/Views/ClassFacet/Module/RebookingByCoach.ascx", item));
        }
Пример #25
0
 // delete
 public bool DeleteLessonTime(int id)
 {
     using (AttenderEntities ef = new AttenderEntities())
     {
         LessonTime deletedLessonTime = ef.LessonTimes.FirstOrDefault(a => a.Id == id);
         if (deletedLessonTime == null)
         {
             return(false);
         }
         ef.LessonTimes.Remove(deletedLessonTime);
         try
         {
             ef.SaveChanges();
         }
         catch
         {
             return(false);
         }
     }
     return(true);
 }
Пример #26
0
        public LessonTimeModel GetLessonTimeById(int id)
        {
            LessonTimeModel lessonTime = null;

            using (AttenderEntities ef = new AttenderEntities())
            {
                LessonTime item = ef.LessonTimes.FirstOrDefault(a => a.Id == id);
                if (item != null)
                {
                    lessonTime = new LessonTimeModel()
                    {
                        Id              = item.Id,
                        CourseId        = item.CourseId,
                        LessonDate      = item.LessonDate,
                        StartTime       = item.StartTime,
                        EndTime         = item.EndTime,
                        ActualStartTime = item.ActualStartTime,
                        ClassRoom       = item.ClassRoom
                    };
                }
            }
            return(lessonTime);
        }
Пример #27
0
        public int CheckLessonIdIsNow(string date, string hour, int lecturerId)
        {
            DateTime   rdate       = DateTime.Parse(date);
            TimeSpan   rhour       = TimeSpan.Parse(hour);
            List <int> lessonTimes = new List <int>();

            lessonTimes = GetAllLessonIdsNow(date, hour);

            foreach (int CourseId in lessonTimes)
            {
                int ans = CheckIfLecCourse(CourseId, lecturerId);
                if (ans == 1)
                {
                    using (AttenderEntities ef = new AttenderEntities())
                    {
                        LessonTime item = ef.LessonTimes.FirstOrDefault(a => a.LessonDate == rdate &&
                                                                        a.StartTime <= rhour && a.EndTime >= rhour && a.CourseId == CourseId);
                        return(item.Id);
                    }
                }
            }

            return(-1);
        }
Пример #28
0
 public static String FullLessonDuration(this LessonTime item)
 {
     return($"{item.ClassTime:yyyy/MM/dd HH:mm}~{item.ClassTime.Value.AddMinutes(item.DurationInMinutes.Value):HH:mm}");
 }
        public async Task <ActionResult> CommitPaymentForSessionAsync(PaymentViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            var profile = await HttpContext.GetUserAsync();

            var        lesson   = models.GetTable <RegisterLesson>().Where(r => r.RegisterID == viewModel.RegisterID).FirstOrDefault();
            LessonTime timeItem = null;

            if (lesson == null)
            {
                ModelState.AddModelError("RegisterID", "請選擇收款課程!!");
            }
            else
            {
                timeItem           = lesson.LessonTime.First();
                viewModel.SellerID = timeItem.BranchStore?.IsVirtualClassroom() == true
                    ? timeItem.AsAttendingCoach.SelectWorkBranchID()
                    : timeItem.BranchID.Value;
            }

            if (!viewModel.PayoffDate.HasValue)
            {
                ModelState.AddModelError("PayoffDate", "請選擇收款日期!!");
            }

            viewModel.ItemNo          = new string[] { "01" };
            viewModel.Brief           = new string[] { $"{timeItem.RegisterLesson.LessonPriceType.SimpleDescription}訓練費用" };
            viewModel.CostAmount      = new int?[] { viewModel.PayoffAmount };
            viewModel.UnitCost        = new int?[] { viewModel.PayoffAmount };
            viewModel.Piece           = new int?[] { 1 };
            viewModel.ItemRemark      = new string[] { null };
            viewModel.InvoiceType     = Naming.InvoiceTypeDefinition.一般稅額計算之電子發票;
            viewModel.CarrierId1      = viewModel.CarrierId1.GetEfficientString();
            viewModel.TransactionType = (int)Naming.PaymentTransactionType.自主訓練;

            if (viewModel.CarrierId1 != null)
            {
                if (viewModel.CarrierType == null)
                {
                    viewModel.CarrierType = "3J0002";
                }
            }

            var invoice = checkInvoiceNo(viewModel);

            if (String.IsNullOrEmpty(viewModel.PaymentType))
            {
                ModelState.AddModelError("PaymentType", "請選擇收款方式!!");
            }

            if (!viewModel.InvoiceType.HasValue)
            {
                ModelState.AddModelError("InvoiceType", "請選擇發票類型");
            }

            if (!ModelState.IsValid)
            {
                ViewBag.ModelState = ModelState;
                return(View(Startup.Properties["ReportInputError"]));
            }

            try
            {
                Payment item = models.GetTable <Payment>()
                               .Where(p => p.PaymentID == viewModel.PaymentID).FirstOrDefault();

                if (item == null)
                {
                    item = new Payment
                    {
                        Status             = (int)Naming.CourseContractStatus.已生效,
                        TuitionInstallment = new TuitionInstallment
                        {
                        },
                        PaymentTransaction = new PaymentTransaction
                        {
                        },
                        PaymentAudit = new Models.DataEntity.PaymentAudit {
                        }
                    };
                    item.TuitionAchievement.Add(new TuitionAchievement
                    {
                        CoachID        = lesson.AdvisorID.Value,
                        ShareAmount    = viewModel.PayoffAmount,
                        CoachWorkPlace = lesson.ServingCoach.WorkBranchID()
                    });
                    models.GetTable <Payment>().InsertOnSubmit(item);
                    item.InvoiceItem = invoice;
                }
                item.TuitionInstallment.RegisterID   = lesson.IntuitionCharge.RegisterID;
                item.TuitionInstallment.PayoffAmount = viewModel.PayoffAmount;
                item.TuitionInstallment.PayoffDate   = viewModel.PayoffDate;

                item.PaymentTransaction.BranchID = viewModel.SellerID.Value;

                preparePayment(viewModel, profile, item);

                models.SubmitChanges();

                if (timeItem.IsPISession())
                {
                    models.AttendLesson(lesson.LessonTime.First(), profile);
                }

                if (invoice.InvoiceCarrier != null && viewModel.MyCarrier == true)
                {
                    lesson.UserProfile.UserProfileExtension.CarrierType = invoice.InvoiceCarrier.CarrierType;
                    lesson.UserProfile.UserProfileExtension.CarrierNo   = invoice.InvoiceCarrier.CarrierNo;
                    models.SubmitChanges();
                }

                TaskExtensionMethods.ProcessInvoiceToGov();

                return(Content(new { result = true, invoiceNo = item.InvoiceItem.TrackCode + item.InvoiceItem.No, item.InvoiceID, item.InvoiceItem.InvoiceType, item.PaymentID }.JsonStringify(), "application/json"));
            }
            catch (Exception ex)
            {
                ApplicationLogging.CreateLogger <PaymentConsoleController>()
                .LogError(ex, ex.Message);
                return(Json(new { result = false, message = ex.Message }));
            }
        }
Пример #30
0
        public List <CourseLesson> FormSchedule(List <CDayOfWeak> avalibleDays, LessonTime duration, DateTime startDate, int weekNum)
        {
            const int minutesPerHour = 60;
            int       lessonMins     = duration.Hours * minutesPerHour + duration.Minutes;
            var       schedule       = new List <CourseLesson>();
            DateTime  curDate        = GetFirstWorkDay(avalibleDays, startDate);

            int[] weekDays   = (int[])Enum.GetValues(typeof(DayOfWeek));
            int   startIndex = weekDays[(int)curDate.DayOfWeek];

            //  DateTime startDate = curDate.AddDays(startIndex);

            for (int i = 0; i < weekNum; i++)
            {
                for (int j = startIndex; j < 7;)
                {
                    int index = avalibleDays.FindIndex(x => x.IsWorkDay == true && (int)x.WeekDay == j);
                    if (index >= 0)
                    {
                        int startLessonTime = avalibleDays[index].StartTime * minutesPerHour;
                        int endLessonsTime  = 0;
                        if (avalibleDays[index].EndTime == 24)
                        {
                            endLessonsTime = avalibleDays[index].EndTime * minutesPerHour - lessonMins - 1;
                        }
                        else
                        {
                            endLessonsTime = avalibleDays[index].EndTime * minutesPerHour - lessonMins;
                        }


                        for (int k = startLessonTime; k <= endLessonsTime; k += lessonMins)
                        {
                            schedule.Add(new CourseLesson()
                            {
                                StartLessonTime = new DateTime(1, 1, 1, k / minutesPerHour, k - (k / minutesPerHour * minutesPerHour), 0),
                                EndLessonTime   = new DateTime(1, 1, 1, (k + lessonMins) / minutesPerHour, (k + lessonMins) - ((k + lessonMins) / minutesPerHour * minutesPerHour), 0),
                                WeekDay         = curDate.DayOfWeek,
                                isBusy          = false
                            });
                        }
                    }
                    curDate = curDate.AddDays(1);
                    int temp = j + 1;
                    if (temp == startIndex)
                    {
                        break;
                    }
                    if (temp < 7)
                    {
                        j++;
                    }
                    else
                    {
                        j = 0;
                    }
                }
            }



            //for (int i = startIndex; i < 7; i++)
            //{

            //    if (avalibleDays[i].IsWorkDay)
            //    {
            //        int startTimeTemp = avalibleDays[i].StartTime * minutesPerHour;
            //        int entTime = avalibleDays[i].EndTime * minutesPerHour;
            //        for (int j = 0; j < (avalibleDays[i].EndTime * minutesPerHour - avalibleDays[i].StartTime * minutesPerHour) / (lessonMins); j++)
            //        {
            //            schedule.Lessons.Add(new CourseLesson()
            //            {
            //                StartTime = new DateTime(startDate.Year, startDate.Month, startDate.Day, startTimeTemp / minutesPerHour, startTimeTemp - startTimeTemp / minutesPerHour, 0),
            //                EndTime = new DateTime(startDate.Year, startDate.Month, startDate.Day, (startTimeTemp + lessonMins) / minutesPerHour, (startTimeTemp + lessonMins) - startTimeTemp / minutesPerHour, 0),
            //                Duration = duration,
            //                IsFree = true
            //            });
            //            startTimeTemp += lessonMins;
            //        }

            //    }
            //    startDate = startDate.AddDays(1);
            //    if (i == startIndex - 1)
            //    {
            //        break;
            //    }
            //}

            return(schedule);
        }