示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
        }