Files
api.portfolio/app/controllers/admin/experiences_controller.js
2026-02-25 00:34:39 +01:00

67 lines
2.2 KiB
JavaScript

import Experience from '#models/experience';
import { DateTime } from 'luxon';
export default class ExperiencesController {
async index({ view }) {
const experiences = await Experience.query().orderBy('start', 'desc');
return view.render('admin/experiences/index', { experiences });
}
async create({ view }) {
return view.render('admin/experiences/form', { experience: null });
}
async store({ request, response }) {
const { name, start, end, missions, place } = request.only([
'name',
'start',
'end',
'missions',
'place',
]);
await Experience.create({
name,
start: DateTime.fromISO(start),
end: end ? DateTime.fromISO(end) : null,
missions: missions || null,
place: place || null,
});
return response.redirect('/admin/experiences');
}
async edit({ view, params, response }) {
const experience = await Experience.find(params.id);
if (!experience) {
return response.notFound();
}
return view.render('admin/experiences/form', { experience });
}
async update({ request, params, response }) {
const experience = await Experience.find(params.id);
if (!experience) {
return response.notFound();
}
const { name, start, end, missions, place } = request.only([
'name',
'start',
'end',
'missions',
'place',
]);
await experience
.merge({
name,
start: DateTime.fromISO(start),
end: end ? DateTime.fromISO(end) : null,
missions: missions || null,
place: place || null,
})
.save();
return response.redirect('/admin/experiences');
}
async destroy({ params, response }) {
const experience = await Experience.find(params.id);
if (!experience) {
return response.notFound();
}
await experience.delete();
return response.redirect('/admin/experiences');
}
}
//# sourceMappingURL=experiences_controller.js.map