<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Catalog\Model;

use Magento\Catalog\Api\ProductManagementInterface;
use Magento\Catalog\Model\Product\Attribute\Source\Status;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;

class ProductManagement implements ProductManagementInterface
{
    /**
     * @var CollectionFactory
     */
    protected $productsFactory;

    /**
     * @param CollectionFactory $productsFactory
     */
    public function __construct(CollectionFactory $productsFactory)
    {
        $this->productsFactory = $productsFactory;
    }

    /**
     * {@inheritdoc}
     */
    public function getCount($status = null)
    {
        $products = $this->productsFactory->create();
        /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $products */
        switch ($status) {
            case Status::STATUS_ENABLED:
                $products->addAttributeToFilter('status', Status::STATUS_ENABLED);
                break;
            case Status::STATUS_DISABLED:
                $products->addAttributeToFilter('status', Status::STATUS_DISABLED);
                break;
        }
        return $products->getSize();
    }
}