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; namespace App\Http\Controllers;
use App\Http\Requests\StorePackageRequest; use App\Http\Requests\StorePackageRequest;
use App\Item;
use App\Package; use App\Package;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PackageController extends Controller class PackageController extends Controller
{ {
public function index( Request $request ) public function index( Request $request )
{ {
DB::table("item_package")->delete();
dd(1);
$user = auth( 'api' )->user(); $user = auth( 'api' )->user();
$Packages = Package::when( $user->cant( 'showAll' , Package::class ) , function ( $query ) use ( $user ) { $Packages = Package::when( $user->cant( 'showAll' , Package::class ) , function ( $query ) use ( $user ) {
@@ -73,20 +77,13 @@ class PackageController extends Controller
'verified' => 'NotVerified' , 'verified' => 'NotVerified' ,
]; ];
$PackageObj = Package::create( $PackageData ); $PackageObj = Package::create( $PackageData );
$Items = []; foreach ( $request->items as $itemId ) {
$count = 1; $item = Item::where( "id" , $itemId )->first();
foreach ( $request->items as $key => $item ) { if ( $item ) {
if ( array_key_exists( $item[ 'id' ] , $Items ) ) { $item->packages()->detach();
$preCount = $Items[ $item[ 'id' ] ]; $PackageObj->items()->attach( $item->id , [ 'count' => 1 ] );
$Items[ $item[ 'id' ] ] = $preCount + 1;
} else {
$Items[ $item[ 'id' ] ] = $count;
} }
} }
foreach ( $Items as $Item => $Count ) {
$PackageObj->items()->attach( array( $Item ) , [ 'count' => $Count ] );
}
return \MessageResponse::success( trans( 'messages.success' ) ); return \MessageResponse::success( trans( 'messages.success' ) );
} }
@@ -107,21 +104,24 @@ class PackageController extends Controller
public function update( StorePackageRequest $request , Package $Package ) public function update( StorePackageRequest $request , Package $Package )
{ {
$Package->update( $request->except( [ 'items' ] ) ); $Package->update( $request->except( [ 'items' ] ) );
$Items = []; $Items = [];
$count = 1; $count = 1;
foreach ( $request->items as $key => $item ) { foreach ( $request->items as $key => $item ) {
if ( array_key_exists( $item[ 'id' ] , $Items ) ) { $itemOld = $Package->items()->where("item_id",$item[ 'id' ])->first();
$preCount = $Items[ $item[ 'id' ] ]; if ( $itemOld ) {
$Items[ $item[ 'id' ] ] = $preCount + 1; $Items[ $item[ 'id' ] ] = $itemOld->pivot->count + 1;
} else { } else {
$Items[ $item[ 'id' ] ] = $count; $Items[ $item[ 'id' ] ] = $count;
} }
} }
$Package->items()->detach(); $Package->items()->detach();
foreach ( $Items as $Item => $Count ) { 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' ) ); return \MessageResponse::success( trans( 'messages.success' ) );