mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-31 13:41:09 -04:00 
			
		
		
		
	build version 400
This commit is contained in:
		
							
								
								
									
										106
									
								
								app/Http/Controllers/V1/Item/ItemsController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								app/Http/Controllers/V1/Item/ItemsController.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,106 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Item; | ||||
|  | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Illuminate\Http\Request; | ||||
| use Crater\Http\Requests; | ||||
| use Crater\Http\Requests\DeleteItemsRequest; | ||||
| use Crater\Models\Item; | ||||
| use Crater\Models\TaxType; | ||||
|  | ||||
| class ItemsController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Retrieve a list of existing Items. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function index(Request $request) | ||||
|     { | ||||
|         $limit = $request->has('limit') ? $request->limit : 10; | ||||
|  | ||||
|         $items = Item::with(['taxes', 'creator']) | ||||
|             ->leftJoin('units', 'units.id', '=', 'items.unit_id') | ||||
|             ->applyFilters($request->only([ | ||||
|                 'search', | ||||
|                 'price', | ||||
|                 'unit_id', | ||||
|                 'item_id', | ||||
|                 'orderByField', | ||||
|                 'orderBy' | ||||
|             ])) | ||||
|             ->whereCompany($request->header('company')) | ||||
|             ->select('items.*', 'units.name as unit_name') | ||||
|             ->latest() | ||||
|             ->paginateData($limit); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'items' => $items, | ||||
|             'taxTypes' => TaxType::latest()->get(), | ||||
|             'itemTotalCount' => Item::count() | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Create Item. | ||||
|      * | ||||
|      * @param  Crater\Http\Requests\ItemsRequest $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function store(Requests\ItemsRequest $request) | ||||
|     { | ||||
|         $item = Item::createItem($request); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'item' => $item | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * get an existing Item. | ||||
|      * | ||||
|      * @param  Item $item | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function show(Item $item) | ||||
|     { | ||||
|         $item->load('taxes'); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'item' => $item | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update an existing Item. | ||||
|      * | ||||
|      * @param  Crater\Http\Requests\ItemsRequest $request | ||||
|      * @param  \Crater\Models\Item $item | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function update(Requests\ItemsRequest $request, Item $item) | ||||
|     { | ||||
|         $item = $item->updateItem($request); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'item' => $item | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Delete a list of existing Items. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function delete(DeleteItemsRequest $request) | ||||
|     { | ||||
|         Item::destroy($request->ids); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										109
									
								
								app/Http/Controllers/V1/Item/UnitsController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								app/Http/Controllers/V1/Item/UnitsController.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,109 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Item; | ||||
|  | ||||
| use Crater\Models\Unit; | ||||
| use Illuminate\Http\Request; | ||||
| use Crater\Http\Requests\UnitRequest; | ||||
| use Crater\Http\Controllers\Controller; | ||||
|  | ||||
| class UnitsController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function index(Request $request) | ||||
|     { | ||||
|         $limit = $request->has('limit') ? $request->limit : 5; | ||||
|  | ||||
|         $units = Unit::whereCompany($request->header('company')) | ||||
|             ->applyFilters($request->only([ | ||||
|                 'unit_id' | ||||
|             ])) | ||||
|             ->latest() | ||||
|             ->paginateData($limit); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'units' => $units | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Show the form for creating a new resource. | ||||
|      * | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function create() | ||||
|     { | ||||
|         // | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Store a newly created resource in storage. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request  $request | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function store(UnitRequest $request) | ||||
|     { | ||||
|         $data = $request->validated(); | ||||
|         $data['company_id'] = $request->header('company'); | ||||
|         $unit = Unit::create($data); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'unit' => $unit | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Display the specified resource. | ||||
|      * | ||||
|      * @param  \Crater\Models\Unit  $unit | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function show(Unit $unit) | ||||
|     { | ||||
|         return response()->json([ | ||||
|             'unit' => $unit | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update the specified resource in storage. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request  $request | ||||
|      * @param  \Crater\Models\Unit  $unit | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function update(UnitRequest $request, Unit $unit) | ||||
|     { | ||||
|         $unit->update($request->validated()); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'unit' => $unit | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param  \Crater\Models\Unit  $unit | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function destroy(Unit $unit) | ||||
|     { | ||||
|         if ($unit->items()->exists()) { | ||||
|             return response()->json([ | ||||
|                 'error' => 'items_attached' | ||||
|             ]); | ||||
|         } | ||||
|  | ||||
|         $unit->delete(); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => 'Unit deleted successfully' | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user