Costs.php 8.03 KB
<?php
namespace App\Service;

class Costs{
    private $costs = [
        'AdExtensions'  =>  [
            'add'   =>  [
                5,1
            ],
            'delete'   =>  [
                10,1
            ],
            'get'   =>  [
                5,1
            ],
        ],
        'AdGroups'  =>  [
            'add'   =>  [
                20,20
            ],
            'delete'   =>  [
                10,0
            ],
            'get'   =>  [
                15,1
            ],
            'update'   =>  [
                20,20
            ],
        ],
        'AdImages'  =>  [
            'add'   =>  [
                20,20
            ],
            'delete'   =>  [
                10,0
            ],
            'get'   =>  [
                15,1
            ],
        ],
        'Ads'  =>  [
            'add'   =>  [
                20,20
            ],
            'archive'   =>  [
                15,0
            ],
            'delete'   =>  [
                10,0
            ],
            'get'   =>  [
                15,1
            ],
            'moderate'   =>  [
                15,0
            ],
            'resume'   =>  [
                15,0
            ],
            'suspend'   =>  [
                15,0
            ],
            'unarchive'   =>  [
                40,0
            ],
            'update'   =>  [
                20,20
            ],
        ],
        'AgencyClients'  =>  [
            'add'   =>  [
                10,1
            ],
            'get'   =>  [
                10,1
            ],
            'update'   =>  [
                10,1
            ],
        ],
        'AudienceTargets'  =>  [
            'add'   =>  [
                10,2
            ],
            'delete'   =>  [
                10,2
            ],
            'get'   =>  [
                1,1
            ],
            'resume'   =>  [
                10,2
            ],
            'setBids'   =>  [
                10,2
            ],
            'suspend'   =>  [
                10,2
            ],
        ],
        'Bids'  =>  [
            'get'   =>  [
                15,3/2000
            ],
            'set'   =>  [
                25,0
            ],
            'setAuto'   =>  [
                25,0
            ],
        ],
        'BidModifiers'  =>  [
            'add'   =>  [
                15,1
            ],
            'delete'   =>  [
                15,0
            ],
            'get'   =>  [
                1,0
            ],
            'set'   =>  [
                2,0
            ],
            'toggle'   =>  [
                15,0
            ],
        ],
        'Businesses'  =>  [
            'get'   =>  [
                10,1
            ],
        ],
        'Campaigns'  =>  [
            'add'   =>  [
                10,5
            ],
            'archive'   =>  [
                10,5
            ],
            'delete'   =>  [
                10,2
            ],
            'get'   =>  [
                10,1
            ],
            'resume'   =>  [
                10,5
            ],
            'suspend'   =>  [
                10,5
            ],
            'unarchive'   =>  [
                10,5
            ],
            'update'   =>  [
                10,3
            ],
        ],
        'Changes'  =>  [
            'check'   =>  [
                10,0
            ],
            'checkCampaigns'   =>  [
                10,0
            ],
            'checkDictionaries'   =>  [
                10,0
            ],
        ],
        'Clients'  =>  [
            'get'   =>  [
                10,0
            ],
            'update'   =>  [
                10,1
            ],
        ],
        'Creatives'  =>  [
            'get'   =>  [
                15,1
            ],
        ],
        'Dictionaries'  =>  [
            'get'   =>  [
                1,0
            ],
        ],
        'DynamicTextAdTargets'  =>  [
            'add'   =>  [
                20,5
            ],
            'delete'   =>  [
                10,1
            ],
            'get'   =>  [
                15,1
            ],
            'resume'   =>  [
                10,1
            ],
            'setBids'   =>  [
                25,0
            ],
            'suspend'   =>  [
                10,1
            ],
        ],
        'Feeds'  =>  [
            'add'   =>  [
                20,20
            ],
            'delete'   =>  [
                10,0
            ],
            'get'   =>  [
                15,1
            ],
            'update'   =>  [
                20,20
            ],
        ],
        'KeywordBids'  =>  [
            'get'   =>  [
                15,3/2000
            ],
            'set'   =>  [
                25,0
            ],
            'setAuto'   =>  [
                25,0
            ],
        ],
        'Keywords'  =>  [
            'add'   =>  [
                20,2
            ],
            'delete'   =>  [
                10,1
            ],
            'get'   =>  [
                15,3,1
            ],
            'resume'   =>  [
                15,0
            ],
            'suspend'   =>  [
                15,0
            ],
            'update'   =>  [
                20,2
            ],
        ],
        'KeywordsResearch'  =>  [
            'deduplicate'   =>  [
                10,0
            ],
            'hasSearchVolume'   =>  [
                1,0
            ],
        ],
        'Leads'  =>  [
            'get'   =>  [
                1,1
            ],
        ],
        'NegativeKeywordSharedSets'  =>  [
            'add'   =>  [
                20,20
            ],
            'delete'   =>  [
                10,0
            ],
            'get'   =>  [
                15,1
            ],
            'update'   =>  [
                20,20
            ],
        ],
        'RetargetingLists'  =>  [
            'add'   =>  [
                10,2
            ],
            'delete'   =>  [
                10,2
            ],
            'get'   =>  [
                1,1
            ],
            'update'   =>  [
                10,2
            ],
        ],
        'Sitelinks'  =>  [
            'add'   =>  [
                20,20
            ],
            'delete'   =>  [
                10,0
            ],
            'get'   =>  [
                15,1
            ],
        ],
        'SmartAdTargets'  =>  [
            'add'   =>  [
                20,5
            ],
            'delete'   =>  [
                10,1
            ],
            'get'   =>  [
                15,1
            ],
            'resume'   =>  [
                10,1
            ],
            'setBids'   =>  [
                10,0
            ],
            'suspend'   =>  [
                10,1
            ],
            'update'   =>  [
                10,1
            ],
        ],
        'TurboPages'  =>  [
            'get'   =>  [
                15,1
            ],
        ],
        'VCards'  =>  [
            'add'   =>  [
                20,20
            ],
            'delete'   =>  [
                10,0
            ],
            'get'   =>  [
                15,1
            ],
        ],
    ];

    function getCostCall(\App\Service\Contract\APIRequest $request){
        return $this->costs[$request->getService()][$request->getMethod()][0] ?? 0;
    }

    function getCostObject(\App\Service\Contract\APIRequest $request){
        if (method_exists($this, $request->getService().ucfirst($request->getMethod()).'Logic')){
            return $this->{$request->getService().ucfirst($request->getMethod()).'Logic'}($request->getParams());
        }
        return $this->costs[$request->getService()][$request->getMethod()][1] ?? 0;
    }

    private function KeywordsGetLogic($params){
        if (
            in_array('Productivity', $params['FieldNames']) ||
            in_array('StatisticsSearch', $params['FieldNames']) ||
            in_array('StatisticsNetwork', $params['FieldNames'])
        ){
            return $this->costs['Keywords']['get'][1]/2000;
        }
        return $this->costs['Keywords']['get'][2]/2000;
    }
}