/** * get movedItems. *@param $recipient * @param $level * @return Response */ public function movedItems1($recipient, $level) { if ($level == '1') { return ItemMovement::where('recipient_id', $recipient)->get(); } elseif ($level == '2') { $orgunit = Recipient::find($recipient); $arr = [0, $recipient]; array_push($arr, $recipient); foreach ($orgunit->childrens as $val) { array_push($arr, $val->id); } $dispatch = ItemMovement::whereIn('recipient_id', $arr)->get(); } elseif ($level == '3') { $orgunit = Recipient::find($recipient); $arr = [0]; array_push($arr, $recipient); foreach ($orgunit->childrens as $val) { array_push($arr, $val->id); $orgunit1 = Recipient::find($val->id); foreach ($orgunit1->childrens as $val) { array_push($arr, $val->id); } } $dispatch = ItemMovement::whereIn('recipient_id', $arr)->get(); } else { return ItemMovement::where('recipient_id', $recipient)->get(); } return $dispatch; }
public function move_item(Request $request) { $storeStock = StoreStock::find($request->input('item_id')); $volume = $request->input('doses') * PackagingInformation::find($storeStock->packaging_id)->cm_per_dose * 0.001; $recipient = Recipient::find(Auth::user()->recipient_id); $storeStock->amount = $request->has('doses') ? $storeStock->amount - $request->input('doses') : $storeStock->amount; $storeStock->save(); if ($storeStock->amount == 0) { $storeStock->delete(); } if (count(StoreStock::where('store_id', $request->input('to_store'))->where('vaccine_id', $storeStock->vaccine_id)->where('lot_number', $storeStock->lot_number)->get()) != 0) { $storeStock1 = StoreStock::where('store_id', $request->input('to_store'))->where('vaccine_id', $storeStock->vaccine_id)->where('lot_number', $storeStock->lot_number)->first(); $storeStock1->amount = $request->has('doses') ? $storeStock1->amount + $request->input('doses') : $storeStock1->amount; $storeStock1->save(); } else { $storeStock1 = new StoreStock(); $storeStock1->vaccine_id = $storeStock->vaccine_id; $storeStock1->store_id = $request->input('to_store'); $storeStock1->amount = $request->input('doses'); $storeStock1->lot_number = $storeStock->lot_number; $storeStock1->packaging_id = $storeStock->packaging_id; $storeStock1->expiry_date = $storeStock->expiry_date; $storeStock1->unit_price = $storeStock->unit_price; $storeStock1->source_id = $storeStock->source_id; $storeStock1->activity_id = $storeStock->activity_id; $storeStock1->save(); } $movement = new ItemMovement(); $nextNumber = $this->getNextMovementNumber(); $str = ""; for ($sj = 6; $sj > strlen($nextNumber); $sj--) { $str .= "0"; } $movement->reference = date('Y') . "4" . $str + "" . $nextNumber; $movement->from_store = $storeStock->store_id; $movement->to_store = $storeStock1->store_id; $movement->store_item_id = $storeStock->id; $movement->user_id = Auth::user()->id; $movement->amount = $request->input('doses'); $movement->recipient_id = Auth::user()->recipient_id; $movement->vaccine_id = $storeStock->vaccine_id; $movement->lot_number = $storeStock->lot_number; $movement->expiry_date = $storeStock->expiry_date; $movement->moved_volume = $volume; $movement->year = date('Y'); $movement->order_no = $nextNumber; $movement->save(); $store = Store::find($storeStock->store_id); $store1 = Store::find($storeStock1->store_id); $store->used_volume = $store->used_volume - $volume; $store->save(); $store1->used_volume = $store1->used_volume + $volume; $store1->save(); Log::create(array("user_id" => Auth::user()->id, "action" => "Move " . $request->input('doses') . " Doses of " . Vaccine::find($storeStock->vaccine_id)->name . " from " . $store->name . " To " . $store1->name)); return $movement->reference; }