Exemple #1
0
        public async Task <IHttpActionResult> Post([FromBody] Models.RoleViewModel value)
        {
            Role _role = null;

            if (NullHandlers.NGUID(value.Id) != Guid.Empty)
            {
                _role = await UnitOfWork.RoleStore.FindByIdAsync(value.Id);
            }
            if (_role == null)
            {
                _role = new Role();
            }
            _role.Name        = value.RoleName;
            _role.Description = value.RoleDescription;
            UnitOfWork.BeginWork();
            if (_role.Id == Guid.Empty)
            {
                await UnitOfWork.RoleStore.CreateAsync(_role);
            }
            else
            {
                await UnitOfWork.RoleStore.UpdateAsync(_role);
            }
            foreach (Models.ApiViewModel _assignedApi in value.AssignedApis)
            {
                if (_assignedApi.Id == Guid.Empty)
                {
                    RoleApiPath _newPath = new RoleApiPath()
                    {
                        RoleId = _role.Id, ActionPath = _assignedApi.Path, ActionMethod = _assignedApi.HttpMethod
                    };
                    await UnitOfWork.RoleStore.CreateRoleApiPathAsync(_newPath);
                }
            }
            foreach (Models.ApiViewModel _availableApi in value.AvailableApis)
            {
                if (_availableApi.Id != Guid.Empty)
                {
                    await UnitOfWork.RoleStore.DeleteRoleApiPathAsync(_availableApi.Id);;
                }
            }
            foreach (Models.ClientPathViewModel _assignedClientPath in value.AssignedClientPaths)
            {
                if (_assignedClientPath.Id == Guid.Empty)
                {
                }
            }
            foreach (Models.ClientPathViewModel _availableClientPath in value.AvailableClientPaths)
            {
                if (_availableClientPath.Id != Guid.Empty)
                {
                }
            }
            UnitOfWork.CommitWork();
            return(Ok());
        }
        public virtual Task CreateRoleApiPathAsync(RoleApiPath rolePath)
        {
            if (rolePath == null)
            {
                throw new ArgumentNullException("rolePath");
            }
            var owner = this.FindRoleApiPathAsync(rolePath.RoleId, rolePath.ActionPath, rolePath.ActionMethod);

            if ((owner == null) || (owner.Result == null))
            {
                return(Task.Factory.StartNew(() =>
                {
                    rolePath.Id = Guid.NewGuid();
                    using (IDbConnection connection = CurrentContext.OpenConnection())
                        connection.Execute("insert into auth_RoleApiPaths(Id, RoleId, ActionPath, ActionMethod) values(@Id, @RoleId, @ActionPath, @ActionMethod)", rolePath);
                }));
            }
            else
            {
                rolePath.Id = owner.Result.Id;
                return(Task.FromResult(0));
            }
        }