Path : /var/www/html/jewelry-pos/app/Http/Controllers/ |
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
Current File : /var/www/html/jewelry-pos/app/Http/Controllers/ApiController.php |
<?php namespace App\Http\Controllers; use App\Imports\ProductImport; use App\Models\ProductCategory; use App\Models\QtyHistory; use Carbon\Carbon; use App\Models\Sale; use App\Models\Member; use App\Models\Product; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use App\Models\SellProductAttribute; use Illuminate\Support\Facades\Auth; use Intervention\Image\Facades\Image; use Maatwebsite\Excel\Facades\Excel; class ApiController extends Controller { public function scan(Request $request) { $sale = Sale::where('invoice_no', $request->scan)->first(); return response()->json($sale); } public function updateImage(Request $request) { $product = Product::findOrFail($request->product_id); $save_url = ''; if ($request->hasFile('image')) { $image = $request->file('image'); $name_gen = hexdec(uniqid()) . '.' . $image->getClientOriginalExtension(); //hexdec generate image Image::make($image)->resize(800, 800, function ($constraint) { $constraint->aspectRatio(); })->save('images/' . $name_gen); $save_url = 'images/' . $name_gen; } $product->update([ 'image' => $save_url ]); return response()->json(['message' => __('message.updated successfully')]); } public function search(Request $request) { if(strlen($request->q) >= 5){ $products = Product::with('productCategory')->where('part_number', 'like','%'.$request->q.'%') ->where('qty','>',0)->where('is_active' , true)->get(); } // else{ // $products = Product::with('productCategory')->where('id' , $request->q) // ->where('qty','>',0)->whereIn('for_sale' , [1,2])->where('is_active' , true)->get(); // } foreach($products as $product){ if($product->fixed_price || $product->productCategory->fixed_price){ $product['sellingPrice']=$product->price; $product['upgradeSellingPrice']=$product->price; }else{ if($product->purity_upgrade_to){ $product['upgradeSellingPrice'] = $product->upgradeSellingPrice(); }else{ $product['upgradeSellingPrice'] = $product->sellingPrice(); } $product['sellingPrice']=$product->sellingPrice(); // dd($product['upgradeSellingPrice']); } if(!$product->weight){ $product->weight = 0; } $product->productCategory['selling_rate'] = $product->productCategory->sellingPrice($product->selling_purity); $product->productCategory['goldRate'] = $product->productCategory->sellingPrice(1); $product->productCategory['supplier_price'] = $product->productCategory->price(); $product->productCategory['upgrade_selling_rate'] = $product->productCategory->upgradeSellingRate($product->selling_purity); if($product->purity_upgrade_to){ $productCategoryName = ProductCategory::where('purity_level' , $product->purity_upgrade_to)->first(); }else{ $productCategoryName = ProductCategory::where('id' , $product->id)->first(); } $product->productCategory['name'] = $productCategoryName->name??$product->productCategory->name; // dd($product->productCategory->name); $product['productCategoryName'] = $product->productCategoryNameSelling(); } return response()->json($products); } public function searchDiamond(Request $request) { $q = $request->q; $products = Product::where('part_number' , 'like' , '%' . $q . '%')->where('is_active' , true)->where('qty' , '>' , 0)->where('for_sale' , false)->get(); return response()->json($products); } public function modify(Request $request) { $modify = $request->get('modify'); $products = Product::where('part_number', 'like' , '%' . $modify . '%')->get(); return response()->json($products); } public function store(Request $request) { // if($request->product_id){ if(($request->usd_amount!=null || $request->thb_amount!=null || $request->khr_amount!=null)){ $product = Product::findOrFail($request->product_id); if($product->image){ $image = $product->image; }else{ $save_url = ''; if ($request->hasFile('image')) { $image = $request->file('image'); $name_gen = hexdec(uniqid()) . '.' . $image->getClientOriginalExtension(); //hexdec generate image Image::make($image)->resize(800, 800, function ($constraint) { $constraint->aspectRatio(); })->save('images/' . $name_gen); $save_url = 'images/' . $name_gen; } $image = $save_url??''; } if($product->qty>=$request->qty) { // $productAccessories = Product::where('for_sale' , false)->where('weight' , '!=' , 0)->where('product_category_id' , $product->product_category_id)->first(); if ($request->phone) { $customer = Member::create([ 'name' => $request->customer_name??'', 'phone' => $request->phone??'', 'note' => $request->note??'', ]); } $fixed_price = false; if($product->fixed_price){ if($product->price != $request->sales_price){ $fixed_price = false; }else{ $fixed_price = true; } } // if($product->weight < $request->weight??0){ // $w = $request->weight - $product->weight; // dd('request X = ' . $w); // } $wages = 0; $original_wages = $product->original_wages; $wages_in_weight = 0; $original_wages_in_weight = $product->original_wages_in_weight; $selling_purity = $product->selling_purity; if(!$request->upgrade_purity){ // if($product->productCategory->fixed_price == true || $product->fixed_price == true){ // $wages = $request->wages??0; // $original_wages = $request->original_wages??0; // $wages_in_weight = $request->wages / ($product->supplier_rate / 1000); // $original_wages_in_weight = $request->original_wages / ($product->supplier_rate / 1000); // }else{ // $wages = $request->wages * ($product->productCategory->sellingPrice()); //// $original_wages = $request->original_wages * ($product->productCategory->price()); // $original_wages = $request->original_wages * ($product->productCategory->price(null,$product->purity_level)); // $wages_in_weight = $request->wages??0; // $original_wages_in_weight = $request->original_wages??0; // } $wages = number_format($product->selling_wagesInWeight() , 2); $original_wages = number_format($product->cost_wagesInWeight(),2); $wages_in_weight = number_format($request->wages , 2); $original_wages_in_weight = number_format($request->original_wages , 2); $selling_purity = 0; } $selling_cost = $product->sellingCost($product->weight , null)??0; $cost_product = $product->cost??0; $rate_for_sale = 0; if($product->productCategory->fixed_price == true){ $rate_for_sale = $product->productCategory->sellingPrice(floatval($product->weight_description)); }else{ $rate_for_sale = $product->productCategory->sellingPrice($product->selling_purity); } if($request->weight < $product->weight){ $wasts_weight = $product->weight - floatval($request->weight); $name_for_accessory = $product->productCategory->name . ' គីឡូ'; $accessory_product = Product::where('name' , $name_for_accessory)->where('is_active',true)->first(); // if($accessory_product && $request->cut_weight == 1){ if($request->cut_weight == 1){ // $accessory_product->description = $accessory_product->description . ' | ' . $product->part_number . ' : -' . $wasts_weight; $qtyHistory_note = $product->part_number . ' : -' . number_format($request->weight , 2); if($product->for_sale != 0 && $accessory_product){ $accessory_product->weight = $accessory_product->weight + $wasts_weight; $accessory_product->save(); } $selling_cost = $product->sellingCost($request->weight , null)??0; $cost_product = $request->weight * ($product->supplier_rate / 1000 )??0; $weights = -$request->weight; $weight_after_transaction = $wasts_weight; $qtyHistory = QtyHistory::create([ 'qty' => $product->qty, 'qty_after_transaction' => $product->qty, 'qty_before_transaction' => $product->qty, 'product_id' => $product->id, 'product_category_id' => $product->product_category_id, 'user_id' => $request->user_id??Auth::user()->id, 'note' => $qtyHistory_note, 'grn' => '', 'weight' => $weights, 'weight_before_transaction' => $product->weight, 'weight_after_transaction' => $weight_after_transaction, 'product_cost' => $product->sellingCost($weights), ]); } } if($product->for_sale == 0){ if($product->weight > $request->weight){ $product->weight = $product->weight - $request->weight; $product->save(); } } $gain_lose_amount = ($product->weight * $request->rate)-$cost_product??0; $not_use_rate = false; if($request->not_use_rate == '1'){ $selling_cost = $cost_product; $wages = $original_wages; $wages_in_weight = $original_wages_in_weight; $not_use_rate = true; } $sale = Sale::create([ // 'selling_to_usd_exchange_rate' => $request->selling_to_usd_exchange_rate ?? 0, // 'for_sale' => $product->for_sale, // 'note' => $request->note_not_for_sale, 'member_id' => $customer->id ?? '', 'product_id' => $request->product_id??0, 'part_number' => $product->part_number??'', 'sales_price' => $request->sales_price??0, 'name' => $request->name??'', 'discount' => $request->discount??0, 'cost' => $cost_product, 'is_active' => true, 'description' => $request->description??'', // 'image' => $product->image, 'weight' => $request->weight??0, 'product_category_id' => $product->product_category_id, 'user_id' => $request->user_id??Auth::user()->id, 'wages' => $wages, 'wages_in_weight' => $wages_in_weight, 'original_wages_in_weight' => $original_wages_in_weight, 'invoice_no' => random_int(000000000, 999999999), 'diamond_size' => $request->diamond_size ?? '', 'usd_amount' => $request->usd_amount ?? 0, 'khr_amount' => $request->khr_amount ?? 0, 'thb_amount' => $request->thb_amount ?? 0, 'qty' => $request->qty ?? 1, 'original_wages' => $original_wages, // 'selling_cost'=>$product->sellingCost($request->weight)??0, 'selling_cost'=> $selling_cost, 'selling_rate'=> $rate_for_sale??0, 'image' => $image??'', 'fixed_price' => $fixed_price, 'weight_description'=>$product->weight_description??'', 'purity_upgrade_to' => $product->purity_upgrade_to??0, 'selling_purity' => $selling_purity??0, 'supplier_rate' => $product->supplier_rate??0, 'old_code' => $product->old_code??'', 'purity_level' => $product->purity_level??0, 'original_invoice' => $product->original_invoice??'', 'not_use_rate' => $not_use_rate, 'gain_lose_amount' => $gain_lose_amount, 'rate' => $request->rate??0, ]); if(isset($qtyHistory)){ $qtyHistory->note = $qtyHistory->note." : #sale_id=".$sale->id; $qtyHistory->save(); } if($request->for_sale == 1){ $product->qty = $product->qty - ($request->qty ?? 1); } $product->save(); $product = Product::find($request->product_id); if (is_array($product->productAttributes) || is_object($product->productAttributes)){ foreach($product->productAttributes as $index => $productAttribute){ SellProductAttribute::create([ 'name'=>$productAttribute->name??'', 'qty'=>$productAttribute->qty??0, 'cost'=>$productAttribute->cost??0, 'price'=>$productAttribute->price??0, 'sell_id'=>$sale->id ]); } } return response()->json(["status"=>'success','sale_id'=>$sale->id,'message'=>__('message.created successfully')]); } else{ return response()->json(['status'=>'error','message'=>__('message.invalid qty')]); } } else{ return response()->json(['status'=>'error','message'=>__('message.empty price')]); } // } // else{ // return response()->json(['message'=>'empty product id']); // } } public function update_price() { } public function saleChart() { $days = []; $values = []; // $daysInMonth = now()->daysInMonth; $today = now()->day; $thisMonth = now()->format('M'); $thisYear = now()->year; for ($i = 1; $i <= $today; $i++) { if($i == $today){ $days[] = "{$i}/{$thisMonth} (today)"; }else{ $days[] = "{$i}/{$thisMonth}"; } $date = now()->startOfMonth()->addDays($i - 1)->toDateString(); $sales = Sale::whereBetween('created_at' , [$date . ' 00:00:00' , $date . ' 23:59:59'])->count('id'); $values[] = $sales; } return response()->json([ 'categories' => $days, 'series' => $values ]); } }