public Task <Result <FeatureModel> > Edit(UpdateFeatureModel model) => Result <FeatureModel> .TryAsync(async() => { var duplicateFeature = await _repository.FirstOrDefaultAsNoTrackingAsync <Feature>(f => f.Id != model.Id && f.Name == model.Name); if (duplicateFeature.Success && duplicateFeature.Data != null) { return(Result <FeatureModel> .Failed(Error.WithData(1000, new[] { "Duplicate Feature Name" }))); } var result = await _repository.FirstOrDefaultAsync <Feature>(r => r.Id == model.Id, r => r.RoleFeature.Select(rf => rf.Feature.FeaturePermission.Select(fp => fp.Permission))); if (!result.Success || result.Data == null) { return(Result <FeatureModel> .Failed(Error.WithCode(ErrorCodes.NotFound))); } var permissionIds = model.Permissions; var resultList = await _repository.ListAsync <Permission>(f => permissionIds.Contains(f.Id)); if (!resultList.Success || resultList.Data == null) { return(Result <FeatureModel> .Failed(Error.WithCode(ErrorCodes.InvalidModel))); } var permissions = resultList.Data; if (permissions.Count != permissionIds.Count()) { return(Result <FeatureModel> .Failed(Error.WithCode(ErrorCodes.InvalidModel))); } var feature = result.Data; feature.Name = model.Name; _repository.RemoveRange(feature.FeaturePermission); feature.FeaturePermission = model.Permissions.Select(f => new FeaturePermission { FeatureId = feature.Id, PermissionId = f }).ToList(); await _repository.CommitAsync(); return(Result <FeatureModel> .Successful(_autoMapper.Map <FeatureModel>(feature))); });
public async Task <Result <FeatureModel> > Edit(UpdateFeatureModel model) => await _membershipServiceApi.MembershipFeatureApiService.Edit(model);
public async Task <Result <FeatureModel> > Edit(UpdateFeatureModel model) => await _featureBiz.Edit(model);