import { Body, Controller, Get, Param, Post, Req, UseGuards } from '@nestjs/common';
import { CaisseDto } from './DTO/caisseDto';
import { CaisseService } from './caisse.service';
import { Request } from 'express';
import { AuthGuard } from '@nestjs/passport';
import { ArreteCaisseDto } from './DTO/arreteCaisseDto';

@Controller('caisse')
export class CaisseController {
    constructor(private readonly caisseService: CaisseService){}

    @UseGuards(AuthGuard("jwt"))
    @Post('create')
    create(@Req() request: Request){
        console.log(request)
        const userId = request.user['id']
        const fastFoodId = request.user['fastFoodId']
        return this.caisseService.create(userId, fastFoodId)
    }

    @UseGuards(AuthGuard("jwt"))
    @Get('operations')
    operationsCurrentCaisse(@Req() request: Request){

        const fastFoodId = request.user['fastFoodId']
        return this.caisseService.getOperationsCurrentCaisse(fastFoodId)

    }

    @UseGuards(AuthGuard("jwt"))
    @Get('all/:page/:size')
    getCaissesByFastFood(@Req() request: Request, @Param('page')page: number=0, @Param('size') size:number=10){

        const fastFoodId = request.user['fastFoodId']
        return this.caisseService.getCaissesByFastFood(fastFoodId,+page,+size)

    }

    @UseGuards(AuthGuard("jwt"))
    @Get('current')
    getCurentCaisse(@Req() request: Request){

        const fastFoodId = request.user['fastFoodId']
        return this.caisseService.getCurrent(fastFoodId)

    }

    @UseGuards(AuthGuard("jwt"))
    @Get(':id/operations')
    getOperationByCaisse(@Req() request: Request, @Param('id') id: number){

        const fastFoodId = request.user['fastFoodId']
        return this.caisseService.getOperationsByCaisse(+id,fastFoodId)

    }

    @UseGuards(AuthGuard("jwt"))
    @Post('fermeture')
    cloture(@Req() request: Request, @Body() arreteCaisseDto:ArreteCaisseDto){
        const fastFoodId = request.user['fastFoodId']
        return this.caisseService.fermetureCaisse(fastFoodId,arreteCaisseDto.montantCash)

    }
}
