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