| 211 | 3. Се вметнуваат: |
| 212 | * TravelPackage |
| 213 | * TravelActivity за секоја активност |
| 214 | * activity_reservation за секоја активност |
| 215 | * Reservation за целиот пакет |
| 216 | * Се намалува amount за секоја активност |
| 217 | {{{ |
| 218 | DB::transaction(function () use ($request) { |
| 219 | $packageData = $request->validate([ |
| 220 | 'package_name' => 'required|string|max:255', |
| 221 | 'price' => 'required|numeric', |
| 222 | 'start_date' => 'required|date', |
| 223 | 'end_date' => 'required|date|after_or_equal:start_date', |
| 224 | 'id_destination' => 'required|integer|exists:destination,id_destination' |
| 225 | ]); |
| 226 | |
| 227 | $package = TravelPackage::create($packageData); |
| 228 | |
| 229 | foreach ($request->activities as $activityData) { |
| 230 | $validatedActivity = validator($activityData, [ |
| 231 | 'activity_name' => 'required|string|max:255', |
| 232 | 'information' => 'nullable|string|max:255', |
| 233 | 'category' => 'required|string|max:255', |
| 234 | 'amount' => 'nullable|numeric', |
| 235 | 'id_destination' => 'required|integer|exists:destination,id_destination' |
| 236 | ])->validate(); |
| 237 | |
| 238 | $activity = TravelActivity::create($validatedActivity); |
| 239 | |
| 240 | DB::table('activity_reservation')->insert([ |
| 241 | 'id_user' => auth()->id(), |
| 242 | 'id_activity' => $activity->id_activity, |
| 243 | 'reservation_date' => now() |
| 244 | ]); |
| 245 | |
| 246 | DB::table('activity')->where('id_activity', $activity->id_activity)->decrement('amount', 1); |
| 247 | |
| 248 | DB::table('package_activity')->insert([ |
| 249 | 'id_package' => $package->id_package, |
| 250 | 'id_activity' => $activity->id_activity |
| 251 | ]); |
| 252 | } |
| 253 | |
| 254 | Reservation::create([ |
| 255 | 'id_user' => auth()->id(), |
| 256 | 'id_package' => $package->id_package, |
| 257 | 'time_point' => now() |
| 258 | ]); |
| 259 | }); |
| 260 | }}} |
| 261 | |