68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
import Line from '#models/line'
 | 
						|
import type { HttpContext } from '@adonisjs/core/http'
 | 
						|
import Log from '#models/log'
 | 
						|
 | 
						|
export default class LinesController {
 | 
						|
  /**
 | 
						|
   * Display a list of resource
 | 
						|
   */
 | 
						|
  async get({}: HttpContext) {
 | 
						|
    const lines = await Line.all()
 | 
						|
    return { status: true, data: lines }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Display form to create a new record
 | 
						|
   */
 | 
						|
  async create({ auth, request, response }: HttpContext) {
 | 
						|
    let payload = request.only([...Array.from(Line.$columnsDefinitions.keys()), 'station_id'])
 | 
						|
    try {
 | 
						|
      const line = await Line.create(payload)
 | 
						|
      return response.created({ status: true, message: 'Line created successfully', data: line })
 | 
						|
    } catch (error) {
 | 
						|
      return response.badRequest({ error: error, message: 'Line create failed', status: false })
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  async update({ request, response, auth }: HttpContext) {
 | 
						|
    let payload = request.only(
 | 
						|
      Array.from(Line.$columnsDefinitions.keys()).filter(
 | 
						|
        (f) => f !== 'created_at' && f !== 'updated_at'
 | 
						|
      )
 | 
						|
    )
 | 
						|
    try {
 | 
						|
      const line = await Line.find(request.body().id)
 | 
						|
      if (!line) {
 | 
						|
        return response.status(404).json({ message: 'Line not found' })
 | 
						|
      }
 | 
						|
      Object.assign(line, payload)
 | 
						|
      await line.save()
 | 
						|
      return response.ok({ status: true, message: 'Line update successfully', data: line })
 | 
						|
    } catch (error) {
 | 
						|
      return response.badRequest({ error: error, message: 'Line update failed', status: false })
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Delete record
 | 
						|
   */
 | 
						|
  async delete({ auth, request, response }: HttpContext) {
 | 
						|
    try {
 | 
						|
      const line = await Line.find(request.body().id)
 | 
						|
      if (!line) {
 | 
						|
        return response.status(404).json({ message: 'line not found' })
 | 
						|
      }
 | 
						|
      const logs = await Log.query().where('line_id', line.id)
 | 
						|
      for (const log of logs) {
 | 
						|
        await log.delete()
 | 
						|
      }
 | 
						|
 | 
						|
      // Delete the line
 | 
						|
      await line.delete()
 | 
						|
      return response.ok({ status: true, message: 'Line delete successfully', data: line })
 | 
						|
    } catch (error) {
 | 
						|
      return response.badRequest({ error: error, message: 'Line delete failed', status: false })
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |