public async Task <bool> PerformSaveAndUpdateOperationAsync(UserModelingDetails userModelingDetails)
        {
            try
            {
                using (var conn = await Connection.OpenConnectionAsync())
                {
                    using (var tran = conn.BeginTransaction())
                    {
                        try
                        {
                            conn.Execute(
                                SpNames.UserModeling.ClearDetail,
                                param: new { userModelingDetails.UserModeling.UserId },
                                transaction: tran,
                                commandType: CommandType.StoredProcedure);

                            /*  @UserId UNIQUEIDENTIFIER, @ExpCode INT, @WebSite NVARCHAR(350), @AgentNeedCode INT, @Experiance NVARCHAR(2000) */
                            var param = new DynamicParameters();
                            param.Add("@UserId", userModelingDetails.UserModeling.UserId, DbType.Guid, ParameterDirection.Input);
                            param.Add("@ExpCode", userModelingDetails.UserModeling.ExpCode, DbType.Int32, ParameterDirection.Input);
                            param.Add("@WebSite", userModelingDetails.UserModeling.WebSite, DbType.String, ParameterDirection.Input);
                            param.Add("@AgentNeedCode", userModelingDetails.UserModeling.AgentNeedCode, DbType.Int32, ParameterDirection.Input);
                            param.Add("@Experiance", userModelingDetails.UserModeling.Experiance, DbType.String, ParameterDirection.Input);
                            await conn.ExecuteAsync(SpNames.UserModeling.SaveUpdate, param : param, transaction : tran, commandType : CommandType.StoredProcedure);

                            // Job Group Save
                            if (userModelingDetails.ModelingRoles.Any())
                            {
                                var jobGroupTask = userModelingDetails.ModelingRoles.Select(async x =>
                                {
                                    var jobGroupParam = new
                                    {
                                        userModelingDetails.UserModeling.UserId,
                                        JobCode = x.Code
                                    };

                                    return(await conn.ExecuteAsync(SpNames.UserModeling.UserModelingRolesSave, param: jobGroupParam, transaction: tran, commandType: CommandType.StoredProcedure));
                                });

                                var updatedResult = await Task.WhenAll(jobGroupTask);
                            }

                            tran.Commit();

                            return(true);
                        }
                        catch (Exception ex)
                        {
                            tran.Rollback();
                            throw ex;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <bool> SaveUserModelingDetailsAsync(UserModelingModel userModelingModel)
        {
            if (userModelingModel.IsNotNull())
            {
                var userModelingDetails = new UserModelingDetails
                {
                    UserModeling  = _mapper.Map <UserModeling>(userModelingModel),
                    ModelingRoles = _mapper.Map <List <JobSubGroup> >(userModelingModel.ModelingRoles).Where(x => x.SelectedCode != 0)
                };

                userModelingDetails.UserModeling.UserId = UserContext.Current.UserId;

                return(await _userModelingRepository.PerformSaveAndUpdateOperationAsync(userModelingDetails));
            }

            return(false);
        }