module.exports = Self => {
    Self.remoteMethodCtx('getFromSectorCollection', {
        description: 'Get sales from sector collection',
        accessType: 'READ',
        accepts: [
            {
                arg: 'sectorCollectionFk',
                type: 'number',
                required: true,
            },
            {
                arg: 'sectorFk',
                type: 'number',
                required: true
            }
        ],
        returns: {
            type: ['object'],
            root: true
        },
        http: {
            path: `/getFromSectorCollection`,
            verb: 'GET'
        },
    });

    Self.getFromSectorCollection = async(ctx, sectorCollectionFk, sectorFk, options) => {
        const userId = ctx.req.accessToken.userId;
        const myOptions = {userId};

        if (typeof options == 'object') Object.assign(myOptions, options);

        const [sales] = await Self.rawSql('CALL sectorCollection_getSale(?)', [sectorCollectionFk], myOptions);

        const itemShelvings = [];
        for (let sale of sales) {
            const [carros] = await Self.rawSql(
                'CALL vn.itemPlacementSupplyStockGetTargetList(?, ?)',
                [sale.itemFk, sectorFk],
                myOptions
            );

            itemShelvings.push({
                id: sale.ticketFk,
                itemFk: sale.itemFk,
                longName: sale.longName,
                packingType: sale.itemPackingTypeFk,
                subName: sale.subName,
                quantity: sale.quantity,
                saldo: sale.quantity,
                trabajador: sale.workerCode,
                idMovimiento: sale.saleFk,
                salesPersonFk: sale.salesPersonFk,
                picked: sale.pickedQuantity,
                carros
            });
        }

        return itemShelvings;
    };
};