Advertisement
psycho8948

WMS Add to portfolio & wishlist

Apr 11th, 2023 (edited)
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.82 KB | None | 0 0
  1. Schema::create('user_portfolio', function (Blueprint $table) {
  2. $table->id();
  3. $table->unsignedBigInteger('user_id');
  4. $table->unsignedBigInteger('idea_id');
  5. $table->timestamps();
  6.  
  7. $table->foreign('user_id')->references('id')->on('users');
  8. $table->foreign('idea_id')->references('id')->on('ideas');
  9. });
  10.  
  11. Schema::create('user_wishlist', function (Blueprint $table) {
  12. $table->id();
  13. $table->unsignedBigInteger('user_id');
  14. $table->unsignedBigInteger('idea_id');
  15. $table->timestamps();
  16.  
  17. $table->foreign('user_id')->references('id')->on('users');
  18. $table->foreign('idea_id')->references('id')->on('ideas');
  19. });
  20.  
  21.  
  22. ClientControleller
  23. public function view($id)
  24. {
  25. $idea = Idea::with('user', 'categories', 'currencies', 'majorsectors', 'minorsectors', 'regions', 'countries')->find($id);
  26. $user = User::with('portfolio', 'wishlist')->find(Auth::user()->id);
  27. $portfolio = $user->portfolio;
  28. $wishlist = $user->wishlist;
  29. $pagename = $idea->title;
  30.  
  31. return view('client.view-idea', compact('idea', 'pagename', 'portfolio', 'wishlist'));
  32. }
  33. public function add_to_portfolio($id)
  34. {
  35. $user = Auth::user();
  36. $user->wishlist()->detach($id);
  37. $user->portfolio()->attach($id);
  38.  
  39.  
  40. return redirect()->back()->with('success', 'Congratulations, Added to portfolio successfully!');
  41. }
  42. public function portfolio()
  43. {
  44. $user = User::with('portfolio')->find(Auth::user()->id);
  45. $ideas = $user->portfolio;
  46. $pagename = 'My Portfolio';
  47.  
  48. return view('client.portfolio', compact('ideas', 'pagename'));
  49. }
  50. public function add_to_wishlist($id)
  51. {
  52. $user = Auth::user();
  53. $user->wishlist()->attach($id);
  54.  
  55.  
  56. return redirect()->back()->with('success', 'Congratulations, Added to wishlist successfully!');
  57. }
  58. public function wishlist()
  59. {
  60. $user = User::with('wishlist')->find(Auth::user()->id);
  61. $ideas = $user->wishlist;
  62. $pagename = 'My Wishlist';
  63.  
  64. return view('client.portfolio', compact('ideas', 'pagename'));
  65. }
  66.  
  67.  
  68. Idea
  69.  
  70.  
  71. public function userportfolio()
  72. {
  73. return $this->belongsToMany(User::class, 'user_portfolio', 'idea_id', 'user_id');
  74. }
  75.  
  76. public function userwishlist()
  77. {
  78. return $this->belongsToMany(User::class, 'user_wishlist', 'idea_id', 'user_id');
  79. }
  80.  
  81.  
  82. User
  83.  
  84. public function portfolio()
  85. {
  86. return $this->belongsToMany(Idea::class, 'user_portfolio', 'user_id', 'idea_id');
  87. }
  88. public function wishlist()
  89. {
  90. return $this->belongsToMany(Idea::class, 'user_wishlist', 'user_id', 'idea_id');
  91. }
  92.  
  93. portfolio blade (new)
  94.  
  95. <x-app-layout>
  96. <div class="layout-main">
  97. @include('layouts.header')
  98. <div class="content-wrapper py-2">
  99. <div class="container">
  100. <ul class="d-flex align-items-center custom-breadcrumb list-unstyled mb-2 py-1">
  101. <li>
  102. <a href="FIXME:">Home</a>
  103. </li>
  104. <li>
  105. {{ $pagename }}
  106. </li>
  107. </ul>
  108. <h5 class="page-title">{{ $pagename }}</h5>
  109. </div>
  110. <!-- Start Dynamic Sections Starts here -->
  111. <section class="investment-lists pb-5">
  112. <div class="container">
  113. <div class="row mt-3">
  114. @foreach ($ideas as $idea)
  115. <div class="col-lg-4 mb-3">
  116. <div class="custom-card">
  117. <figure>
  118. <img src="https://developers.elementor.com/docs/assets/img/elementor-placeholder-image.png"
  119. class="w-100" alt="">
  120. </figure>
  121. <p class="mb-2 title">{{ $idea->title }}</p>
  122. <p class="mb-2 content">{{ $idea->abstract }}</p>
  123. <span class="d-block mb-2 date">{{ date('d/m/Y', strtotime($idea->published_date)) }}</span>
  124. <a href="{{ route('client.view-idea', ['id' => $idea->id]) }}"
  125. class="btn btn-custom px-4 py-2 d-flex align-items-center justify-content-center">Read
  126. More <i class="fas fa-arrow-right ml-2"></i></a>
  127. </div>
  128. </div>
  129. @endforeach
  130. </div>
  131. </div>
  132. </section>
  133. <!-- Start Dynamic Sections Ends here -->
  134. </div>
  135. </div>
  136. </x-app-layout>
  137.  
  138.  
  139. view-idea blade
  140.  
  141. <section class="idea-details">
  142. <div class="container">
  143. <div class="d-flex align-items-center justify-content-between">
  144. <h4 class="page-title">{{ $idea->title }}</h4>
  145. <div class="d-flex align-items-center">
  146. @if(in_array($idea->id, $wishlist->pluck('id')->toArray()))
  147. <form action="{{ route('client.add-to-portfolio', ['id' => $idea->id]) }}" method="POST">
  148. @csrf
  149. <button type="submit" class="btn btn-custom px-4 py-2 d-flex align-items-center justify-content-center">
  150. <i class="fas fa-plus-circle mr-2"></i>
  151. Add to portfolio
  152. </button>
  153. </form>
  154. @endif
  155. @if(in_array($idea->id, $portfolio->pluck('id')->toArray()))
  156. <button type="button" class="btn btn-custom success px-4 py-2 d-flex align-items-center justify-content-center">
  157. <i class="fas fa-wallet mr-2"></i>
  158. Added to portfolio
  159. </button>
  160. @endif
  161. @if((!in_array($idea->id, $portfolio->pluck('id')->toArray())) && (!in_array($idea->id, $wishlist->pluck('id')->toArray())))
  162. <form action="{{ route('client.add-to-portfolio', ['id' => $idea->id]) }}" method="POST">
  163. @csrf
  164. <button type="submit" class="btn btn-custom px-4 py-2 d-flex align-items-center justify-content-center">
  165. <i class="fas fa-plus-circle mr-2"></i>
  166. Add to portfolio
  167. </button>
  168. </form>
  169. <form action="{{ route('client.add-to-wishlist', ['id' => $idea->id]) }}" method="POST">
  170. @csrf
  171. <button type="submit" class="btn btn-danger-custom px-4 py-2 d-flex align-items-center justify-content-center ml-2">
  172. <i class="fas fa-bookmark mr-2"></i>
  173. Add to wishlist
  174. </button>
  175. </form>
  176. @endif
  177. </div>
  178. </div>
  179. <div class="pt-4">
  180. <div class="row">
  181. <div class="col-lg-5">
  182. <img
  183. src="https://images.unsplash.com/photo-1512314889357-e157c22f938d?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2071&q=80"
  184. class="w-100" style="border-radius: 8px;" alt="{{ $idea->title }}">
  185. </div>
  186. </div>
  187. </div>
  188. <div class="switcher mt-4">
  189. <ul class="nav nav-tabs" id="myTab" role="tablist">
  190. <li class="nav-item">
  191. <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home"
  192. aria-selected="true">Idea detail</a>
  193. </li>
  194. <li class="nav-item">
  195. <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile"
  196. aria-selected="false">Description</a>
  197. </li>
  198. </ul>
  199. <div class="tab-content" id="myTabContent">
  200. <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
  201. <div class="row mt-3 ml-2">
  202. <div class="col-lg-3">
  203. <div class="idea-details-text mb-4">
  204. <p>Category</p>
  205. @foreach($idea->categories as $category)
  206. <span style="font-weight: bold;">{{ $category->title }}</span>,
  207. @endforeach
  208. </div>
  209.  
  210. </div>
  211. <div class="col-lg-3">
  212. <div class="idea-details-text mb-4">
  213. <p>Author</p>
  214. <span style="font-weight: bold;">{{ $idea->user->name }}</span>
  215. </div>
  216.  
  217. </div>
  218. <div class="col-lg-3">
  219. <div class="idea-details-text mb-4">
  220. <p>Risk rating</p>
  221. <span style="font-weight: bold;">{{ $idea->risk_rating }}</span>
  222. </div>
  223. </div>
  224. <div class="col-lg-3">
  225. <div class="idea-details-text mb-4">
  226. <p>Instrument</p>
  227. <span class="text-capitalize" style="font-weight: bold;">{{ $idea->instruments }}</span>
  228. </div>
  229. </div>
  230. <div class="col-lg-3">
  231. <div class="idea-details-text mb-4">
  232. <p>Regions</p>
  233. @foreach($idea->regions as $region)
  234. <span class="text-capitalize" style="font-weight: bold;">{{ $region->name }}</span>,
  235. @endforeach
  236. </div>
  237. </div>
  238. <div class="col-lg-3">
  239. <div class="idea-details-text mb-4">
  240. <p>Countries</p>
  241. @foreach($idea->countries as $country)
  242. <span class="text-capitalize" style="font-weight: bold;">{{ $country->name }}</span>,
  243. @endforeach
  244. </div>
  245. </div>
  246. <div class="col-lg-3">
  247. <div class="idea-details-text mb-4">
  248. <p>Publication date</p>
  249. <span style="font-weight: bold;">{{ date('d/m/Y', strtotime($idea->published_date)) }}</span>
  250. </div>
  251. </div>
  252. <div class="col-lg-3">
  253. <div class="idea-details-text mb-4">
  254. <p>Expiry Date</p>
  255. <span style="font-weight: bold;">{{ date('d/m/Y', strtotime($idea->expiry_date)) }}</span>
  256. </div>
  257. </div>
  258. <div class="col-lg-3">
  259. <div class="idea-details-text mb-4">
  260. <p>Currency</p>
  261. @foreach($idea->currencies as $currency)
  262. <span class="text-uppercase" style="font-weight: bold;">{{ $currency->name }}</span>,
  263. @endforeach
  264. </div>
  265.  
  266. </div>
  267. <div class="col-lg-3">
  268. <div class="idea-details-text mb-4">
  269. <p>Major Sectors</p>
  270. @foreach($idea->majorsectors as $sector)
  271. <span class="text-capitalize" style="font-weight: bold;">{{ $sector->name }}</span>,
  272. @endforeach
  273. </div>
  274.  
  275. </div>
  276. <div class="col-lg-3">
  277. <div class="idea-details-text mb-4">
  278. <p>Minor Sector</p>
  279. @foreach($idea->minorsectors as $sector)
  280. <span class="text-capitalize" style="font-weight: bold;">{{ $sector->name }}</span>,
  281. @endforeach
  282. </div>
  283. </div>
  284. </div>
  285. </div>
  286. <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
  287. <div class="idea-details-text mt-4 ml-4">
  288. <p style="font-weight: bold;">Abstract</p>
  289. <p>{{ $idea->abstract }}</p>
  290. </div>
  291. <div class="idea-details-text mt-4 ml-4">
  292. <p style="font-weight: bold;">Idea Description</p>
  293. <p>{{ $idea->abstract }}</p>
  294. </div>
  295. </div>
  296. </div>
  297. </div>
  298. </div>
  299. </section>
  300.  
  301.  
  302. navigation blade
  303.  
  304. <li class="d-flex align-items-center {{ request()->routeIs('client.portfolio') ? 'active' : '' }}">
  305. <a class="d-block" href="{{ route('client.portfolio') }}">
  306. <i class="fas fa-chart-bar"></i>
  307. <span>Portfolio</span>
  308. </a>
  309. </li>
  310. <li class="d-flex align-items-center {{ request()->routeIs('client.wishlist') ? 'active' : '' }}">
  311. <a class="d-block" href="{{ route('client.wishlist') }}">
  312. <i class="fas fa-bookmark"></i>
  313. <span>Wishlist</span>
  314. </a>
  315. </li>
  316.  
  317. web
  318.  
  319. Route::post('/add-to-portfolio/{id}', [ClientController::class, 'add_to_portfolio'])->name('add-to-portfolio');
  320. Route::get('/portfolio', [ClientController::class, 'portfolio'])->name('portfolio');
  321. Route::post('/add-to-wishlist/{id}', [ClientController::class, 'add_to_wishlist'])->name('add-to-wishlist');
  322. Route::get('/wishlist', [ClientController::class, 'wishlist'])->name('wishlist');
  323.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement