fix package has 1 item

This commit is contained in:
mahdi purHosseini
2023-11-28 13:07:29 +03:30
parent b1184eb068
commit d61d3cc3d5
+18 -18
View File
@@ -3,13 +3,17 @@
namespace App\Http\Controllers;
use App\Http\Requests\StorePackageRequest;
use App\Item;
use App\Package;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PackageController extends Controller
{
public function index( Request $request )
{
DB::table("item_package")->delete();
dd(1);
$user = auth( 'api' )->user();
$Packages = Package::when( $user->cant( 'showAll' , Package::class ) , function ( $query ) use ( $user ) {
@@ -73,20 +77,13 @@ class PackageController extends Controller
'verified' => 'NotVerified' ,
];
$PackageObj = Package::create( $PackageData );
$Items = [];
$count = 1;
foreach ( $request->items as $key => $item ) {
if ( array_key_exists( $item[ 'id' ] , $Items ) ) {
$preCount = $Items[ $item[ 'id' ] ];
$Items[ $item[ 'id' ] ] = $preCount + 1;
} else {
$Items[ $item[ 'id' ] ] = $count;
foreach ( $request->items as $itemId ) {
$item = Item::where( "id" , $itemId )->first();
if ( $item ) {
$item->packages()->detach();
$PackageObj->items()->attach( $item->id , [ 'count' => 1 ] );
}
}
foreach ( $Items as $Item => $Count ) {
$PackageObj->items()->attach( array( $Item ) , [ 'count' => $Count ] );
}
return \MessageResponse::success( trans( 'messages.success' ) );
}
@@ -107,21 +104,24 @@ class PackageController extends Controller
public function update( StorePackageRequest $request , Package $Package )
{
$Package->update( $request->except( [ 'items' ] ) );
$Items = [];
$count = 1;
foreach ( $request->items as $key => $item ) {
if ( array_key_exists( $item[ 'id' ] , $Items ) ) {
$preCount = $Items[ $item[ 'id' ] ];
$Items[ $item[ 'id' ] ] = $preCount + 1;
$itemOld = $Package->items()->where("item_id",$item[ 'id' ])->first();
if ( $itemOld ) {
$Items[ $item[ 'id' ] ] = $itemOld->pivot->count + 1;
} else {
$Items[ $item[ 'id' ] ] = $count;
}
}
$Package->items()->detach();
foreach ( $Items as $Item => $Count ) {
$Package->items()->attach( array( $Item ) , [ 'count' => $Count ] );
$item = Item::where( "id" , array( $Item ) )->first();
if ( $item ) {
$item->packages()->detach();
$Package->items()->attach( array( $item->id ) , [ 'count' => $Count ] );
}
}
return \MessageResponse::success( trans( 'messages.success' ) );