コード例 #1
0
        public async Task <IActionResult> AddOnetoOneCourseInstance([FromBody] OnetoOneCourseInstancesModel model)
        {
            var result = addCourse(model);

            if (result.IsSuccess == false)
            {
                return(BadRequest(result));
            }
            else
            {
                return(Ok(result));
            }
        }
コード例 #2
0
        public async Task <IActionResult> AddOnetoOneCourseInstance([FromBody] OnetoOneCourseInstancesModel model)
        {
            var result = new Result <string>();

            try
            {
                using (var dbtransaction = await _ablemusicContext.Database.BeginTransactionAsync())
                {
                    model.OnetoOneCourses.ForEach(s =>
                    {
                        var room = _ablemusicContext.AvailableDays.FirstOrDefault(
                            q => q.TeacherId == s.TeacherId && q.OrgId == s.OrgId &&
                            q.DayOfWeek == s.Schedule.DayOfWeek);


                        if (room == null)
                        {
                            throw new Exception("this teacher is not available");
                        }
                        if (room.RoomId == null)
                        {
                            throw new Exception("Room of this teacher in this branch does not found");
                        }

                        var durationType = _ablemusicContext.Course.FirstOrDefault(w => w.CourseId == s.CourseId).Duration;
                        _ablemusicContext.Add(new One2oneCourseInstance
                        {
                            CourseId       = s.CourseId, TeacherId = s.TeacherId, OrgId = s.OrgId,
                            BeginDate      = s.BeginDate, EndDate = s.EndDate, LearnerId = s.LearnerId,
                            RoomId         = room.RoomId,
                            CourseSchedule = new List <CourseSchedule>()
                            {
                                new CourseSchedule
                                {
                                    DayOfWeek = s.Schedule.DayOfWeek,
                                    BeginTime = s.Schedule.BeginTime,
                                    EndTime   = GetEndTimeForOnetoOneCourseSchedule(s.Schedule.BeginTime, durationType)
                                }
                            }
                        });
                    });
                    await _ablemusicContext.SaveChangesAsync();

                    model.OnetoOneCourses.ForEach(async s =>
                    {
                        await _lessonGenerateService.GetTerm((DateTime)s.BeginDate, s.id, 1);
                    });



                    dbtransaction.Commit();
                }

                result.Data = "success";
                return(Ok(result));
            }
            catch (Exception ex)
            {
                result.IsSuccess    = false;
                result.ErrorMessage = ex.Message;
                return(BadRequest(result));
            }
        }
コード例 #3
0
        private Result <string> addCourse(OnetoOneCourseInstancesModel model)
        {
            var        result            = new Result <string>();
            List <int> courseInstanceIds = new List <int>();
            int?       learnerId         = model.OnetoOneCourses[0].LearnerId;

            One2oneCourseInstance one2oneCourseInstance = new One2oneCourseInstance();

            try
            {
                using (var dbtransaction = _ablemusicContext.Database.BeginTransaction())
                {
                    model.OnetoOneCourses.ForEach(s =>
                    {
                        var room = _ablemusicContext.AvailableDays.FirstOrDefault(
                            q => q.TeacherId == s.TeacherId && q.OrgId == s.OrgId &&
                            q.DayOfWeek == s.Schedule.DayOfWeek);

                        short roomId;
                        if (room == null)
                        {
                            throw new Exception("This teacher is not available!");
                        }
                        if (s.RoomId != null && s.RoomId != 0)
                        {
                            roomId = s.RoomId.Value;
                        }
                        else if (room.RoomId != null)
                        {
                            roomId = room.RoomId.Value;
                        }
                        else
                        {
                            throw new Exception("This teacher has no room in this branch!");
                        }

                        var durationType      = _ablemusicContext.Course.FirstOrDefault(w => w.CourseId == s.CourseId).Duration;
                        one2oneCourseInstance = new One2oneCourseInstance
                        {
                            CourseId       = s.CourseId, TeacherId = s.TeacherId, OrgId = s.OrgId,
                            BeginDate      = s.BeginDate, EndDate = s.EndDate, LearnerId = s.LearnerId,
                            RoomId         = roomId,
                            CourseSchedule = new List <CourseSchedule>()
                            {
                                new CourseSchedule
                                {
                                    DayOfWeek = s.Schedule.DayOfWeek,
                                    BeginTime = s.Schedule.BeginTime,
                                    EndTime   = GetEndTimeForOnetoOneCourseSchedule(s.Schedule.BeginTime, durationType)
                                }
                            }
                        };
                        _ablemusicContext.Add(one2oneCourseInstance);
                    });
                    _ablemusicContext.SaveChangesAsync();
                    courseInstanceIds.Add(one2oneCourseInstance.CourseInstanceId);

                    var newModel = _ablemusicContext.One2oneCourseInstance.
                                   Where(o => o.LearnerId == model.OnetoOneCourses[0].LearnerId).
                                   Select(o => new { o.BeginDate, id = o.CourseInstanceId }).ToList();

                    newModel.ForEach(async s =>
                    {
                        await _lessonGenerateService.GetTerm((DateTime)s.BeginDate, s.id, 1);
                    });
                    if (isNewStudent(learnerId))
                    {
                        // if (!_invoicePatchService.InvoicePatch(courseInstanceIds))
                        //throw new Exception("Invoice save error!");
                        _invoicePatchService.InvoicePatch(courseInstanceIds);
                    }

                    _ablemusicContext.SaveChangesAsync();
                    dbtransaction.Commit();
                }

                result.Data = "success";
                return(result);
            }
            catch (Exception ex)
            {
                result.IsSuccess    = false;
                result.ErrorMessage = ex.Message;
                return(result);
            }
        }
コード例 #4
0
        public async Task <IActionResult> ChangeOnetoOneCourseInstance(int lessonId, short duration)
        {
            var result = new Result <dynamic>();
            OnetoOneCourseInstancesModel model = new OnetoOneCourseInstancesModel();

            try {
                var lesson = _ablemusicContext.Lesson.
                             Where(l => l.LessonId == lessonId)
                             .FirstOrDefault();
                var courseInstance = _ablemusicContext.One2oneCourseInstance.Include(c => c.CourseSchedule).
                                     Where(l => l.CourseInstanceId == lesson.CourseInstanceId)
                                     .FirstOrDefault();
                var orginalCourse = _ablemusicContext.Course.
                                    Where(l => l.CourseId == courseInstance.CourseId)
                                    .FirstOrDefault();

                var newCourse = _ablemusicContext.Course.
                                Where(l => l.CourseType == orginalCourse.CourseType &&
                                      l.Level == orginalCourse.Level &&
                                      l.TeacherLevel == orginalCourse.TeacherLevel &&
                                      l.CourseCategoryId == orginalCourse.CourseCategoryId &&
                                      l.Duration == duration)
                                .FirstOrDefault();

                if (newCourse == null || courseInstance == null ||
                    orginalCourse == null || lesson == null)
                {
                    result.IsSuccess    = false;
                    result.ErrorMessage = "This lesson can not be changed!";
                    return(BadRequest(result));
                }
                model.OnetoOneCourses = new List <OnetoOneCourseInstanceModel>();
                model.OnetoOneCourses.Add(
                    new OnetoOneCourseInstanceModel
                {
                    id        = courseInstance.CourseInstanceId,
                    CourseId  = newCourse.CourseId,
                    TeacherId = courseInstance.TeacherId,
                    OrgId     = courseInstance.OrgId,
                    RoomId    = courseInstance.RoomId,
                    BeginDate = lesson.BeginTime,
                    EndDate   = courseInstance.EndDate,
                    LearnerId = courseInstance.LearnerId,
                    Schedule  = new CourseScheduleModel
                    {
                        DayOfWeek = (byte)DayofWeekToInt(lesson.BeginTime.Value.DayOfWeek),
                        BeginTime = lesson.BeginTime.Value.TimeOfDay
                    }
                }
                    );
                var resultQuit = quitCourse(courseInstance.CourseInstanceId, lesson.BeginTime.Value.AddDays(-1));

                if (resultQuit.IsSuccess == false)
                {
                    return(BadRequest(resultQuit));
                }


                var resultAdd = addCourse(model);
                if (resultAdd.IsSuccess == false)
                {
                    return(BadRequest(resultAdd));
                }
                else
                {
                    return(Ok(resultAdd));
                }
            }
            catch (Exception ex)
            {
                result.IsSuccess    = false;
                result.ErrorMessage = ex.Message;
                return(BadRequest(result));
            }
        }