67 lines
2.2 KiB
JavaScript
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
|