public async Task <ActionResult <LessonDto> > PostLesson(LessonInputDto input)
        {
            DateTime?datetime = null;
            var      users    = await _context.Users.Where(x => x.FullName != null).ToListAsync();

            try
            {
                var lesson = new Lesson()
                {
                    Date          = DateTimeString.TryParsingDate(input.Date, false),
                    Time          = DateTimeString.TryParsingDate(input.Time, true),
                    InChargeId    = input.InChargeId,
                    CourseId      = input.CourseId,
                    LessonPeriod  = input.LessonPeriod,
                    Note          = input.Note,
                    CreatedDate   = DateTime.Now,
                    CreatedUserId = input.UserId
                };
                lesson.Status = Domain.Enums.LessonStatus.NotStarted;
                _context.Lessons.Add(lesson);
                await _context.SaveChangesAsync();

                var lastLesson = await _context.Lessons.Where(x => !x.VirtualDeleted &&
                                                              x.CourseId == lesson.CourseId && x.Id != lesson.Id).OrderByDescending(x => x.Number).FirstOrDefaultAsync();

                lesson.Number += lastLesson.Number;
                _context.Entry(lesson).State = EntityState.Modified;
                var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == input.UserId);

                var log = new Log()
                {
                    DateTime     = DateTime.Now,
                    TypeFullName = typeof(Lesson).FullName,
                    Content      = "@userName@addAction@objTitle",
                    TypeId       = lesson.Id,
                    UserId       = user.Id
                };
                _context.Logs.Add(log);
                await _context.SaveChangesAsync();

                var result = new LessonDto()
                {
                    Id           = lesson.Id,
                    Date         = lesson.Date.HasValue ? lesson.Date.Value.ToString("G") : "",
                    Time         = lesson.Time.HasValue ? lesson.Time.Value.ToString("T") : "",
                    TimeInTimes  = lesson.Time.HasValue && lesson.Date.HasValue ? ((DateTime.Now.Date - lesson.Date.Value).TotalHours + (DateTime.Now.Hour - lesson.Time.Value.Hour)).ToString() : "0",
                    CourseId     = lesson.CourseId.HasValue ? lesson.CourseId.Value : 0,
                    InChargeId   = lesson.InChargeId,
                    InChargeName = users.SingleOrDefault(y => y.Id == lesson.InChargeId).FullName,
                    LessonPeriod = lesson.LessonPeriod,
                    Note         = lesson.Note,
                    Status       = lesson.Status
                };
                return(result);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public async Task <ActionResult <LessonDto> > PutLesson(int id, LessonInputDto input)
        {
            DateTime?datetime = null;
            var      users    = await _context.Users.Where(x => x.FullName != null).ToListAsync();

            var lesson = await _context.Lessons.FindAsync(id);

            lesson.Date         = DateTimeString.TryParsingDate(input.Date, false);
            lesson.Time         = DateTimeString.TryParsingDate(input.Time, true);
            lesson.InChargeId   = input.InChargeId;
            lesson.CourseId     = input.CourseId;
            lesson.LessonPeriod = input.LessonPeriod;
            lesson.Note         = input.Note;
            lesson.Status       =
                Domain.Enums.LessonStatus.NotStarted;
            lesson.UpdatedUserId         = input.UserId;
            lesson.UpdatedDate           = DateTime.Now;
            _context.Entry(lesson).State = EntityState.Modified;
            var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == input.UserId);

            var log = new Log()
            {
                DateTime     = DateTime.Now,
                TypeFullName = typeof(Lesson).FullName,
                Content      = "@userName@updateAction@objTitle",
                TypeId       = lesson.Id,
                UserId       = user.Id
            };

            _context.Logs.Add(log);

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!LessonExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            var result = new LessonDto()
            {
                Id           = lesson.Id,
                Date         = lesson.Date.HasValue ? lesson.Date.Value.ToString("G") : "",
                Time         = lesson.Time.HasValue ? lesson.Time.Value.ToString("T") : "",
                TimeInTimes  = lesson.Time.HasValue && lesson.Date.HasValue ? ((DateTime.Now.Date - lesson.Date.Value).TotalHours + (DateTime.Now.Hour - lesson.Time.Value.Hour)).ToString() : "0",
                CourseId     = lesson.CourseId.HasValue ? lesson.CourseId.Value : 0,
                InChargeId   = lesson.InChargeId,
                InChargeName = users.SingleOrDefault(y => y.Id == lesson.InChargeId).FullName,
                LessonPeriod = lesson.LessonPeriod,
                Note         = lesson.Note,
                Status       = lesson.Status
            };

            return(result);
        }