Exemple #1
0
        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);
Exemple #3
0
 public async Task <Result <FeatureModel> > Edit(UpdateFeatureModel model)
 => await _featureBiz.Edit(model);