- Updated Person interface to include first_name and last_name fields for better clarity and organization handling. - Modified TablePersons.vue to support new fields, including improved pagination and drag-and-drop functionality. - Added loading states and error handling for form controls within the table. - Enhanced the visual layout of the table with responsive design adjustments. - Updated solr.xslt to correctly reference ServerDateModified and EmbargoDate attributes. - updated AvatarController - improved download method for editor, and reviewer - improved security for officlial download file file API: filterd by server_state
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import type { HttpContext } from '@adonisjs/core/http';
|
|
import Person from '#models/person';
|
|
// import Dataset from 'App/Models/Dataset';
|
|
|
|
// node ace make:controller Author
|
|
export default class AuthorsController {
|
|
public async index({}: HttpContext) {
|
|
|
|
const authors = await Person.query()
|
|
.select([
|
|
'id',
|
|
'academic_title',
|
|
'first_name',
|
|
'last_name',
|
|
'identifier_orcid',
|
|
'status',
|
|
'name_type',
|
|
'created_at'
|
|
// Note: 'email' is omitted
|
|
])
|
|
.preload('datasets')
|
|
.where('name_type', 'Personal')
|
|
.whereHas('datasets', (dQuery) => {
|
|
dQuery.wherePivot('role', 'author');
|
|
})
|
|
.withCount('datasets', (query) => {
|
|
query.as('datasets_count');
|
|
})
|
|
.orderBy('datasets_count', 'desc');
|
|
|
|
return authors;
|
|
}
|
|
|
|
public async persons({ request }: HttpContext) {
|
|
const authors = Person.query().where('status', true);
|
|
|
|
if (request.input('filter')) {
|
|
// users = users.whereRaw('name like %?%', [request.input('search')])
|
|
const searchTerm = request.input('filter');
|
|
authors.andWhere((query) => {
|
|
query.whereILike('first_name', `%${searchTerm}%`)
|
|
.orWhereILike('last_name', `%${searchTerm}%`);
|
|
});
|
|
// .orWhere('email', 'like', `%${searchTerm}%`);
|
|
}
|
|
|
|
let persons = await authors;
|
|
return persons;
|
|
}
|
|
}
|