public function saveUserTraits(UserService $user, $user_id) { try { $inputs = Request::only('trait_ids', 'type'); $traits = []; $trait_ids = $inputs['trait_ids']; $query = ['select' => 'id', 'whereNotIn' => $trait_ids, 'list' => true]; $non_user_traits = $user->getTraitsByType($inputs['type'], $query); $user->deleteUserTrait($user_id, $non_user_traits); for ($i = 0; $i < count($trait_ids); $i++) { $trait = []; if ($user->checkUserTraitArchive($user_id, $trait_ids[$i])) { $trait = $user->restoreUserTrait($user_id, $trait_ids[$i]); } else { if ($user->checkUserTrait($user_id, $trait_ids[$i])) { $trait = $user->getUserTrait($user_id, $trait_ids[$i]); } else { $trait = $user->createUserTrait($user_id, $trait_ids[$i]); } } if ($trait) { $traits[] = $trait; } } if (count($traits) > 0 && !empty($traits)) { return $this->json_response->success($traits); } return $this->json_response->error(); } catch (Exception $e) { return $this->json_response->error(['error' => $e->getMessage()]); } }