<?php
namespace App\Controller;
use App\Service\APIServices\AddCreditMemoTransaction;
use App\Service\APIServices\CreditMemoHistory;
use App\Service\APIServices\DailyConsolidator;
use App\Service\APIServices\DailyCustomerDeposit;
use App\Service\APIServices\DailyWoofyDeposit;
use App\Service\APIServices\DailyCustomerDepositEPayment;
use App\Service\APIServices\DailySalesService;
use App\Service\APIServices\DailySalesV2Service;
use App\Service\APIServices\GetCreditMemoTransaction;
use App\Service\APIServices\SubscriberWalletTransaction;
use App\Service\APIServices\TransactionHistoryService;
use App\Service\APIServices\SubscriberService;
use App\Service\APIServices\QuickBooksIDService;
use App\Service\APIServices\WoofyEcpayEpaymentsTransactions;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use App\Service\JournalEntryService;
use App\Service\FillManagersOtcTransaction;
use Symfony\Component\HttpFoundation\JsonResponse;
class APIController extends AbstractController
{
private $addCreditMemoTransaction;
private $dailyConsolidator;
private $dailySalesService;
private $dailySalesV2Service;
private $dailyCustomerDeposit;
private $dailyWoofyDeposit;
private $dailyCustomerDepositEPayment;
private $transactionHistoryService;
private $subscriberWalletTransaction;
private $creditMemoHistory;
private $subscriberService;
private $quickBooksIDService;
private $woofyEcpayEpaymentsTransactions;
private $journalEntryService;
private $fillManagersOtcTransaction;
private $getCreditMemoTransaction;
public function __construct(
AddCreditMemoTransaction $addCreditMemoTransaction,
GetCreditMemoTransaction $getCreditMemoTransaction,
DailySalesService $dailySalesService,
TransactionHistoryService $transactionHistoryService,
SubscriberWalletTransaction $subscriberWalletTransaction,
DailyCustomerDeposit $dailyCustomerDeposit,
DailyWoofyDeposit $dailyWoofyDeposit,
DailyCustomerDepositEPayment $dailyCustomerDepositEPayment,
DailyConsolidator $dailyConsolidator,
CreditMemoHistory $creditMemoHistory,
SubscriberService $subscriberService,
QuickBooksIDService $quickBooksIDService,
WoofyEcpayEpaymentsTransactions $woofyEcpayEpaymentsTransactions,
DailySalesV2Service $dailySalesV2Service,
JournalEntryService $journalEntryService,
FillManagersOtcTransaction $fillManagersOtcTransaction
) {
$this->addCreditMemoTransaction = $addCreditMemoTransaction;
$this->getCreditMemoTransaction = $getCreditMemoTransaction;
$this->dailyConsolidator = $dailyConsolidator;
$this->dailySalesService = $dailySalesService;
$this->dailyCustomerDeposit = $dailyCustomerDeposit;
$this->dailyWoofyDeposit = $dailyWoofyDeposit;
$this->dailyCustomerDepositEPayment = $dailyCustomerDepositEPayment;
$this->transactionHistoryService = $transactionHistoryService;
$this->subscriberWalletTransaction = $subscriberWalletTransaction;
$this->creditMemoHistory = $creditMemoHistory;
$this->subscriberService = $subscriberService;
$this->quickBooksIDService = $quickBooksIDService;
$this->woofyEcpayEpaymentsTransactions = $woofyEcpayEpaymentsTransactions;
$this->dailySalesV2Service = $dailySalesV2Service;
$this->journalEntryService = $journalEntryService;
$this->fillManagersOtcTransaction = $fillManagersOtcTransaction;
}
/**
* @Route("/api/dailySales", name="dailySales", methods={"GET"})
*/
public function dailySales(Request $request)
{
return $this->dailySalesService->getDailySales($request)->prepare($request);
}
/**
* @Route("/api/dailySalesV2", name="dailySalesV2", methods={"GET"})
*/
public function dailySalesV2(Request $request)
{
return $this->dailySalesV2Service->getDailySales($request)->prepare($request);
}
/**
* @Route("/api/subscriberWalletTransaction", name="subscriberWalletTransaction", methods={"GET"})
*/
public function subscriberWalletTransaction(Request $request)
{
return $this->subscriberWalletTransaction->getSubscriberWalletTransaction($request)->prepare($request);
}
/**
* @Route("/api/transactionHistory", name="transactionHistory", methods={"GET"})
*/
public function transactionHistory(Request $request)
{
return $this->transactionHistoryService->getTransactionHistory($request)->prepare($request);
}
/**
* @Route("/api/creditMemoTransaction", name="creditMemoTransaction", methods={"POST"})
*/
public function creditMemoTransaction(Request $request)
{
return $this->addCreditMemoTransaction->addCreditMemoTransaction($request)->prepare($request);
}
/**
* @Route("/api/creditMemoTransaction", name="getCreditMemoTransaction", methods={"GET"})
*/
public function getCreditMemoTransaction(Request $request)
{
return $this->getCreditMemoTransaction->getCreditMemoTransaction($request)->prepare($request);
}
/**
* @Route("/api/dailyCustomerDeposit", name="dailyCustomerDeposit", methods={"GET"})
*/
public function dailyCustomerDeposit(Request $request)
{
return $this->dailyCustomerDeposit->getDailyCustomerDeposit($request)->prepare($request);
}
/**
* @Route("/api/dailyCustomerDepositEpayment", name="dailyCustomerDepositEpayment", methods={"GET"})
*/
public function dailyCustomerDepositEpayment(Request $request)
{
return $this->dailyCustomerDepositEPayment->getDailyCustomerDeposit($request)->prepare($request);
}
/**
* @Route("/api/dailyConsolidator", name="dailyConsolidator", methods={"GET"})
*/
public function dailyConsolidator(Request $request)
{
return $this->dailyConsolidator->getDailyConsolidator($request)->prepare($request);
}
/**
* @Route("/api/creditMemoHistory", name="creditMemoHistory", methods={"GET"})
*/
public function creditMemoHistory(Request $request)
{
return $this->creditMemoHistory->getCreditMemoHistory($request)->prepare($request);
}
/**
* @Route("/api/subscriber", name="add_subscriber", methods={"POST"})
*/
public function addSubscriber(Request $request)
{
return $this->subscriberService->addSubscriber($request)->prepare($request);
}
/**
* @Route("/api/quickbooks-id", methods={"POST"}, name="add_quickbooks_id")
*/
public function addQuickBooksID(Request $request)
{
$content = json_decode($request->getContent(), true);
$location = $this->quickBooksIDService->addQuickBooksID($content);
if (array_key_exists('error', $location)) {
return $this->json($location, JsonResponse::HTTP_BAD_REQUEST);
}
return $this->json($location);
}
/**
* @Route("/api/quickbooks-id", name="show_quickbooks_id", methods={"GET"})
*/
public function showQuickBooksID(Request $request)
{
return $this->quickBooksIDService->showQuickBooksEntries($request)->prepare($request);
}
/**
* @Route("/api/updateLocationQuickbooksId", methods={"PUT"}, name="updateLocationQuickbooksId")
*/
public function updateLocationQuickbooksId(Request $request)
{
$content = json_decode($request->getContent(), true);
$result = $this->quickBooksIDService->updateLocationQuickbooksId($content);
if (array_key_exists('error', $result)) {
return $this->json($result, JsonResponse::HTTP_BAD_REQUEST);
}
return $this->json($result);
}
/**
* @Route("/api/quickbooks-id/{id}", name="update_quickbooks_id", methods={"PUT"})
*/
public function updateQuickBooksID(Request $request, $id)
{
return $this->quickBooksIDService->updateQuickBooksID($request, $id)->prepare($request);
}
/**
* @Route("/api/quickbooks-id/{id}", name="delete_quickbooks_id", methods={"DELETE"})
*/
public function deleteQuickBooksID($id)
{
return $this->quickBooksIDService->deleteQuickBooksID($id);
}
/**
* @Route("/api/dailyWoofyDeposit", name="dailyWoofyDeposit", methods={"GET"})
*/
public function dailyWoofyDeposit(Request $request)
{
return $this->dailyWoofyDeposit->getDailyWoofyDeposit($request)->prepare($request);
}
/**
* @Route("/api/getAllDeposits", name="getAllDeposits", methods={"GET"})
*/
public function dailyDepositsWoofyEpaymentEcPay(Request $request)
{
return $this->woofyEcpayEpaymentsTransactions->getDailyDepositsWoofyEpaymentEcPay($request)->prepare($request);
}
/**
* @Route("/api/deleteJournalEntry", name="deleteJournalEntry", methods={"POST"})
*/
public function deleteJournalEntry(Request $request)
{
return $this->journalEntryService->delete($request);
}
/**
* @Route("/api/fillManagers", name="fillManagers", methods={"POST"})
*/
public function fillManagers(Request $request)
{
$result = $this->fillManagersOtcTransaction->fillManagers($request);
if (isset($result["error"])) {
return new JsonResponse($result);
}
return new JsonResponse(["success" => "success in filling up managers in otc transaction"]);
}
/**
* @Route("/api/dailyWoofyDepositV2", name="dailyWoofyDepositV2", methods={"GET"})
*/
public function dailyWoofyDepositV2(Request $request)
{
return $this->dailyWoofyDeposit->getDailyWoofyDepositV2($request)->prepare($request);
}
/**
* @Route("/api/deleteJournalEntryByDocNumber", name="deleteJournalEntryByDocNumber", methods={"POST"})
*/
public function deleteJournalEntryByDocNumber(Request $request)
{
return $this->journalEntryService->deleteByDocNumber($request);
}
/**
* @Route("/api/qbo/fetch-journal-entry", name="fetchJournalEntry", methods={"POST"})
*/
public function fetchJournalEntry(Request $request)
{
try {
$content = json_decode($request->getContent(), true);
$result = $this->journalEntryService->fetchQbEntry($content["consolidatorId"]);
return $this->json($result);
} catch (\Throwable $th) {
return $this->json(["error" => $th->getMessage()], 422);
}
}
}