Completed
Push — master ( 9ec25c...150d68 )
by Giovanni
07:07
created

Delete::execute()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 24
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 17
nc 2
nop 4
dl 0
loc 24
rs 9.7
c 0
b 0
f 0
1
<?php
2
3
namespace REverse\GSheets\Operation;
4
5
class Delete extends Operation
6
{
7
    const DIMENSION_ROWS = 'ROWS';
8
    const DIMENSION_COLUMNS = 'COLUMNS';
9
10
    /**
11
     * This operation consists to remove columns or row by a sheet.
12
     * For example if I want remove first 2 rows from Sheet1 I'll do this call:
13
     *
14
     * $get->execute('ROWS', 'Sheet1', 0, 1)
15
     *
16
     * @param string $dimension
17
     * @param string $sheetId
18
     * @param int $startIndex
19
     * @param int $endIndex
20
     *
21
     * @return \Google_Service_Sheets_BatchUpdateSpreadsheetResponse
22
     */
23
    public function execute($dimension, $sheetId, $startIndex, $endIndex)
24
    {
25
        if ($dimension !== self::DIMENSION_ROWS && $dimension !== self::DIMENSION_COLUMNS) {
26
            throw new \InvalidArgumentException(sprintf("%s is not a valid dimension", $dimension));
27
        }
28
29
        $dimensionRange = new \Google_Service_Sheets_DimensionRange();
30
        $dimensionRange->setSheetId($sheetId);
31
        $dimensionRange->setDimension($dimension);
32
        $dimensionRange->setStartIndex($startIndex);
33
        $dimensionRange->setEndIndex($endIndex);
34
        $deleteDimensionRange = new \Google_Service_Sheets_DeleteDimensionRequest();
35
        $deleteDimensionRange->setRange($dimensionRange);
36
37
        $deleteDimensionRangeRequest = new \Google_Service_Sheets_Request();
38
        $deleteDimensionRangeRequest->setDeleteDimension($deleteDimensionRange);
39
        $request = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
40
        $request->setRequests([$deleteDimensionRangeRequest]);
41
42
        $service = $this->spreadsheets->getClient()->getGoogleServiceSheets();
43
44
        return $service->spreadsheets->batchUpdate(
45
            $this->spreadsheets->getSpreadSheetId(),
46
            $request
47
        );
48
    }
49
}
50