public ResponseModel Action(ConfigGroupQuestionDto configGroupQuestionDto)
        {
            var methodName = MethodBase.GetCurrentMethod().Name;

            using var transaction = _context.Database.BeginTransaction();

            try
            {
                _logger.LogInformation($"Start Function => {methodName}");

                //delete
                var questionIds = configGroupQuestionDto.Questions
                                  .Where(r => r.IdGroup == configGroupQuestionDto.IdGroup && r.IdConfigGroupQuestion != Guid.Empty && r.IdQuestion != Guid.Empty)
                                  .Select(r => r.IdQuestion)
                                  .ToList();
                var deletes = _context.ConfigGroupQuestion
                              .Where(r => r.IdGroup == configGroupQuestionDto.IdGroup && !questionIds.Contains(r.IdQuestion));
                _context.RemoveRange(deletes);

                //update
                var questionUpdates = configGroupQuestionDto.Questions.Where(r => r.IdConfigGroupQuestion != Guid.Empty && r.IdQuestion != Guid.Empty).ToList();
                var updates         = _mapper.Map <List <ConfigGroupQuestionModel>, List <Entities.Models.ConfigGroupQuestion> >(questionUpdates);
                _context.ConfigGroupQuestion.UpdateRange(updates);


                //create
                var questionCreate = configGroupQuestionDto.Questions.Where(r => r.IdConfigGroupQuestion == Guid.Empty).ToList();
                var creates        = _mapper.Map <List <ConfigGroupQuestionModel>, List <Entities.Models.ConfigGroupQuestion> >(questionCreate);
                var maxOrder       = _context.ConfigGroupQuestion.Where(r => r.IdGroup == configGroupQuestionDto.IdGroup).Max(r => r.Order) ?? 0;
                creates.ForEach(r =>
                {
                    r.IdGroup    = configGroupQuestionDto.IdGroup;
                    r.CreateDate = DateTime.Now;
                    r.CreateBy   = "System";
                    r.Order      = ++maxOrder;
                });
                _context.AddRange(creates);

                _context.SaveChanges();
                transaction.Commit();
                _logger.LogInformation($"Finish Function => {methodName}");

                return(new ResponseModel
                {
                    Success = true,
                });
            }
            catch (Exception ex)
            {
                var messageError = $"Error Function => {methodName}";
                _logger.LogError(ex, messageError);
                throw new ArgumentException(messageError, ex);
            }
        }
        public ResponseModel Action(ConfigGroupQuestionDto configGroupQuestionDto)
        {
            var result = new ResponseModel();

            try
            {
                result = _configGroupQuestionService.Action(configGroupQuestionDto);
                return(result);
            }
            catch
            {
                return(new ResponseModel
                {
                    Message = result.Message,
                    StatusCode = StatusCodes.Status500InternalServerError
                });
            }
        }