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"))); } }