public async Task <IActionResult> AddOnetoOneCourseInstance([FromBody] OnetoOneCourseInstancesModel model) { var result = addCourse(model); if (result.IsSuccess == false) { return(BadRequest(result)); } else { return(Ok(result)); } }
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)); } }
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); } }
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)); } }