Viewing File: /home/ubuntu/shop-website-base/app/Repositories/ProductRepository.php
<?php
namespace App\Repositories;
use App\Helpers\Helper;
use App\Models\Product, App\Models\ProductGallery;
use App\Models\Order, App\Models\OrderProduct, App\Models\ProductInventory;
use App\Models\Cart, App\Models\OrderPayment;
use App\Models\User, App\Models\UserBillingAddress;
use Illuminate\Support\Facades\Hash;
use Exception, DB, Validator, Setting, Log, Auth;
class ProductRepository {
public static function product_gallery_upload($files, $product_id, $status = YES, $is_default = NO) {
$allowedfileExtension=['jpeg','jpg','png'];
$product = Product::find($product_id);
$is_product_image = $product ? ($product->picture ? YES : NO): NO;
$data = [];
if(!is_array($files)) {
$file = $files;
$product_gallery = new ProductGallery;
$product_gallery->product_id = $product_id;
$product_gallery->picture = Helper::storage_upload_file($file, FILE_PATH_PRODUCT);
$product_gallery->status = $status;
$product_gallery->save();
if($is_product_image == NO && $product) {
$product->picture = $product_gallery->picture;
$product->save();
}
$gallery_data = [];
$gallery_data['product_gallery_id'] = $product_gallery->id;
$gallery_data['file'] = $product_gallery->picture;
array_push($data, $gallery_data);
return $data;
}
foreach($files as $file) {
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$check_picture = in_array($extension, $allowedfileExtension);
if($check_picture) {
$product_gallery = new ProductGallery;
$product_gallery->product_id = $product_id;
$product_gallery->picture =Helper::storage_upload_file($file, FILE_PATH_PRODUCT);
$product_gallery->status = $status;
$product_gallery->save();
if($is_product_image == NO && $product) {
$product->picture = $product_gallery->picture;
$product->save();
}
$gallery_data = [];
$gallery_data['product_gallery_id'] = $product_gallery->id;
$gallery_data['file'] = $product_gallery->picture;
array_push($data, $gallery_data);
}
}
return $data;
}
/**
* @method store_orders_save()
*
* @uses Save Ordered Products
*
* @created Bhawya
*
* @updated Bhawya
*
* @param
*
* @return
*/
public static function orders_save($request) {
try {
DB::beginTransaction();
if(Auth::guard('user')->check()) {
$cart = Cart::where('carts.user_id', $request->id)->CommonResponse()
->where('products.status', APPROVED)
->get();
} else {
$cart = Cart::where('carts.ip_address', get_ip_address())->CommonResponse()
->where('products.status', APPROVED)
->get();
}
$total_amount = $cart->sum('total_price');
$order = new Order;
$order->user_id = $request->id;
$order->user_billing_address_id = $request->user_billing_address_id;
$order->total_products = count($cart);
$order->total = $total_amount;
$order->order_placed_date = date('Y-m-d H:i:s');
$order->unique_id = "GF-".get_unique_number();
$order->status = ORDER_PLACED;
$order->save();
foreach ($cart as $key => $value) {
$order_products = new OrderProduct;
$order_products->user_id = $request->id;
$order_products->order_id = $order->id;
$order_products->product_id = $value->product_id;
$order_products->quantity = $value->quantity;
$order_products->total = $value->total_price;
$order_products->save();
$products_inventory = ProductInventory::where('product_id',$value->product_id)->first();
if($products_inventory) {
$products_inventory->used_quantity += $value->quantity;
$products_inventory->remaining_quantity -= $value->quantity;
$products_inventory->save();
$product = Product::where('id',$value->product_id)->first();
$product->product_stock_status = $products_inventory->remaining_quantity == 0 ? PRODUCT_NOT_AVAILABLE : PRODUCT_AVAILABLE;
$product->save();
}
}
DB::commit();
return $order;
} catch(Exception $e) {
// Something else happened, completely unrelated to Stripe
DB::rollback();
$response = ['success' => false, 'error' => $e->getMessage(), 'error_code' => $e->getCode()];
return response()->json($response, 200);
}
}
/**
* @method order_payment_save()
*
* @uses Order Payment Save
*
* @created Bhawya
*
* @updated Bhawya
*
* @param
*
* @return
*/
public static function order_payment_save($request,$order) {
try {
DB::beginTransaction();
$store_order_payments = new OrderPayment;
$store_order_payments->order_id = $order->id;
$store_order_payments->user_id = $request->id;
$store_order_payments->payment_id = $request->payment_id;
$store_order_payments->payment_mode = COD;
$store_order_payments->total = $order->total ?? 0.00;
$store_order_payments->paid = $request->paid_amount ?? 0.00;
$store_order_payments->status = PAID_STATUS;
$store_order_payments->save();
$order = Order::find($order->id);
$order->status = ORDER_PLACED;
$order->save();
DB::commit();
$response_array = ['success' => true, 'message' => 'paid', 'data' => ['order_id' => $order->id]];
return response()->json($response_array, 200);
} catch(Exception $e) {
DB::rollback();
$response = ['success' => false, 'error' => $e->getMessage(), 'error_code' => $e->getCode()];
return response()->json($response, 200);
}
}
/**
* @method store_orders_save()
*
* @uses Save Ordered Products
*
* @created Bhawya
*
* @updated Bhawya
*
* @param
*
* @return
*/
public static function user_details_save($request) {
try {
DB::beginTransaction();
$user = New User;
$user->name = $request->name;
$user->first_name = $user->last_name ='';
$user->email = $request->email;
$user->status = USER_APPROVED;
$user->mobile = $request->mobile;
$user->login_by = 'manual';
$user->password = Hash::make($request->password);
$user->timezone = $request->has('timezone') ? $request->timezone : 'Asia/Kolkata';
if($user->save()) {
$email_data['subject'] = tr('user_welcome_title').' '.Setting::get('site_name');
$email_data['page'] = "emails.users.welcome";
$email_data['data'] = $user;
$email_data['email'] = $user->email;
$email_data['name'] = $user->email;
$email_data['verification_code'] = $user->verification_code;
dispatch(new \App\Jobs\SendEmailJob($email_data));
}
DB::commit();
return $user;
} catch(Exception $e) {
// Something else happened, completely unrelated to Stripe
DB::rollback();
$response = ['success' => false, 'error' => $e->getMessage(), 'error_code' => $e->getCode()];
return response()->json($response, 200);
}
}
/**
* @method user_billing_address_save()
*
* @uses
*
* @created Bhawya
*
* @updated Bhawya
*
* @param
*
* @return
*/
public static function user_billing_address_save($request) {
try {
DB::beginTransaction();
$user_billing_address = new UserBillingAddress;
$user_billing_address->user_id = $request->id;
$user_billing_address->street_address = $request->street_address;
$user_billing_address->address = $request->address;
$user_billing_address->zipcode = $request->zipcode;
$user_billing_address->city = $request->city;
$user_billing_address->type = ADDRESS_HOME;
$user_billing_address->save();
DB::commit();
return $user_billing_address;
} catch(Exception $e) {
// Something else happened, completely unrelated to Stripe
DB::rollback();
$response = ['success' => false, 'error' => $e->getMessage(), 'error_code' => $e->getCode()];
return response()->json($response, 200);
}
}
public static function order_confirmation_mail($request) {
try {
$user = User::find($request->id);
$email_data['subject'] = tr('order_confirmation').' '.Setting::get('site_name');
$email_data['page'] = "emails.users.order-status";
$email_data['data'] = $user;
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['order'] = Order::find($request->order_id) ?? '';
$email_data['order_products'] = OrderProduct::where('order_id',$request->order_id)->get() ?? [];
$email_data['message'] = tr('user_order_confirm_message',$user->name ?? '');
dispatch(new \App\Jobs\SendEmailJob($email_data));
$admin = Setting::get('admin_email_id');
$admin_email_data['subject'] = tr('order_confirmation').' '.Setting::get('site_name');
$admin_email_data['page'] = "emails.admin.order-status";
$admin_email_data['data'] = $admin;
$admin_email_data['email'] = $admin->email;
$admin_email_data['name'] = $admin->name;
$admin_email_data['message'] = tr('admin_order_confirm_message',$user->name ?? '');
dispatch(new \App\Jobs\SendEmailJob($admin_email_data));
} catch(Exception $e) {
$response = ['success' => false, 'error' => $e->getMessage(), 'error_code' => $e->getCode()];
return response()->json($response, 200);
}
}
}
Back to Directory
File Manager