public async Task <OperationResult> UpdateGroupEformPermissions([FromBody] EformPermissionsModel model)
 {
     return(await _eformGroupService.UpdateGroupEformPermissions(model));
 }
        public async Task <OperationResult> UpdateGroupEformPermissions(EformPermissionsModel requestModel)
        {
            try
            {
                requestModel.Permissions.Clear();
                foreach (var permissionType in requestModel.PermissionTypes)
                {
                    foreach (var permission in permissionType.Permissions)
                    {
                        requestModel.Permissions.Add(permission);
                    }
                }

                //using (var transaction = await _dbContext.Database.BeginTransactionAsync())
//                {
                var enabledEformPermission = new List <int>();
                foreach (var eformPermission in requestModel.Permissions)
                {
                    if (eformPermission.IsEnabled)
                    {
                        enabledEformPermission.Add(eformPermission.EformPermissionId);
                    }
                }

                // for delete
                var forDelete = _dbContext.EformPermissions
                                .Where(x => !enabledEformPermission.Contains(x.Id) &&
                                       x.EformInGroupId == requestModel.EformInGroupId)
                                .ToList();

                _dbContext.EformPermissions.RemoveRange(forDelete);
                await _dbContext.SaveChangesAsync();

                var list = _dbContext.EformPermissions
                           .Where(x => x.EformInGroupId == requestModel.EformInGroupId)
                           .Where(x => enabledEformPermission.Contains(x.Id))
                           .Select(x => x.PermissionId)
                           .ToList();

                var enabledPermissions = new List <int>();
                foreach (var eformPermission in requestModel.Permissions)
                {
                    if (eformPermission.IsEnabled)
                    {
                        enabledPermissions.Add(eformPermission.Id);
                    }
                }

                foreach (var permissionId in enabledPermissions)
                {
                    if (!list.Contains(permissionId))
                    {
                        var permissionModel = requestModel.Permissions.FirstOrDefault(x =>
                                                                                      x.Id == permissionId && x.IsEnabled);
                        if (permissionModel != null)
                        {
                            await _dbContext.EformPermissions.AddAsync(new EformPermission()
                            {
                                EformInGroupId = requestModel.EformInGroupId,
                                PermissionId   = permissionModel.Id,
                            });
                        }
                    }
                }

                await _dbContext.SaveChangesAsync();

                //transaction.Commit();
//                }

                return(new OperationResult(true, _localizationService.GetString("PermissionForEformHasBeenUpdated")));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                _logger.LogError(e.Message);
                return(new OperationDataResult <EformsPermissionsModel>(false,
                                                                        _localizationService.GetString("ErrorWhileObtainingEformInfo")));
            }
        }