master
parent
e0f426ce54
commit
772af756b5
|
|
@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
|||
use A7kz\Platform\Models\UniModel;
|
||||
use A7kz\Platform\Modules\Platform\Acl\Facades\Acl;
|
||||
use A7kz\Platform\Modules\Platform\Segment\Facades\Segment;
|
||||
use App\Models\User;
|
||||
use App\Modules\applications\Enum\ApplicationStatus;
|
||||
use App\Modules\auto\Enums\AutoStatusEnums;
|
||||
use App\Service\DepositService;
|
||||
|
|
@ -63,85 +64,86 @@ class MobileApiController extends Controller
|
|||
* @throws Exception
|
||||
*/
|
||||
public function sendApplication(Request $request): JsonResponse {
|
||||
$data = $request->all();
|
||||
$data['started_at'] = Carbon::createFromFormat('d-m-Y H:i', $data['started_at']);
|
||||
$data['ended_at'] = Carbon::createFromFormat('d-m-Y H:i', $data['ended_at']);
|
||||
$authToken = null;
|
||||
$data['car_id'] = null;
|
||||
if ($request->header('Authorization')) {
|
||||
$user = auth()->guard('api')->user();
|
||||
$data['user_id'] = $user?->id;
|
||||
$authToken = $request->header('Authorization');
|
||||
} else {
|
||||
$user = UniModel::model('core_users')
|
||||
->where('email', $data['email'])
|
||||
->first();
|
||||
|
||||
if ($user) {
|
||||
$data['user_id'] = $user->id;
|
||||
$tokenResult = $user->createToken('auth_token');
|
||||
$authToken = $tokenResult->accessToken;
|
||||
try {
|
||||
$data = $request->all();
|
||||
$data['started_at'] = Carbon::createFromFormat('d-m-Y H:i', $data['started_at']);
|
||||
$data['ended_at'] = Carbon::createFromFormat('d-m-Y H:i', $data['ended_at']);
|
||||
$authToken = null;
|
||||
$data['car_id'] = null;
|
||||
if ($request->header('Authorization')) {
|
||||
$user = auth()->guard('api')->user();
|
||||
$data['user_id'] = $user?->id;
|
||||
$authToken = $request->header('Authorization');
|
||||
} else {
|
||||
$data['user_id'] = null;
|
||||
$user = User::where('email', $data['email'])->first();
|
||||
|
||||
if ($user) {
|
||||
$data['user_id'] = $user->id;
|
||||
$tokenResult = $user->createToken('auth_token');
|
||||
$authToken = $tokenResult->plainTextToken;
|
||||
} else {
|
||||
$data['user_id'] = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
$response = [
|
||||
'status' => 'OK',
|
||||
'message' => 'Заявка создана',
|
||||
];
|
||||
|
||||
$response = [
|
||||
'status' => 'OK',
|
||||
'message' => 'Заявка создана',
|
||||
];
|
||||
|
||||
$car = $this->getAvailableCar($data['started_at'], $data['ended_at'], $data['mark_id'], $data['color_code']);
|
||||
$status = ApplicationStatus::pending->value;
|
||||
if (!isset($car)) {
|
||||
return response()->json('Нет свободных машин');
|
||||
}
|
||||
$data['car_id'] = $car->id;
|
||||
if ($data['user_id']) {
|
||||
$period = CarbonPeriod::create($data['started_at'], $data['ended_at']);
|
||||
|
||||
$dates = array_map(fn($date) => $date->toDateString(), iterator_to_array($period));
|
||||
|
||||
foreach ($dates as $date) {
|
||||
UniModel::model('pipi_auto_calendar')->create([
|
||||
'auto_id' => $data['car_id'],
|
||||
'date' => $date,
|
||||
'status' => AutoStatusEnums::Rent->name
|
||||
]);
|
||||
$car = $this->getAvailableCar($data['started_at'], $data['ended_at'], $data['mark_id'], $data['color_code']);
|
||||
$status = ApplicationStatus::pending->value;
|
||||
if (!isset($car)) {
|
||||
return response()->json('Нет свободных машин');
|
||||
}
|
||||
$status = ApplicationStatus::approved->value;
|
||||
$response['auth_token'] = $authToken;
|
||||
$response['message'] = 'Заявка создана, и вы были автоматически авторизованы';
|
||||
} elseif (!isset($data['user_id'])) {
|
||||
$response['message'] = 'Заявка создана, с вами свяжется наш оператор';
|
||||
}
|
||||
$address_end = UniModel::model('pipi_address')->where('name', $data['address_end'])->first();
|
||||
$address_start = UniModel::model('pipi_address')->where('name', $data['address_start'])->first();
|
||||
$service = new DepositService;
|
||||
$sums = $service->calculateSummary($data['mark_id'], $data['started_at'], $data['ended_at']);
|
||||
$sum = $sums['discounted_sum'];
|
||||
if ($data['deposit'] != $sums['deposit_base']) {
|
||||
$sum += $data['deposit'];
|
||||
}
|
||||
UniModel::model('pipi_applications')->create([
|
||||
'rent_day' => $data['rent_day'],
|
||||
'started_at' => $data['started_at'],
|
||||
'ended_at' => $data['ended_at'],
|
||||
'user_id' => $data['user_id'],
|
||||
'phone' => $user?->phone ?? $data['phone'] ?? '' ,
|
||||
'car_id' => $data['car_id'],
|
||||
'user_name' => $user?->name ?? $data['name'] ?? null,
|
||||
'user_surname' => $user?->name ?? $data['surname'] ?? null,
|
||||
'user_email' => $user?->email ?? $data['email'] ?? null,
|
||||
'address_end' => $address_end?->id,
|
||||
'address_start' => $address_start?->id,
|
||||
'deposit' => $data['deposit'] ?? null,
|
||||
'status' => $status,
|
||||
'sum' => $sum
|
||||
]);
|
||||
$data['car_id'] = $car->id;
|
||||
if ($data['user_id']) {
|
||||
$period = CarbonPeriod::create($data['started_at'], $data['ended_at']);
|
||||
|
||||
return response()->json($response);
|
||||
$dates = array_map(fn($date) => $date->toDateString(), iterator_to_array($period));
|
||||
|
||||
foreach ($dates as $date) {
|
||||
UniModel::model('pipi_auto_calendar')->create([
|
||||
'auto_id' => $data['car_id'],
|
||||
'date' => $date,
|
||||
'status' => AutoStatusEnums::Rent->name
|
||||
]);
|
||||
}
|
||||
$status = ApplicationStatus::approved->value;
|
||||
$response['auth_token'] = $authToken;
|
||||
$response['message'] = 'Заявка создана, и вы были автоматически авторизованы';
|
||||
} elseif (!isset($data['user_id'])) {
|
||||
$response['message'] = 'Заявка создана, с вами свяжется наш оператор';
|
||||
}
|
||||
$address_end = UniModel::model('pipi_address')->where('name', $data['address_end'])->first();
|
||||
$address_start = UniModel::model('pipi_address')->where('name', $data['address_start'])->first();
|
||||
$service = new DepositService;
|
||||
$sums = $service->calculateSummary($data['mark_id'], $data['started_at'], $data['ended_at']);
|
||||
$sum = $sums['discounted_sum'];
|
||||
if ($data['deposit'] != $sums['deposit_base']) {
|
||||
$sum += $data['deposit'];
|
||||
}
|
||||
UniModel::model('pipi_applications')->create([
|
||||
'rent_day' => $data['rent_day'],
|
||||
'started_at' => $data['started_at'],
|
||||
'ended_at' => $data['ended_at'],
|
||||
'user_id' => $data['user_id'],
|
||||
'phone' => $user?->phone ?? $data['phone'] ?? '' ,
|
||||
'car_id' => $data['car_id'],
|
||||
'user_name' => $user?->name ?? $data['name'] ?? null,
|
||||
'user_surname' => $user?->name ?? $data['surname'] ?? null,
|
||||
'user_email' => $user?->email ?? $data['email'] ?? null,
|
||||
'address_end' => $address_end?->id,
|
||||
'address_start' => $address_start?->id,
|
||||
'deposit' => $data['deposit'] ?? null,
|
||||
'status' => $status,
|
||||
'sum' => $sum
|
||||
]);
|
||||
|
||||
return response()->json($response);
|
||||
} catch (Exception $e) {
|
||||
return response()->json($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function getApplications(): JsonResponse
|
||||
|
|
|
|||
Loading…
Reference in New Issue