public ActionResult <CourseDto> CreateCourseForAuthor(Guid authorId, CourseInputDto course) { if (!_courseLibraryRepository.AuthorExists(authorId)) { return(NotFound()); } var courseEntity = _mapper.Map <Entities.Course>(course); _courseLibraryRepository.AddCourse(authorId, courseEntity); _courseLibraryRepository.Save(); var courseOutput = _mapper.Map <Models.CourseDto>(courseEntity); return(CreatedAtRoute("GetCourseForAuthor", new { authorId = courseOutput.AuthorId, courseId = courseOutput.Id }, courseOutput)); }
public IActionResult Add([FromBody] CourseInputDto courseInputDto) { var newCourse = new Course { Id = Guid.NewGuid(), CourseDescription = courseInputDto.CourseDescription, CourseHours = courseInputDto.CourseHours, CourseIdentifier = courseInputDto.CourseIdentifier, CourseName = courseInputDto.CourseName }; var response = _courseRepository.Add(newCourse); if (response.Success) { return(CreatedAtAction(nameof(Get), new { id = newCourse.Id }, newCourse)); } return(StatusCode(500, response.Message)); }
public async Task <ActionResult <CourseDto> > PostCourse(CourseInputDto input) { DateTime?datetime = null; var users = await _context.Users.Where(x => x.FullName != null).ToListAsync(); var currency = await _context.Currencies.Where(x => !x.VirtualDeleted && x.IsActive).FirstOrDefaultAsync(); var defaultCurrency = await _context.Currencies.Where(x => !x.VirtualDeleted).FirstOrDefaultAsync(); try { var typeOfPacket = await _context.TypeOfPackets.FirstOrDefaultAsync(x => !x.VirtualDeleted && x.Id == input.TypeOfPacketId); var course = new Course() { ExamDate = DateTimeString.TryParsingDate(input.ExamDate, false), InChargeId = input.InChargeId, CustomerId = input.CustomerId, LessonPeriod = input.LessonPeriod, Note = input.Note, StartCourse = DateTimeString.TryParsingDate(input.StartCourse, false), TotalAmount = input.TotalAmount, CurrencyId = currency == null ? defaultCurrency?.Id : currency.Id, PeroidBeforeSendEmailId = input.PeroidBeforeSendEmailId, TypeOfExamId = input.TypeOfExamId, TypeOfPacketId = input.TypeOfPacketId, CreatedDate = DateTime.Now, CreatedUserId = input.UserId }; course.RemainingMoney = course.TotalAmount; course.Status = Domain.Enums.CourseStatus.NotStarted; _context.Courses.Add(course); await _context.SaveChangesAsync(); for (int i = 0; i < typeOfPacket.LessonsCount; i++) { var lesson = new Lesson() { Date = datetime, Time = datetime, InChargeId = input.InChargeId, CourseId = course.Id, Number = i + 1, LessonPeriod = input.LessonPeriod, Note = input.Note, Status = Domain.Enums.LessonStatus.NotStarted, CreatedDate = DateTime.Now, CreatedUserId = input.UserId }; _context.Lessons.Add(lesson); } var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == input.UserId); var log = new Log() { DateTime = DateTime.Now, TypeFullName = typeof(Course).FullName, Content = "@userName@addAction@objTitle", TypeId = course.Id, UserId = user.Id }; _context.Logs.Add(log); await _context.SaveChangesAsync(); course = await _context.Courses.Where(x => x.Id == course.Id).Include(x => x.InCharge) .Include(x => x.Currency) .Include(x => x.Customer) .Include(x => x.TypeOfExam) .Include(x => x.TypeOfPacket) .Include(x => x.PeroidBeforeSendEmail).FirstOrDefaultAsync(); var result = new CourseDto() { Id = course.Id, ExamDate = course.ExamDate.HasValue ? course.ExamDate.Value.ToString("G") : "", ExamDateInDays = course.ExamDate.HasValue ? (DateTime.Now.Date - course.ExamDate.Value).TotalDays.ToString() : "0", InChargeId = course.InChargeId, InChargeName = users.SingleOrDefault(y => y.Id == course.InChargeId).FullName, CustomerId = course.CustomerId.HasValue ? course.CustomerId.Value : 0, LessonPeriod = course.LessonPeriod.ToString(), Note = course.Note, RemainingMoney = course.RemainingMoney, StartCourse = course.StartCourse.HasValue ? course.StartCourse.Value.ToString("G") : "", Status = course.Status.ToString(), TotalAmount = course.TotalAmount, Currency = course.Currency == null ? new CurrencyDto() : new CurrencyDto() { Id = course.Currency.Id, Name = course.Currency.Name, ForeignName = course.Currency.ForeignName, IsActive = course.Currency.IsActive, Symbol = course.Currency.Symbol, }, PeroidBeforeSendEmail = course.PeroidBeforeSendEmail == null ? new PeroidBeforeSendEmailDto() : new PeroidBeforeSendEmailDto() { Id = course.PeroidBeforeSendEmail.Id, Name = course.PeroidBeforeSendEmail.Name, ForeignName = course.PeroidBeforeSendEmail.ForeignName, Hours = course.PeroidBeforeSendEmail.Hours, }, TypeOfExam = course.TypeOfExam == null ? new TypeOfExamDto() : new TypeOfExamDto() { Id = course.TypeOfExam.Id, Name = course.TypeOfExam.Name, ForeignName = course.TypeOfExam.ForeignName, Cost = course.TypeOfExam.Cost }, TypeOfPacket = course.TypeOfPacket == null ? new TypeOfPacketDto() : new TypeOfPacketDto() { Id = course.TypeOfPacket.Id, Name = course.TypeOfPacket.Name, ForeignName = course.TypeOfPacket.ForeignName, Cost = course.TypeOfPacket.Cost } }; return(result); } catch (Exception ex) { return(null); } }
public async Task <ActionResult <CourseDto> > PutCourse(int id, CourseInputDto input) { DateTime?datetime = null; var users = await _context.Users.Where(x => x.FullName != null).ToListAsync(); var currency = await _context.Currencies.Where(x => !x.VirtualDeleted && x.IsActive).FirstOrDefaultAsync(); var defaultCurrency = await _context.Currencies.Where(x => !x.VirtualDeleted).FirstOrDefaultAsync(); var lessons = await _context.Lessons.Where(x => !x.VirtualDeleted && x.CourseId == id).ToListAsync(); var typeOfPacket = await _context.TypeOfPackets.FirstOrDefaultAsync(x => !x.VirtualDeleted && x.Id == input.TypeOfPacketId); var course = await _context.Courses.FindAsync(id); course.ExamDate = DateTimeString.TryParsingDate(input.ExamDate, false); course.InChargeId = input.InChargeId; course.CustomerId = input.CustomerId; course.LessonPeriod = input.LessonPeriod; course.Note = input.Note; course.RemainingMoney = input.TotalAmount - (course.TotalAmount - course.RemainingMoney); course.StartCourse = DateTimeString.TryParsingDate(input.StartCourse, false); course.TotalAmount = input.TotalAmount; course.CurrencyId = currency == null ? defaultCurrency?.Id : currency.Id; course.PeroidBeforeSendEmailId = input.PeroidBeforeSendEmailId; course.TypeOfExamId = input.TypeOfExamId; course.TypeOfPacketId = input.TypeOfPacketId; course.UpdatedUserId = input.UserId; course.UpdatedDate = DateTime.Now; if (typeOfPacket.LessonsCount > lessons.Count) { var lastLesson = await _context.Lessons.Where(x => !x.VirtualDeleted && x.CourseId == course.Id).OrderByDescending(x => x.Number).FirstOrDefaultAsync(); var number = lastLesson.Number; course.Status = Domain.Enums.CourseStatus.Started; for (int i = 0; i < typeOfPacket.LessonsCount - lessons.Count; i++) { number += 1; var lesson = new Lesson() { Date = datetime, Time = datetime, InChargeId = input.InChargeId, CourseId = id, LessonPeriod = input.LessonPeriod, Note = input.Note, Number = number, Status = Domain.Enums.LessonStatus.NotStarted, CreatedDate = DateTime.Now, CreatedUserId = input.UserId }; _context.Lessons.Add(lesson); } } else if (!lessons.Any(x => x.Status != Domain.Enums.LessonStatus.Active || x.Status != Domain.Enums.LessonStatus.NotStarted)) { course.Status = Domain.Enums.CourseStatus.Finished; } _context.Entry(course).State = EntityState.Modified; var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == input.UserId); var log = new Log() { DateTime = DateTime.Now, TypeFullName = typeof(Course).FullName, Content = "@userName@updateAction@objTitle", TypeId = course.Id, UserId = user.Id }; _context.Logs.Add(log); try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CourseExists(id)) { return(NotFound()); } else { throw; } } var result = new CourseDto(); //var result = new CourseDto() //{ // Id = course.Id, // ExamDate = course.ExamDate.HasValue ? course.ExamDate.Value.ToString("G") : "", // ExamDateInDays = course.ExamDate.HasValue ? (course.ExamDate.Value - DateTime.Now.Date).TotalDays.ToString() : "0", // InChargeId = course.InChargeId, // NextLessonDate = lessons.Any() ? lessons.OrderBy(x => x.Date).FirstOrDefault().Date.Value.ToString("G") : "", // NextLessonTime = lessons.Any() ? lessons.OrderBy(x => x.Date).OrderBy(x => x.Time).FirstOrDefault().Time.Value.ToString("T") : "", // InChargeName = users.SingleOrDefault(y => y.Id == course.InChargeId).FullName, // CustomerId = course.CustomerId.HasValue ? course.CustomerId.Value : 0, // LessonPeriod = course.LessonPeriod.ToString(), // Note = course.Note, // RemainingMoney = course.RemainingMoney, // StartCourse = course.StartCourse.HasValue ? course.StartCourse.Value.ToString("G") : "", // Status = course.Status.ToString(), // TotalAmount = course.TotalAmount, // Currency = course.Currency == null ? new CurrencyDto() : new CurrencyDto() // { // Id = course.Currency.Id, // Name = course.Currency.Name, // ForeignName = course.Currency.ForeignName, // IsActive = course.Currency.IsActive, // Symbol = course.Currency.Symbol, // }, // PeroidBeforeSendEmail = course.PeroidBeforeSendEmail == null ? new PeroidBeforeSendEmailDto() : new PeroidBeforeSendEmailDto() // { // Id = course.PeroidBeforeSendEmail.Id, // Name = course.PeroidBeforeSendEmail.Name, // ForeignName = course.PeroidBeforeSendEmail.ForeignName, // Hours = course.PeroidBeforeSendEmail.Hours, // }, // TypeOfExam = course.TypeOfExam == null ? new TypeOfExamDto() : new TypeOfExamDto() // { // Id = course.TypeOfExam.Id, // Name = course.TypeOfExam.Name, // ForeignName = course.TypeOfExam.ForeignName, // Cost = course.TypeOfExam.Cost // }, // TypeOfPacket = course.TypeOfPacket == null ? new TypeOfPacketDto() : new TypeOfPacketDto() // { // Id = course.TypeOfPacket.Id, // Name = course.TypeOfPacket.Name, // ForeignName = course.TypeOfPacket.ForeignName, // Cost = course.TypeOfPacket.Cost // } //}; return(result); }