/**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index()
 {
     $tu = $this->userRepository->getTotal();
     $tp = $this->productRepository->getTotal();
     $tc = $this->categoryRepository->getTotal();
     $tt = $this->tagRepository->getTotal();
     $op = Option::count();
     $pm = $this->paymentRepository->getTotal();
     return View('admin.dashboard.index')->with(compact('tu', 'tp', 'tc', 'tt', 'op', 'pm'));
 }
 /**
  * Purchase Paypal Response
  * @param Request $request
  * @return $this
  */
 public function purchasePaypalResponse(Request $request)
 {
     $config = array('mode' => $this->modeApiPaypal, 'acct1.UserName' => $this->userApiPaypal, 'acct1.Password' => $this->passwordApiPaypal, 'acct1.Signature' => $this->signatureApiPaypal);
     //getExpressCheckout
     $getExpressCheckoutDetailsRequest = new GetExpressCheckoutDetailsRequestType($request->token);
     $getExpressCheckoutReq = new GetExpressCheckoutDetailsReq();
     $getExpressCheckoutReq->GetExpressCheckoutDetailsRequest = $getExpressCheckoutDetailsRequest;
     $paypalService = new PayPalAPIInterfaceServiceService($config);
     $getECResponse = $paypalService->GetExpressCheckoutDetails($getExpressCheckoutReq);
     //DoExpressCheckout
     $DoECRequestDetails = new DoExpressCheckoutPaymentRequestDetailsType();
     $DoECRequestDetails->PayerID = $request->PayerID;
     $DoECRequestDetails->Token = $request->token;
     $DoECRequestDetails->PaymentDetails[0] = $getECResponse->GetExpressCheckoutDetailsResponseDetails->PaymentDetails[0];
     //$DoECRequestDetails->PaymentAction = "Sale";
     $DoECRequest = new DoExpressCheckoutPaymentRequestType();
     $DoECRequest->DoExpressCheckoutPaymentRequestDetails = $DoECRequestDetails;
     $DoECReq = new DoExpressCheckoutPaymentReq();
     $DoECReq->DoExpressCheckoutPaymentRequest = $DoECRequest;
     $DoECResponse = $paypalService->DoExpressCheckoutPayment($DoECReq);
     $purchaseOperationNumber = "";
     //dd($DoECResponse);
     list($product, $items, $total) = $this->getPurchasedOptions($getECResponse->GetExpressCheckoutDetailsResponseDetails->Custom);
     if ($DoECResponse->Ack == 'Success') {
         $purchaseOperationNumber = $DoECResponse->DoExpressCheckoutPaymentResponseDetails->PaymentInfo[0]->TransactionID;
         //guardamos la operacion en db si no existe ya el mismo numero de operación
         $exitsPayment = $this->paymentRepository->findByOperationNumber($purchaseOperationNumber);
         if (!$exitsPayment) {
             $payment = $this->paymentRepository->store(['product_id' => $product->id, 'purchaseOperationNumber' => $purchaseOperationNumber]);
         }
         //actualizamos el estado del producto recien ingresado a publicado
         $this->productRepository->update_state($product->id, 1);
         // 0:inactivo 1:publicado 2:en espera 3:inactivo(pago rechazado o denegado)
         // informamos via email del producto recien creado y su confirmacion de pago
         try {
             $this->mailer->paymentConfirmation(['email' => Auth()->user()->email, 'product' => $product, 'items' => $items, 'total' => $total]);
         } catch (Swift_RfcComplianceException $e) {
             Log::error($e->getMessage());
         }
     } else {
         //actualizamos el estado del producto recien ingresado inactivo si el pago fue denegado
         $this->productRepository->update_state($product->id, 3);
         // 0:inactivo 1:publicado 2:en espera 3:inactivo(pago rechazado o denegado)
     }
     $authorizationResult = $DoECResponse->Ack;
     Log::info('results of PAYPAL: ' . json_encode($DoECResponse));
     return view('products.purchase-response')->with(compact('items', 'total', 'authorizationResult', 'purchaseOperationNumber'));
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     $this->paymentRepository->destroy($id);
     Flash('Payment Deleted');
     return Redirect()->route('payments');
 }