Viewing file: SaleController.php (7.39 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use App\Models\ProductTranslation;
use App\Models\Sale;
use App\Models\SaleItem;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Carbon\Carbon;
use DateTime;
class SaleController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
// get orders
function index($vendor_id,Request $req)
{
if (count($req->query())===0) {
$sales= Sale::with('order_product')->where("vendor_id",$vendor_id)->get();
return response()->json(["data"=>$sales]);
}else{
$pr= new Sale;
$table = $pr->getTable();
$columns = \Schema::getColumnListing($table);
$sales = Sale::query();
$params = $req->query();
foreach ($params as $key => $value) {
if (in_array($key,$columns,true)) {
if (!empty($value) || $value==0){
$sales->where($key,$value);
}
}else{
return response()->json(['error' => 'true', 'message' =>"invalid parameter ".$key]);
}
}
$sales=$sales->with('order_product')->where("vendor_id",$vendor_id)->get();
return response()->json(["data"=>$sales]);
}
}
// create new order
public function create($vendor_id,Request $req)
{
if (empty($req->input("sale_item"))) {
return response()->json(["error"=>true,"message"=>"No Product Is selected"]);
}
$ref=Sale::select("invoice_no")->where('vendor_id',$vendor_id)->orderBy('id','desc')->limit(1)->get();
if (count($ref)>0) {
$last_order_id=$ref[0]->invoice_no;
}else{
$last_order_id=100000000;
}
DB::beginTransaction();
try {
$sale=Sale::create([
'invoice_no' => $last_order_id+1,
"page_id" => $req->input("page_id"),
"receiver_name" => $req->input("receiver_name"),
"receiver_phone" => $req->input("receiver_phone"),
'customer_id' => $req->input("customer_id"),
'customer' => $req->input("customer"),
'vendor_id' => $vendor_id,
'note' => $req->input("note"),
'total' => $req->input("total"),
'discount_code' => 0,
'total_discount' => 0,
'shipping' => $req->input("shipping"),
'grand_total' => $req->input("grand_total"),
'total_items' => $req->input("total_items"),
'sale_status' => 1,
'payment_status' => 'pending',
"type" => $req->input('type'),
"delivery_partner" => $req->input('delivery_partner'),
'paid' => 0,
'payment_method' => $req->input('payment_method'),
'address' => $req->input("address")
]);
} catch (\Exception $exception) {
DB::rollback();
return response()->json(['error' => 'true', 'message' =>$exception->errorInfo[2]]);
}
if ($sale) {
try {
$products=explode("||",$req->input("sale_item"));
for ($i=0; $i <count($products) ; $i++) {
$product_info=explode(",",$products[$i]);
SaleItem::create([
'sale_id'=>$sale->id,
'invoice_no'=>$sale->invoice_no,
'product_id'=>$product_info[0],
"product_code"=>$product_info[1],
"product_name"=>$product_info[2],
"variant_id"=>$product_info[3],
"unit_price"=>$product_info[4],
"quantity"=>$product_info[5],
"subtotal"=>$product_info[4]*$product_info[5]
]);
}
} catch (\Exception $exception) {
DB::rollback();
return response()->json(['error' => 'true', 'message' =>$exception->errorInfo[2]]);
}
DB::commit();
// $product = Product::find($product->id);
// $product->url=str_replace(" ","_",$req->input('title'))."_".$product->id;
// $product->save();
// // // return response()->json(['message' => "Product Added Successfully"]);
$d = new DateTime();
$t=$d->format("ymdHisv");
$data=["id"=>$sale->id,"invoice_no"=>$sale->invoice_no,"_id"=>$t,"created_at"=>$sale->created_at];
return response()->json(['message' => "Successfully Ordered",'data' => $data]);
} else {
DB::rollback();
return response()->json(['error' => 'true','message' => "Something is wrong please try again"]);
}
}
// update order
function update($vendor_id,Request $req)
{
$change_items=$req->input("change_items");
$sale=Sale::find($req->input('sale_id'));
if ($change_items!=="") {
$change_items=explode("||",$req->input("change_items"));
for ($i=0; $i <count($change_items) ; $i++) {
$product_info=explode(",",$change_items[$i]);
// product_id,variant_id,quantity,subtotal
$item=SaleItem::where('sale_id',$req->input("sale_id"))->where('product_id',$product_info[0])->where('variant_id',$product_info[1])->first();
$item->quantity=$product_info[2];
$item->subtotal=$product_info[3];
$item->edited=1;
$item->save();
}
}
$new_items=$req->input("new_items");
if ($new_items!=="") {
$new_items=explode("||",$req->input("new_items"));
for ($i=0; $i <count($new_items) ; $i++) {
$product_info=explode(",",$new_items[$i]);
SaleItem::create([
'sale_id'=>$sale->id,
'invoice_no'=>$sale->invoice_no,
'product_id'=>$product_info[0],
"product_code"=>$product_info[1],
"product_name"=>$product_info[2],
"variant_id"=>$product_info[3],
"unit_price"=>$product_info[4],
"quantity"=>$product_info[5],
"subtotal"=>$product_info[4]*$product_info[5],
"edited"=>1
]);
}
}
$sale->total=$req->input("total");
$sale->shipping=$req->input("shipping");
$sale->grand_total=$req->input("grand_total");
$sale->total_items=$req->input("total_items");
$sale->delivery_partner=$req->input("delivery_partner");
$sale->save();
return response()->json(["message"=>"Done"]);
}
// update sale status
function sale_status($sale_id,Request $req)
{
$sale=Sale::find($sale_id);
$sale->sale_status=$req->input("sale_status");
$sale-save();
return $sale;
}
}
|