diff --git a/.gitignore b/.gitignore index d0c45621..8ef1dca3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -config/database.php +/config/database.php # Composer ignores /vendor diff --git a/config/database.php b/config/database.php index c830c63c..48d0c226 100644 --- a/config/database.php +++ b/config/database.php @@ -57,9 +57,9 @@ return [ 'engine' => 'InnoDB', 'host' => 'localhost', 'port' => 3306, - 'database' => 'sapaly_october', - 'username' => 'sapaly', - 'password' => '22MOcP6^I#8tI5ovcXluXDT#%vWC^CtsFvKHOygi8TMnzaMuLYx@123', + 'database' => 'sapaly_new', + 'username' => 'root', + 'password' => 'bt110226', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', diff --git a/plugins/ahmadfatoni/apigenerator/controllers/api/CartAPIController.php b/plugins/ahmadfatoni/apigenerator/controllers/api/CartAPIController.php index 163c0fc7..759cff85 100644 --- a/plugins/ahmadfatoni/apigenerator/controllers/api/CartAPIController.php +++ b/plugins/ahmadfatoni/apigenerator/controllers/api/CartAPIController.php @@ -1,4 +1,6 @@ -helpers = $helpers; } - public function index(){ - $currentUser = JWTAuth::parseToken()->authenticate(); + public function index() + { + // $currentUser = JWTAuth::parseToken()->authenticate(); + // $currentUser = \JWTAuth::parseToken()->toUser(); - dd($currentUser); - $data = $this->Cart - ->paginate(10); + // dd($currentUser); + $data = CartProcessor::instance()->getCartData(); return $this->helpers->apiArrayResponseBuilder(200, 'success', $data); } - public function show($id){ - $data = $this->Cart::with('translations:locale,model_id,attribute_data') - ->with(['category' => function ($query) { - $query->with('translations:locale,model_id,attribute_data'); - }]) - ->find($id); - + public function addCart() + { + //$arRequestData = Input::get('cart'); - if ($data){ - return $this->helpers->apiArrayResponseBuilder(200, 'success', [$data]); - } else { - $this->helpers->apiArrayResponseBuilder(404, 'not found', ['error' => 'Resource id=' . $id . ' could not be found']); - } + $offerId = input('offer_id'); + $quantity = input('quantity'); + $cart = array('cart' => array('offer_id' => $offerId, 'quantity' => $quantity)); + + CartProcessor::instance()->add($cart, OfferCartPositionProcessor::class); + Result::setData(CartProcessor::instance()->getCartData()); + + $data = Result::get(); + + return $this->helpers->apiArrayResponseBuilder(200, 'success', $data); } - // public function store(Request $request){ - // $arr = $request->all(); + public function updateCart() + { + //$arRequestData = Input::get('cart'); - // while ( $data = current($arr)) { - // $this->Cart->{key($arr)} = $data; - // next($arr); - // } + $offerId = input('offer_id'); + $quantity = input('quantity'); - // $validation = Validator::make($request->all(), $this->Cart->rules); - - // if( $validation->passes() ){ - // $this->Cart->save(); - // return $this->helpers->apiArrayResponseBuilder(201, 'created', ['id' => $this->Cart->id]); - // }else{ - // return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validation->errors() ); - // } + $cart = array('cart' => array('offer_id' => $offerId, 'quantity' => $quantity)); - // } + CartProcessor::instance()->add($cart, OfferCartPositionProcessor::class); + Result::setData(CartProcessor::instance()->getCartData()); - // public function update($id, Request $request){ + $data = Result::get(); - // $status = $this->Cart->where('id',$id)->update($data); - - // if( $status ){ - - // return $this->helpers->apiArrayResponseBuilder(200, 'success', 'Data has been updated successfully.'); + return $this->helpers->apiArrayResponseBuilder(200, 'success', $data); + } - // }else{ + public function removeProdCart() + { + $offerId = input('offer_id'); + // $arRequestData = Input::get('cart'); + $sType = Input::get('type', 'offer'); + $cart = array('cart' => array('offer_id' => $offerId)); - // return $this->helpers->apiArrayResponseBuilder(400, 'bad request', 'Error, data failed to update.'); + CartProcessor::instance()->remove($cart, OfferCartPositionProcessor::class, $sType); + Result::setData(CartProcessor::instance()->getCartData()); - // } - // } + $data = Result::get(); - // public function delete($id){ + return $this->helpers->apiArrayResponseBuilder(200, 'success', $data); + } - // $this->Cart->where('id',$id)->delete(); + public function clearCart() + { + $data = CartProcessor::instance()->clear(); + Result::setData(CartProcessor::instance()->getCartData()); + $data = Result::get(); + return $this->helpers->apiArrayResponseBuilder(200, 'success', $data); + } - // return $this->helpers->apiArrayResponseBuilder(200, 'success', 'Data has been deleted successfully.'); - // } - - // public function destroy($id){ - - // $this->Cart->where('id',$id)->delete(); - - // return $this->helpers->apiArrayResponseBuilder(200, 'success', 'Data has been deleted successfully.'); - // } - - - public static function getAfterFilters() {return [];} - public static function getBeforeFilters() {return [];} - public static function getMiddleware() {return [];} - public function callAction($method, $parameters=false) { + public static function getAfterFilters() + { + return []; + } + public static function getBeforeFilters() + { + return []; + } + public static function getMiddleware() + { + return []; + } + public function callAction($method, $parameters = false) + { return call_user_func_array(array($this, $method), $parameters); } - -} \ No newline at end of file +} diff --git a/plugins/ahmadfatoni/apigenerator/controllers/api/CheckoutAPIController.php b/plugins/ahmadfatoni/apigenerator/controllers/api/CheckoutAPIController.php new file mode 100644 index 00000000..f74f8c89 --- /dev/null +++ b/plugins/ahmadfatoni/apigenerator/controllers/api/CheckoutAPIController.php @@ -0,0 +1,67 @@ +Cart = $Cart; + $this->helpers = $helpers; + } + + public function shippingTypes() + { + $data = ShippingType::where("active", 1) + ->with('translations:locale,model_id,attribute_data') + ->get(); + + return $this->helpers->apiArrayResponseBuilder(200, 'success', $data); + } + + + public function paymentTypes() + { + $data = PaymentMethod::where("active", 1) + ->with('translations:locale,model_id,attribute_data') + ->get(); + + return $this->helpers->apiArrayResponseBuilder(200, 'success', $data); + } + + public static function getAfterFilters() + { + return []; + } + public static function getBeforeFilters() + { + return []; + } + public static function getMiddleware() + { + return []; + } + public function callAction($method, $parameters = false) + { + return call_user_func_array(array($this, $method), $parameters); + } +} diff --git a/plugins/ahmadfatoni/apigenerator/routes.php b/plugins/ahmadfatoni/apigenerator/routes.php index bd9ab69a..492024a9 100644 --- a/plugins/ahmadfatoni/apigenerator/routes.php +++ b/plugins/ahmadfatoni/apigenerator/routes.php @@ -1,25 +1,34 @@ - 'fatoni.generate.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@generateApi')); -Route::post('fatoni/update/api/{id}', array('as' => 'fatoni.update.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@updateApi')); -Route::get('fatoni/delete/api/{id}', array('as' => 'fatoni.delete.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@deleteApi')); - -Route::group(['prefix' =>'api/v1','namespace' =>'AhmadFatoni\ApiGenerator\Controllers\API'],function ($route){ - - Route::get('products','ProductAPIController@index'); - Route::get('products/category/{id}','ProductAPIController@ByCatId'); - Route::get('products/{id}', 'ProductAPIController@show'); - - Route::get('categories', 'CategoriesAPIController@index'); - Route::get('category/sub/{id}', 'CategoriesAPIController@getParent'); - - Route::get('sliders', 'SliderAPIController@index'); - - - //Route::middleware([\ReaZzon\JWTAuth\Http\Middlewares\ResolveUser::class])->group(function () { - - //Route::get('cart', 'CartAPIController@index'); - - // }); -}); - + 'fatoni.generate.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@generateApi')); +Route::post('fatoni/update/api/{id}', array('as' => 'fatoni.update.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@updateApi')); +Route::get('fatoni/delete/api/{id}', array('as' => 'fatoni.delete.api', 'uses' => 'AhmadFatoni\ApiGenerator\Controllers\ApiGeneratorController@deleteApi')); + +Route::group(['prefix' =>'api/v1','namespace' =>'AhmadFatoni\ApiGenerator\Controllers\API'],function ($route){ + + Route::get('products','ProductAPIController@index'); + Route::get('products/category/{id}','ProductAPIController@ByCatId'); + Route::get('products/{id}', 'ProductAPIController@show'); + + Route::get('categories', 'CategoriesAPIController@index'); + Route::get('category/sub/{id}', 'CategoriesAPIController@getParent'); + + Route::get('sliders', 'SliderAPIController@index'); + + + Route::middleware([\ReaZzon\JWTAuth\Http\Middlewares\ResolveUser::class])->group(function () { + + //Route::get('cart', 'CartAPIController@index'); + Route::get('cart', 'CartAPIController@index'); + Route::post('add/cart', 'CartAPIController@addCart'); + Route::post('update/cart', 'CartAPIController@updateCart'); + Route::post('remove/cart', 'CartAPIController@removeProdCart'); + Route::post('clear/cart', 'CartAPIController@clearCart'); + + + Route::get('shippings', 'CheckoutAPIController@shippingTypes'); + Route::get('payments', 'CheckoutAPIController@paymentTypes'); + + }); +}); + diff --git a/plugins/lovata/ordersshopaholic/classes/processor/CartProcessor.php b/plugins/lovata/ordersshopaholic/classes/processor/CartProcessor.php index 0d4c8a57..09731fb4 100644 --- a/plugins/lovata/ordersshopaholic/classes/processor/CartProcessor.php +++ b/plugins/lovata/ordersshopaholic/classes/processor/CartProcessor.php @@ -16,6 +16,7 @@ use Lovata\OrdersShopaholic\Classes\PromoMechanism\ItemPriceContainer; use Lovata\OrdersShopaholic\Classes\PromoMechanism\TotalPriceContainer; use Lovata\OrdersShopaholic\Classes\Collection\CartPositionCollection; use Lovata\OrdersShopaholic\Classes\PromoMechanism\CartPromoMechanismProcessor; +use Lovata\Shopaholic\Models\Offer as OfferModel; /** * Class CartProcessor @@ -439,9 +440,12 @@ class CartProcessor } foreach ($obCartPositionList as $obCartPositionItem) { + $product = OfferModel::where("id", $obCartPositionItem->item_id)->with('product')->first(); + // dd($product); $arPositionData = [ 'id' => $obCartPositionItem->id, 'item_id' => $obCartPositionItem->item_id, + 'product' => $product, 'item_type' => $obCartPositionItem->item_type, 'quantity' => (int) $obCartPositionItem->quantity, 'max_quantity' => (int) $obCartPositionItem->item->quantity,