| | 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 | |