Advertisement
rkg0612

Item Controller

Feb 21st, 2020
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.32 KB | None | 0 0
  1. //ItemController.php - used for storing items in the database, used on retrieving items in the database
  2.  
  3. class ItemController extends Controller {
  4.     //stores items
  5.     public function store(Request $request)
  6.     {
  7.         $data = $request->all();
  8.         $filename = time().'.'.$request->file('item_image')->getClientOriginalExtension();
  9.         $request->file('item_image')->move(public_path().'/img/item_images/', $filename);
  10.         $data['image'] = $filename;
  11.         try {
  12.             DB::beginTransaction();
  13.             $this->item_repository->create($data);
  14.             DB::commit();
  15.             $status = 'success';
  16.             $message = 'item has been created.';
  17.         } catch (\Exception $e) {
  18.             $status = 'error';
  19.             $message = 'Internal Server Error. Try again later.';
  20.             DB::rollBack();
  21.             dd($e->getMessage());
  22.         }
  23.         return redirect()->route('item.index')->with($status, $message);
  24.     }
  25.  
  26.     //stores expression per item
  27.     public function expression(Request $request)
  28.     {
  29.         $data = $request->all();
  30.         try {
  31.             DB::beginTransaction();
  32.             Expression::create($data);
  33.             DB::commit();
  34.             $status = 'success';
  35.             $message = 'Successfully collected expressions!';
  36.         } catch (\Exception $e) {
  37.             DB::rollBack();
  38.             $status = 'error';
  39.             $message = $e->getMessage();
  40.         }
  41.  
  42.         return redirect()->route('item.menu')->with($status, $message);
  43.     }
  44.  
  45.     //shows expression per item, calculates expression
  46.     public function showExpression($id)
  47.     {
  48.         $item = Item::find($id);
  49.         $expressions = $item->expressions;
  50.         $exp_arr = [
  51.             'Neutral' => $expressions->avg('neutral_score'),
  52.             'Happy' => $expressions->avg('happy_score'),
  53.             'Sad' => $expressions->avg('sad_score'),
  54.             'Angry' => $expressions->avg('angry_score'),
  55.             'Fearful' => $expressions->avg('fearful_score'),
  56.             'Disgusted' => $expressions->avg('disgusted_score'),
  57.             'Surprised' => $expressions->avg('surprised_score'),
  58.         ];
  59.         $dominant = array_search($this->getClosest(1, $exp_arr), $exp_arr);
  60.         foreach ($expressions as $expression) {
  61.             $single_exp_arr = [
  62.                 'Neutral' => $expression->neutral_score,
  63.                 'Happy' => $expression->happy_score,
  64.                 'Sad' => $expression->sad_score,
  65.                 'Angry' => $expression->angry_score,
  66.                 'Fearful' => $expression->fearful_score,
  67.                 'Disgusted' => $expression->disgusted_score,
  68.                 'Surprised' => $expression->surprised_score,
  69.             ];
  70.             $dominant_expression = array_search($this->getClosest(1, $single_exp_arr), $single_exp_arr);
  71.             $expression->dominant = $dominant_expression;
  72.         }
  73.         return view('item::dominant', compact('item', 'dominant', 'expressions'));
  74.     }
  75.  
  76.     //gets the closest expression based on the baseline set on the algorithm
  77.     private function getClosest($search, $arr){
  78.         $closest = null;
  79.         foreach ($arr as $item) {
  80.             if ($closest === null || abs($search - $closest) > abs($item - $search)) {
  81.                 $closest = $item;
  82.             }
  83.         }
  84.         return $closest;
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement