Example #1
0
 /**
  * POST /api/itemRequests
  * @param StoreItemRequest $request
  * @return Response
  */
 public function store(StoreItemRequest $request)
 {
     $currentUser = Auth::user();
     if ($currentUser && $this->itemsRepository->itemAlreadyExists($request)) {
         //Checking $currentUser is true because if it's feedback sent from one of my apps,
         //the itemAlreadyExists method will throw an exception because the user isn't logged in
         return response(['error' => "You already have this item here.", 'status' => Response::HTTP_BAD_REQUEST], Response::HTTP_BAD_REQUEST);
     } else {
         $item = new Item($request->only(['title', 'body', 'priority', 'urgency', 'favourite', 'alarm', 'not_before', 'recurring_unit', 'recurring_frequency']));
         if ($request->get('recurring_unit') === 'none') {
             $item->recurring_unit = null;
         }
         //This is because the alarm was getting set to 0000-00-00 00:00:00 when no alarm was specified
         if ($request->has('alarm') && !$request->get('alarm')) {
             $item->alarm = null;
         }
         $parent = false;
         if ($request->get('parent_id')) {
             $parent = Item::find($request->get('parent_id'));
             $item->parent()->associate($parent);
         }
         if ($currentUser) {
             $item->user()->associate(Auth::user());
         } else {
             //User is not logged in. It could be a feedback request from one of my apps. Add the item to my items (user_id 1).
             $item->user()->associate(1);
         }
         $item->category()->associate(Category::find($request->get('category_id')));
         $item->index = $item->calculateIndex($request->get('index'), $parent);
         $item->save();
         $item = $this->transform($this->createItem($item, new ItemTransformer()))['data'];
         return response($item, Response::HTTP_CREATED);
     }
 }