$date, 'countryCode' => $countryCode, ], [ 'date' => ['required', new DateYMD()], 'countryCode' => ['required', 'string', 'min:2', 'max:2', new CountryCodeExists()], ] ); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 400); } try { $workingDayDeterminer = $this->workingDayDeterminerFactory->createForCountry($countryCode); } catch (\InvalidArgumentException $e) { return response()->json(['errors' => ['countryCode' => $e->getMessage()]], 400); } $date = \DateTimeImmutable::createFromFormat("Y-m-d", $date); if ($date === false) { return response()->json(['errors' => ['date' => ['validation.dateymdhis']]], 400); } return response()->json([ 'date' => $date->format('Y-m-d'), 'isWorkingDay' => $workingDayDeterminer->isWorkingDay($date) ]); } }