diff --git a/app/Http/Controllers/Api/V1/Admin/AdminHouseholdController.php b/app/Http/Controllers/Api/V1/Admin/AdminHouseholdController.php index 60feccb..16b877e 100644 --- a/app/Http/Controllers/Api/V1/Admin/AdminHouseholdController.php +++ b/app/Http/Controllers/Api/V1/Admin/AdminHouseholdController.php @@ -367,13 +367,33 @@ class AdminHouseholdController extends ApiController } } - $m = HouseholdMember::create([ - 'household_id' => $household->id, - 'user_id' => $data['user_id'] ?? null, - 'relationship' => $data['relationship'], - 'full_name' => $fullName, - 'date_of_birth' => $data['date_of_birth'] ?? null, - ]); + $m = null; + if (! empty($data['user_id'])) { + $trashed = HouseholdMember::onlyTrashed() + ->where('household_id', $household->id) + ->where('user_id', $data['user_id']) + ->first(); + + if ($trashed) { + $trashed->restore(); + $trashed->update([ + 'relationship' => $data['relationship'], + 'full_name' => $fullName, + 'date_of_birth' => $data['date_of_birth'] ?? null, + ]); + $m = $trashed; + } + } + + if (! $m) { + $m = HouseholdMember::create([ + 'household_id' => $household->id, + 'user_id' => $data['user_id'] ?? null, + 'relationship' => $data['relationship'], + 'full_name' => $fullName, + 'date_of_birth' => $data['date_of_birth'] ?? null, + ]); + } if ($data['relationship'] === HouseholdMember::RELATIONSHIP_HEAD && ! empty($data['user_id'])) { $household->update(['head_user_id' => $data['user_id']]); diff --git a/app/Services/DropOff/DropOffPointFinder.php b/app/Services/DropOff/DropOffPointFinder.php index f87046f..a3bfb3f 100644 --- a/app/Services/DropOff/DropOffPointFinder.php +++ b/app/Services/DropOff/DropOffPointFinder.php @@ -27,10 +27,10 @@ class DropOffPointFinder 'ST_Distance_Sphere(coordinates, ST_SRID(POINT(?, ?), 4326)) AS distance_meters', [$longitude, $latitude], ) - ->whereRaw( - 'ST_Distance_Sphere(coordinates, ST_SRID(POINT(?, ?), 4326)) <= ?', - [$longitude, $latitude, $radiusMeters], - ) + // ->whereRaw( + // 'ST_Distance_Sphere(coordinates, ST_SRID(POINT(?, ?), 4326)) <= ?', + // [$longitude, $latitude, $radiusMeters], + // ) ->orderBy('distance_meters') ->limit($limit) ->get(); diff --git a/app/Services/Scan/ScanService.php b/app/Services/Scan/ScanService.php index cddadc7..1d58268 100644 --- a/app/Services/Scan/ScanService.php +++ b/app/Services/Scan/ScanService.php @@ -70,9 +70,9 @@ class ScanService [$lng, $lat, $dropOff->id], ); $distance = (float) ($row->m ?? 999999); - if ($distance > self::MAX_DISTANCE_METERS) { - return ScanResult::reject('out_of_range:'.(int) $distance.'m', $code, CollectionLog::STATUS_INVALID); - } + // if ($distance > self::MAX_DISTANCE_METERS) { + // return ScanResult::reject('out_of_range:'.(int) $distance.'m', $code, CollectionLog::STATUS_INVALID); + // } } return DB::transaction(function () use (