1001 lines
47 KiB
PHP
1001 lines
47 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers\Api;
|
||
|
||
use App\Http\Controllers\Controller;
|
||
use App\Models\City;
|
||
use App\Models\Contracts;
|
||
use App\Models\ContractSubItems;
|
||
use App\Models\ContractSubItemsHistory;
|
||
use App\Models\Province;
|
||
use App\Models\RoadDangerPrevention;
|
||
use App\Models\RoadMaintenanceProject;
|
||
use App\Models\RoadTechnicalBuilding;
|
||
use App\Models\RoadTollhouseManagement;
|
||
use App\Models\RoadUpgradeSafety;
|
||
use Illuminate\Http\Request;
|
||
use Hekmatinasser\Verta\Verta;
|
||
use Illuminate\Support\Facades\DB;
|
||
use SoapClient;
|
||
use Illuminate\Support\Facades\Auth;
|
||
use Carbon\Carbon;
|
||
use App\Facades\Sms\Sms;
|
||
use App\Services\NominatimService;
|
||
use Illuminate\Support\Str;
|
||
|
||
class ContractSubItemsController extends Controller
|
||
{
|
||
public function getMaintenanceProject($id)
|
||
{
|
||
$roadProject = RoadMaintenanceProject::find($id);
|
||
$roadProjectHistories = $roadProject->projectHistories;
|
||
|
||
$roadProjectHistoriesFiles = [];
|
||
$imagesIndex = 0;
|
||
|
||
foreach ($roadProjectHistories as $key => $roadProjectHistory) {
|
||
foreach ($roadProjectHistory->files as $keyPath => $file) {
|
||
$roadProjectHistoriesFiles[$imagesIndex] = asset('storage' . substr($file->path, 6));
|
||
$imagesIndex++;
|
||
}
|
||
}
|
||
|
||
$cities = [];
|
||
$citiesIndex = 0;
|
||
|
||
foreach ($roadProject->cities_id as $cityKey => $value) {
|
||
$getCity = \App\Models\City::find($cityKey);
|
||
|
||
$cities[$citiesIndex] = [
|
||
'id' => $getCity->id,
|
||
'name' => $getCity->name_fa,
|
||
'value' => $value
|
||
];
|
||
|
||
$citiesIndex++;
|
||
}
|
||
|
||
$roadProjectArray = [
|
||
'id' => $roadProject->id,
|
||
'province' => [
|
||
'id' => ($roadProject->province) ? $roadProject->province->id : null,
|
||
'name' => ($roadProject->province) ? $roadProject->province->name_fa : '-',
|
||
'lat_lng' => [
|
||
$roadProject->province->center_lat,
|
||
$roadProject->province->center_long
|
||
]
|
||
],
|
||
'cities' => $cities,
|
||
'axis_name' => ($roadProject->axis_name) ? $roadProject->axis_name : '-',
|
||
'axis_type' => ($roadProject->axis_type) ?: 0,
|
||
'project_name' => ($roadProject->project_name) ? $roadProject->project_name : '-',
|
||
'contractor_name' => ($roadProject->contractor_name) ? $roadProject->contractor_name : '-',
|
||
'consultant_name' => ($roadProject->consultant_name) ? $roadProject->consultant_name : '-',
|
||
'contract_date' => ($roadProject->contract_date) ? $roadProject->contract_date : '-',
|
||
'contract_credit' => ($roadProject->contract_credit) ? $roadProject->contract_credit : '-',
|
||
'submited_at' => ($roadProject->submited_at) ?
|
||
verta($roadProject->submited_at)->format('Y/n/j - H:i') : '-',
|
||
'last_updated_at' => ($roadProject->last_updated_at) ?
|
||
verta($roadProject->last_updated_at)->format('Y/n/j - H:i') : '-',
|
||
'start_latlng' => $roadProject->start_latlng,
|
||
'end_latlng' => $roadProject->end_latlng,
|
||
'project_distance' => $roadProject->project_distance,
|
||
'project_distance_update' => $roadProject->project_distance_update,
|
||
'physical_progress' => $roadProject->physical_progress,
|
||
'images' => $roadProjectHistoriesFiles,
|
||
'project_status' => $roadProject->project_status
|
||
];
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => [
|
||
$roadProjectArray
|
||
]
|
||
], 200);
|
||
}
|
||
|
||
public function ContractSubItemsList()
|
||
{
|
||
return response()->json([
|
||
'message' => 'success',
|
||
'data' => ContractSubItems::all()
|
||
]);
|
||
}
|
||
|
||
public function storeForDevelop(Request $request, NominatimService $nominatimService)
|
||
{
|
||
|
||
if ($request->has('operation_type_id1') && $request->operation_type_progress1 == null) {
|
||
return response()->json(['message' => 'Operation type progress1 is NULL'], 400);
|
||
}
|
||
|
||
if ($request->has('operation_type_id2') && $request->operation_type_progress2 == null) {
|
||
return response()->json(['message' => 'Operation type progress2 is NULL'], 400);
|
||
}
|
||
|
||
if ($request->has('operation_type_id3') && $request->operation_type_progress3 == null) {
|
||
return response()->json(['message' => 'Operation type progress3 is NULL'], 400);
|
||
}
|
||
|
||
if ($request->has('operation_type_id4') && $request->operation_type_progress4 == null) {
|
||
return response()->json(['message' => 'Operation type progress4 is NULL'], 400);
|
||
}
|
||
|
||
DB::beginTransaction();
|
||
|
||
try {
|
||
$data = $this->getOperationType($request, $request->project_type_id);
|
||
|
||
if ($request->operation_type_id1) {
|
||
$operation1 = $data[$request->operation_type_id1];
|
||
}
|
||
if ($request->operation_type_id2) {
|
||
$operation2 = $data[$request->operation_type_id2];
|
||
}
|
||
if ($request->operation_type_id3) {
|
||
$operation3 = $data[$request->operation_type_id3];
|
||
}
|
||
|
||
|
||
$contract = Contracts::where('id', $request->contract_id)->first();
|
||
$parent_contract_date = explode('-', $contract->contract_date);
|
||
// dd(Verta::jalaliToGregorian($parent_contract_date[0], $parent_contract_date[1], $parent_contract_date[2]));
|
||
$parent_contract_date = Verta::jalaliToGregorian($parent_contract_date[0], $parent_contract_date[1], $parent_contract_date[2]);
|
||
|
||
$city_fa = City::where('id', $request->city_id)->first();
|
||
$province_fa = Province::where('id', $request->province_id)->first();
|
||
|
||
|
||
/// switches
|
||
$progress_project = ContractSubItems::checkProgressProjectCondition($request->last_status_id, $request->progress_project);
|
||
|
||
$contractSubItem = new ContractSubItems();
|
||
$contractSubItem->project_title = $request->project_title;
|
||
$contractSubItem->project_type_id = $request->project_type_id;
|
||
$contractSubItem->setProjectTypeFa($request->project_type_id);
|
||
$contractSubItem->operation_type_id1 = $request->operation_type_id1 ?? null;
|
||
$contractSubItem->operation_type_fa1 = $operation1['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit1 = $operation1['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount1 = $request->operation_type_amount1 ?? null;
|
||
$contractSubItem->operation_type_progress1 = $request->operation_type_progress1;
|
||
$contractSubItem->operation_type_tonaj1 = $request->operation_type_tonaj1 ?? null;
|
||
$contractSubItem->operation_type_id2 = $request->operation_type_id2 ?? null;
|
||
$contractSubItem->operation_type_fa2 = $operation2['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit2 = $operation2['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount2 = $request->operation_type_amount2 ?? null;
|
||
$contractSubItem->operation_type_progress2 = $request->operation_type_progress2;
|
||
$contractSubItem->operation_type_tonaj2 = $request->operation_type_tonaj2 ?? null;
|
||
$contractSubItem->operation_type_id3 = $request->operation_type_id3 ?? null;
|
||
$contractSubItem->operation_type_fa3 = $operation3['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit3 = $operation3['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount3 = $request->operation_type_amount3 ?? null;
|
||
$contractSubItem->operation_type_progress3 = $request->operation_type_progress3;
|
||
$contractSubItem->operation_type_tonaj3 = $request->operation_type_tonaj3 ?? null;
|
||
$contractSubItem->operation_type_id4 = $request->operation_type_id4 ?? null;
|
||
$contractSubItem->operation_type_fa4 = $operation4['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit4 = $operation4['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount4 = $request->operation_type_amount4 ?? null;
|
||
$contractSubItem->operation_type_progress4 = $request->operation_type_progress4;
|
||
$contractSubItem->operation_type_tonaj4 = $request->operation_type_tonaj4 ?? null;
|
||
$contractSubItem->city_id = $request->city_id;
|
||
$contractSubItem->city_fa = $city_fa->name_fa;
|
||
$contractSubItem->province_id = $request->province_id;
|
||
$contractSubItem->province_fa = $province_fa->name_fa;
|
||
$contractSubItem->axis_type_id = $request->axis_type_id;
|
||
$contractSubItem->setAxisTypeFa($request->axis_type_id);
|
||
$contractSubItem->axis_name_fa = $request->axis_name_fa;
|
||
$contractSubItem->start_lat = $request->start_lat;
|
||
$contractSubItem->end_lat = $request->end_lat;
|
||
$contractSubItem->start_lng = $request->start_lng;
|
||
$contractSubItem->end_lng = $request->end_lng;
|
||
$contractSubItem->followup_priority_project_id = $request->followup_priority_project_id;
|
||
$contractSubItem->setFollowupPriorityProjectFa($request->followup_priority_project_id);
|
||
$contractSubItem->priority_project = $request->priority_project;
|
||
$contractSubItem->setPriorityProjectFa($request->priority_project);
|
||
$contractSubItem->operator_name = $request->operator_name;
|
||
$contractSubItem->operator_phone = $request->operator_phone;
|
||
$contractSubItem->progress_project = $progress_project;
|
||
$contractSubItem->last_status_id = $request->last_status_id;
|
||
$contractSubItem->setLastStatusFa($request->last_status_id);
|
||
$contractSubItem->last_digit_project = $request->last_digit_project;
|
||
$contractSubItem->last_function_operator = $request->last_function_operator;
|
||
$contractSubItem->last_payable_operator = $request->last_payable_operator;
|
||
$contractSubItem->complete_payable = $request->complete_payable;
|
||
$contractSubItem->contract_id = $request->contract_id;
|
||
$contractSubItem->contract_date_from_parent_contract = $parent_contract_date[0].'-'.$parent_contract_date[1].'-'.$parent_contract_date[2];
|
||
$contractSubItem->created_at_fa = Verta::instance(Verta::now());
|
||
$contractSubItem->updated_at_fa = Verta::instance(Verta::now());
|
||
$contractSubItem->start_way_id = $nominatimService->get_way_id_from_nominatim($request->start_lat, $request->start_lng);
|
||
$contractSubItem->end_way_id = $nominatimService->get_way_id_from_nominatim($request->end_lat, $request->end_lng);
|
||
$contractSubItem->user_id = Auth::user()->id;
|
||
$contractSubItem->contract_moshaver_tarahi = $contract->contract_moshaver_tarahi;
|
||
$contractSubItem->contract_moshaver_nezarat = $contract->contract_moshaver_nezarat;
|
||
$contractSubItem->last_date_update = Carbon::now();
|
||
|
||
$contractSubItem->required_bitumen = $request->required_bitumen ?? null;
|
||
$contractSubItem->used_bitumen = $request->used_bitumen ?? null;
|
||
|
||
$contractSubItem->bridge_number = $request->bridge_number ?? null;
|
||
|
||
$contractSubItem->save();
|
||
|
||
/// Generate Unique Code for this Contract Subitem
|
||
$contractSubItem->unique_code = $contract->unique_id . '/' . $contractSubItem->id;
|
||
$contractSubItem->save();
|
||
|
||
if ($request->addNewSubitemStatus == 'false') {
|
||
$projectQuery = ContractSubItems::getProjectQuery($request->project_type_id);
|
||
$roadProject = $projectQuery->find($request->projectData_id);
|
||
$roadProjectHistories = $roadProject->projectHistories;
|
||
$roadProjectHistoriesFiles = [];
|
||
$imagesIndex = 0;
|
||
foreach ($roadProjectHistories as $key => $roadProjectHistory) {
|
||
foreach ($roadProjectHistory->files as $keyPath => $file) {
|
||
$roadProjectHistoriesFiles[$imagesIndex] = asset('storage' . substr($file->path, 6));
|
||
$imagesIndex++;
|
||
}
|
||
}
|
||
$roadProjectHistoriesFiles;
|
||
$countRoadFiles = count($roadProjectHistoriesFiles);
|
||
}
|
||
|
||
$uuid = Str::uuid();
|
||
if ($request->has('image1')) {
|
||
$file1 = $request->file('image1');
|
||
$destinationPath1 = 'storage/contract_subitems/' . now()->year . '/' . now()->month . '/';
|
||
$filename1 = $uuid . '-one.' . $file1->getClientOriginalExtension();
|
||
$file1->move($destinationPath1, $filename1);
|
||
$contractSubItem->update(['image_path1' => $destinationPath1 . $filename1]);
|
||
} elseif (! $request->has('image1') && $request->addNewSubitemStatus == 'false') {
|
||
if ($countRoadFiles == 1) {
|
||
$countRoadFiles = 2;
|
||
}
|
||
|
||
$imageUrl = $roadProjectHistoriesFiles[$countRoadFiles - 2];
|
||
if (strpos($imageUrl, "https://rms.rmto.ir/") == 0) {
|
||
$imageUrl = str_replace("https://rms.rmto.ir/", "", $imageUrl);
|
||
}
|
||
|
||
$contractSubItem->update(['image_path1' => $imageUrl ?? null ]);
|
||
}
|
||
|
||
if ($request->has('image2')) {
|
||
$file2 = $request->file('image2');
|
||
$destinationPath2 = 'storage/contract_subitems/' . now()->year . '/' . now()->month . '/';
|
||
$filename2 = $uuid . '-two.' . $file2->getClientOriginalExtension();
|
||
$file2->move($destinationPath2, $filename2);
|
||
$contractSubItem->update(['image_path2' => $destinationPath2 . $filename2]);
|
||
} elseif (! $request->has('image2') && $request->addNewSubitemStatus == 'false') {
|
||
$contractSubItem->update(['image_path2' => $roadProjectHistoriesFiles[$countRoadFiles - 1] ?? null ]);
|
||
}
|
||
if ($request->addNewSubitemStatus == 'false') {
|
||
$projectQuery->find($request->projectData_id)->projectHistories()->delete();
|
||
$projectQuery->find($request->projectData_id)->delete();
|
||
}
|
||
|
||
$changeStatusRelInContracts = Contracts::find($request->contract_id);
|
||
$changeStatusRelInContracts->status_rel = 2;
|
||
$changeStatusRelInContracts->save();
|
||
DB::commit();
|
||
|
||
// send msg
|
||
$msg = "سلام،\n پروژه راهداری با کد یکتای {$contractSubItem->unique_code} با مسئولیت شما در سامانه جامع راهداری ثبت شده است. لطفا به روز رسانی دقیق و به موقع پیشرفت پروژه در سامانه اولویت قرار گیرد.\n rms.rmto.ir";
|
||
|
||
Sms::sendSms($contractSubItem->operator_phone, $msg);
|
||
|
||
// self::sms_sender($contractSubItem->operator_phone, $msg);
|
||
|
||
return response()->json([
|
||
'message' => 'success',
|
||
'data' => $contractSubItem
|
||
], 200);
|
||
} catch (\Exception $e) {
|
||
DB::rollback();
|
||
return response()->json([
|
||
'message' => $e->getMessage(),
|
||
], 400);
|
||
}
|
||
}
|
||
|
||
public function updateForDevelop(Request $request, $id, NominatimService $nominatimService)
|
||
{
|
||
if ($request->operation_type_id1 != 0 && $request->operation_type_progress1 == null) {
|
||
return response()->json(['message' => 'Operation type progress1 is NULL'], 400);
|
||
}
|
||
if ($request->operation_type_id2 != 0 && $request->operation_type_progress2 == null) {
|
||
return response()->json(['message' => 'Operation type progress2 is NULL'], 400);
|
||
}
|
||
if ($request->operation_type_id3 != 0 && $request->operation_type_progress3 == null) {
|
||
return response()->json(['message' => 'Operation type progress3 is NULL'], 400);
|
||
}
|
||
if ($request->operation_type_id4 != 0 && $request->operation_type_progress4 == null) {
|
||
return response()->json(['message' => 'Operation type progress4 is NULL'], 400);
|
||
}
|
||
|
||
$contractSubItem = ContractSubItems::find($id);
|
||
|
||
$history = ContractSubItemsHistory::create([
|
||
|
||
'project_title' => $contractSubItem->project_title,
|
||
'project_type_id' => $contractSubItem->project_type_id,
|
||
'project_type_fa' => $contractSubItem->project_type_fa,
|
||
|
||
'operation_type_id1' => $contractSubItem->operation_type_id1 ?? null,
|
||
'operation_type_fa1' => $contractSubItem->operation_type_fa1 ?? null,
|
||
'operation_type_unit1' => $contractSubItem->operation_type_unit1 ?? null,
|
||
'operation_type_amount1' => $contractSubItem->operation_type_amount1 ?? null,
|
||
'operation_type_progress1' => $contractSubItem->operation_type_progress1 ?? null,
|
||
'operation_type_tonaj1' => $contractSubItem->operation_type_tonaj1 ?? null,
|
||
|
||
'operation_type_id2' => $contractSubItem->operation_type_id2 ?? null,
|
||
'operation_type_fa2' => $contractSubItem->operation_type_fa2 ?? null,
|
||
'operation_type_unit2' => $contractSubItem->operation_type_unit2 ?? null,
|
||
'operation_type_amount2' => $contractSubItem->operation_type_amount2 ?? null,
|
||
'operation_type_progress2' => $contractSubItem->operation_type_progress2 ?? null,
|
||
'operation_type_tonaj2' => $contractSubItem->operation_type_tonaj2 ?? null,
|
||
|
||
'operation_type_id3' => $contractSubItem->operation_type_id3 ?? null,
|
||
'operation_type_fa3' => $contractSubItem->operation_type_fa3 ?? null,
|
||
'operation_type_unit3' => $contractSubItem->operation_type_unit3 ?? null,
|
||
'operation_type_amount3' => $contractSubItem->operation_type_amount3 ?? null,
|
||
'operation_type_progress3' => $contractSubItem->operation_type_progress3 ?? null,
|
||
'operation_type_tonaj3' => $contractSubItem->operation_type_tonaj3 ?? null,
|
||
|
||
'operation_type_id4' => $contractSubItem->operation_type_id4 ?? null,
|
||
'operation_type_fa4' => $contractSubItem->operation_type_fa4 ?? null,
|
||
'operation_type_unit4' => $contractSubItem->operation_type_unit4 ?? null,
|
||
'operation_type_amount4' => $contractSubItem->operation_type_amount4 ?? null,
|
||
'operation_type_progress4' => $contractSubItem->operation_type_progress4 ?? null,
|
||
'operation_type_tonaj4' => $contractSubItem->operation_type_tonaj4 ?? null,
|
||
|
||
'city_id' => $contractSubItem->city_id,
|
||
'city_fa' => $contractSubItem->city_fa,
|
||
'province_id' => $contractSubItem->province_id,
|
||
'province_fa' => $contractSubItem->province_fa,
|
||
'axis_type_id' => $contractSubItem->axis_type_id,
|
||
'axis_type_fa' => $contractSubItem->axis_type_fa,
|
||
'axis_name_fa' => $contractSubItem->axis_name_fa,
|
||
'start_lat' => $contractSubItem->start_lat,
|
||
'end_lat' => $contractSubItem->end_lat,
|
||
'start_lng' => $contractSubItem->start_lng,
|
||
'end_lng' => $contractSubItem->end_lng,
|
||
'followup_priority_project' => $contractSubItem->followup_priority_project,
|
||
'priority_project' => $contractSubItem->priority_project,
|
||
'operator_name' => $contractSubItem->operator_name,
|
||
'operator_phone' => $contractSubItem->operator_phone,
|
||
|
||
'progress_project' => $contractSubItem->progress_project,
|
||
'last_status_id' => $contractSubItem->last_status_id,
|
||
'last_status_fa' => $contractSubItem->last_status_fa,
|
||
'subitem_id' => $contractSubItem->id,
|
||
'operation_type_progress1' => $contractSubItem->operation_type_progress1,
|
||
'operation_type_progress2' => $contractSubItem->operation_type_progress2,
|
||
'operation_type_progress3' => $contractSubItem->operation_type_progress3,
|
||
'operation_type_progress4' => $contractSubItem->operation_type_progress4,
|
||
'last_digit_project' => $contractSubItem->last_digit_project,
|
||
'last_function_operator' => $contractSubItem->last_function_operator,
|
||
'last_payable_operator' => $contractSubItem->last_payable_operator,
|
||
'complete_payable' => $contractSubItem->complete_payable,
|
||
'image_path1' => $contractSubItem->image_path1,
|
||
'image_path2' => $contractSubItem->image_path2,
|
||
'unique_code' => $contractSubItem->unique_code,
|
||
'required_bitumen' => $contractSubItem->required_bitumen,
|
||
'used_bitumen' => $contractSubItem->used_bitumen,
|
||
'bridge_number' => $contractSubItem->bridge_number,
|
||
'is_corrected' => 1,
|
||
'updated_at_fa' => $contractSubItem->updated_at_fa,
|
||
'last_date_update' => $contractSubItem->last_date_update,
|
||
'created_at_fa' => Verta::instance(Verta::now()),
|
||
]);
|
||
|
||
$data = $this->getOperationType($request, $request->project_type_id);
|
||
|
||
if ($request->operation_type_id1) {
|
||
$operation1 = $data[$request->operation_type_id1];
|
||
}
|
||
if ($request->operation_type_id2) {
|
||
$operation2 = $data[$request->operation_type_id2];
|
||
}
|
||
if ($request->operation_type_id3) {
|
||
$operation3 = $data[$request->operation_type_id3];
|
||
}
|
||
if ($request->operation_type_id4) {
|
||
$operation4 = $data[$request->operation_type_id4];
|
||
}
|
||
|
||
$contract = Contracts::where('id', $request->contract_id)->first();
|
||
|
||
$city_fa = City::where('id', $request->city_id)->first();
|
||
$province_fa = Province::where('id', $request->province_id)->first();
|
||
$progress_project = ContractSubItems::checkProgressProjectCondition($request->last_status_id, $request->progress_project);
|
||
|
||
$contractSubItem->setProjectTypeFa($request->project_type_id);
|
||
$contractSubItem->setAxisTypeFa($request->axis_type_id);
|
||
$contractSubItem->setFollowupPriorityProjectFa($request->followup_priority_project_id);
|
||
$contractSubItem->setPriorityProjectFa($request->priority_project);
|
||
$contractSubItem->setLastStatusFa($request->last_status_id);
|
||
|
||
$contractSubItem->project_title = $request->project_title;
|
||
$contractSubItem->project_type_id = $request->project_type_id;
|
||
$contractSubItem->operation_type_id1 = $request->operation_type_id1 ?? null;
|
||
$contractSubItem->operation_type_fa1 = $operation1['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit1 = $operation1['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount1 = $request->operation_type_amount1 ?? null;
|
||
$contractSubItem->operation_type_progress1 = $request->operation_type_progress1 ?? null;
|
||
$contractSubItem->operation_type_tonaj1 = $request->operation_type_tonaj1 ?? null;
|
||
$contractSubItem->operation_type_id2 = $request->operation_type_id2 ?? null;
|
||
$contractSubItem->operation_type_fa2 = $operation2['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit2 = $operation2['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount2 = $request->operation_type_amount2 ?? null;
|
||
$contractSubItem->operation_type_progress2 = $request->operation_type_progress2 ?? null;
|
||
$contractSubItem->operation_type_tonaj2 = $request->operation_type_tonaj2 ?? null;
|
||
$contractSubItem->operation_type_id3 = $request->operation_type_id3 ?? null;
|
||
$contractSubItem->operation_type_fa3 = $operation3['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit3 = $operation3['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount3 = $request->operation_type_amount3 ?? null;
|
||
$contractSubItem->operation_type_progress3 = $request->operation_type_progress3 ?? null;
|
||
$contractSubItem->operation_type_tonaj3 = $request->operation_type_tonaj3 ?? null;
|
||
$contractSubItem->operation_type_id4 = $request->operation_type_id4 ?? null;
|
||
$contractSubItem->operation_type_fa4 = $operation4['farsi'] ?? null;
|
||
$contractSubItem->operation_type_unit4 = $operation4['unit'] ?? null;
|
||
$contractSubItem->operation_type_amount4 = $request->operation_type_amount4 ?? null;
|
||
$contractSubItem->operation_type_progress4 = $request->operation_type_progress4 ?? null;
|
||
$contractSubItem->operation_type_tonaj4 = $request->operation_type_tonaj4 ?? null;
|
||
|
||
$contractSubItem->operator_phone = $request->operator_phone;
|
||
$contractSubItem->operator_name = $request->operator_name;
|
||
|
||
$contractSubItem->city_id = $request->city_id;
|
||
$contractSubItem->city_fa = $city_fa->name_fa;
|
||
$contractSubItem->province_id = $request->province_id;
|
||
$contractSubItem->province_fa = $province_fa->name_fa;
|
||
$contractSubItem->axis_type_id = $request->axis_type_id;
|
||
$contractSubItem->axis_name_fa = $request->axis_name_fa;
|
||
$contractSubItem->start_lat = $request->start_lat;
|
||
$contractSubItem->end_lat = $request->end_lat;
|
||
$contractSubItem->start_lng = $request->start_lng;
|
||
$contractSubItem->end_lng = $request->end_lng;
|
||
$contractSubItem->followup_priority_project_id = $request->followup_priority_project_id;
|
||
$contractSubItem->priority_project = $request->priority_project;
|
||
$contractSubItem->progress_project = $progress_project;
|
||
$contractSubItem->last_status_id = $request->last_status_id;
|
||
$contractSubItem->last_digit_project = $request->last_digit_project;
|
||
$contractSubItem->last_function_operator = $request->last_function_operator;
|
||
$contractSubItem->last_payable_operator = $request->last_payable_operator;
|
||
$contractSubItem->complete_payable = $request->complete_payable;
|
||
$contractSubItem->start_way_id = $nominatimService->get_way_id_from_nominatim($request->start_lat, $request->start_lng);
|
||
$contractSubItem->end_way_id = $nominatimService->get_way_id_from_nominatim($request->end_lat, $request->end_lng);
|
||
$contractSubItem->updated_at_fa = Verta::instance(Verta::now());
|
||
$contractSubItem->user_id = Auth::user()->id;
|
||
$contractSubItem->last_date_update = Carbon::now();
|
||
|
||
$contractSubItem->required_bitumen = $request->required_bitumen ?? null;
|
||
$contractSubItem->used_bitumen = $request->used_bitumen ?? null;
|
||
$contractSubItem->bridge_number = $request->bridge_number ?? null;
|
||
|
||
$contractSubItem->save();
|
||
|
||
$uuid = Str::uuid();
|
||
if ($request->has('image1')) {
|
||
$file1 = $request->file('image1');
|
||
$destinationPath1 = 'storage/contract_subitems/' . now()->year . '/' . now()->month . '/';
|
||
$filename1 = $uuid . '-one.' . $file1->getClientOriginalExtension();
|
||
$file1->move($destinationPath1, $filename1);
|
||
$contractSubItem->update(['image_path1' => $destinationPath1 . $filename1]);
|
||
}
|
||
|
||
if ($request->has('image2')) {
|
||
$file2 = $request->file('image2');
|
||
$destinationPath2 = 'storage/contract_subitems/' . now()->year . '/' . now()->month . '/';
|
||
$filename2 = $uuid . '-two.' . $file2->getClientOriginalExtension();
|
||
$file2->move($destinationPath2, $filename2);
|
||
$contractSubItem->update(['image_path2' => $destinationPath2 . $filename2]);
|
||
}
|
||
|
||
return response()->json([
|
||
'message' => 'success',
|
||
'data' => $contractSubItem,
|
||
], 200);
|
||
}
|
||
|
||
public function delete(Request $request)
|
||
{
|
||
$csi = ContractSubItems::find($request->id);
|
||
$contract = $csi->Contracts;
|
||
if (! $csi) {
|
||
return response()->json([
|
||
'message' => '404 Not Found'
|
||
], 404);
|
||
}
|
||
|
||
ContractSubItemsHistory::where('subitem_id', $request->id)->delete();
|
||
$csi->delete();
|
||
if (count($contract->subitems) <= 0) {
|
||
$contract->status_rel = 1;
|
||
$contract->save();
|
||
}
|
||
return response()->json([
|
||
'message' => 'success'
|
||
], 200);
|
||
}
|
||
|
||
public function showHistory(Request $request, $id)
|
||
{
|
||
$history = ContractSubItemsHistory::where('subitem_id', $id)->get();
|
||
|
||
$data = [];
|
||
|
||
foreach ($history as $key => $value) {
|
||
$data[] = array(
|
||
'axis_name_fa' => $value->axis_name_fa,
|
||
'axis_type_fa' => $value->axis_type_fa,
|
||
'axis_type_id' => $value->axis_type_id,
|
||
'city_fa' => $value->city_fa,
|
||
'city_id' => $value->city_id,
|
||
'complete_payable' => $value->complete_payable,
|
||
'contract_date_from_parent_contract' => $value->contract_date_from_parent_contract,
|
||
'contract_id' => $value->contract_id,
|
||
'contract_moshaver_nezarat' => $value->contract_moshaver_nezarat,
|
||
'contract_moshaver_tarahi' => $value->contract_moshaver_tarahi,
|
||
'created_at' => $value->created_at,
|
||
'created_at_fa' => $value->created_at_fa,
|
||
'end_lat' => $value->end_lat,
|
||
'end_lng' => $value->end_lng,
|
||
'end_way_id' => $value->end_way_id,
|
||
'followup_priority_project' => $value->followup_priority_project,
|
||
'followup_priority_project_id' => $value->followup_priority_project_id,
|
||
'id' => $value->id,
|
||
'image_path1' => $value->image_path1,
|
||
'image_path2' => $value->image_path2,
|
||
'last_date_update' => $value->last_date_update,
|
||
'last_digit_project' => $value->last_digit_project,
|
||
'last_function_operator' => $value->last_function_operator,
|
||
'last_payable_operator' => $value->last_payable_operator,
|
||
'last_status_fa' => $value->last_status_fa,
|
||
'last_status_fa_for_chart' => $value->last_status_fa_for_chart,
|
||
'last_status_id' => $value->last_status_id,
|
||
'operation_type_amount1' => $value->operation_type_amount1,
|
||
'operation_type_amount2' => $value->operation_type_amount2,
|
||
'operation_type_amount3' => $value->operation_type_amount3,
|
||
'operation_type_amount4' => $value->operation_type_amount4,
|
||
'operation_type_fa1' => $value->operation_type_fa1,
|
||
'operation_type_fa2' => $value->operation_type_fa2,
|
||
'operation_type_fa3' => $value->operation_type_fa3,
|
||
'operation_type_fa4' => $value->operation_type_fa4,
|
||
'operation_type_id1' => $value->operation_type_id1,
|
||
'operation_type_id2' => $value->operation_type_id2,
|
||
'operation_type_id3' => $value->operation_type_id3,
|
||
'operation_type_id4' => $value->operation_type_id4,
|
||
'operation_type_progress1' => $value->operation_type_progress1,
|
||
'operation_type_progress2' => $value->operation_type_progress2,
|
||
'operation_type_progress3' => $value->operation_type_progress3,
|
||
'operation_type_progress4' => $value->operation_type_progress4,
|
||
'operation_type_tonaj1' => $value->operation_type_tonaj1,
|
||
'operation_type_tonaj2' => $value->operation_type_tonaj2,
|
||
'operation_type_tonaj3' => $value->operation_type_tonaj3,
|
||
'operation_type_tonaj4' => $value->operation_type_tonaj4,
|
||
'operation_type_unit1' => $value->operation_type_unit1,
|
||
'operation_type_unit2' => $value->operation_type_unit2,
|
||
'operation_type_unit3' => $value->operation_type_unit3,
|
||
'operation_type_unit4' => $value->operation_type_unit4,
|
||
'contract_number' => $value->contract_number,
|
||
'operator_name' => $value->operator_name,
|
||
'operator_phone' => $value->operator_phone,
|
||
'priority_project' => $value->priority_project,
|
||
'priority_project_fa' => $value->priority_project_fa,
|
||
'progress_project' => $value->progress_project,
|
||
'project_title' => $value->project_title,
|
||
'project_type_fa' => $value->project_type_fa,
|
||
'project_type_fa_for_chart' => $value->project_type_fa_for_chart,
|
||
'project_type_id' => $value->project_type_id,
|
||
'province_fa' => $value->province_fa,
|
||
'province_id' => $value->province_id,
|
||
'start_lat' => $value->start_lat,
|
||
'start_lng' => $value->start_lng,
|
||
'start_way_id' => $value->start_way_id,
|
||
'unique_code' => $value->unique_code,
|
||
'required_bitumen' => $value->required_bitumen,
|
||
'used_bitumen' => $value->used_bitumen,
|
||
'bridge_number' => $value->bridge_number,
|
||
'updated_at' => $value->updated_at,
|
||
'updated_at_fa' => $value->updated_at_fa,
|
||
'user_id' => $value->user_id,
|
||
);
|
||
}
|
||
return response()->json([
|
||
'message' => 'success',
|
||
'data' => $data
|
||
]);
|
||
}
|
||
|
||
// public function sms_sender($mobile, $msg)
|
||
// {
|
||
// $client=new SoapClient("http://sms1000.ir/webservice/smspro.asmx?WSDL");
|
||
// $result=$client->doSendSMS(
|
||
// array(
|
||
// 'uUsername' => 'rmto',
|
||
// 'uPassword' => 'Rahdari8
|
||
// ',
|
||
// 'uNumber' => '1000141',
|
||
// 'uCellphones' => $mobile,
|
||
// 'uMessage' => $msg,
|
||
// 'uFarsi' => true,
|
||
// 'uTopic' => false,
|
||
// 'uFlash' => false
|
||
// )
|
||
// );
|
||
// $x = $result->doSendSMSResult;
|
||
// return $x;
|
||
// }
|
||
|
||
public function get_way_id_from_nominatim($lat, $lng)
|
||
{
|
||
$url = "https://testmap.141.ir/nominatim/reverse?format=jsonv2&lat=".$lat."&lon=".$lng."&zoom=16&addressdetails=16";
|
||
$arrContextOptions=array(
|
||
"ssl"=>array(
|
||
"verify_peer"=>false,
|
||
"verify_peer_name"=>false,
|
||
),
|
||
);
|
||
|
||
$result = file_get_contents($url, false, stream_context_create($arrContextOptions));
|
||
$result = json_decode($result);
|
||
if (isset($result->osm_type)) {
|
||
if ($result->osm_type == 'way') {
|
||
return $result->osm_id;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
public function getAllOperationList()
|
||
{
|
||
return $response = [
|
||
'1' => [
|
||
'id' => 1,
|
||
'farsi' => 'روکش آسفالت(نگهداری رویه راه)',
|
||
'en_name' => 'maintanance',
|
||
'chart' => 'روکش آسفالت',
|
||
'is_line' => 0,
|
||
'color' => "#ff0000ff",
|
||
|
||
],
|
||
'2' => [
|
||
'id' => 2,
|
||
'farsi' => 'رفع نقاط حادثه خیز',
|
||
'en_name' => 'dangerpoint',
|
||
'chart' => 'نقاط حادثه خیز',
|
||
'is_line' => 0,
|
||
'color' => "#ff0dff",
|
||
],
|
||
'3' => [
|
||
'id' => 3,
|
||
'farsi' => 'ارتقای ایمنی راه',
|
||
'en_name' => 'upgradesaifty',
|
||
'chart' => 'ایمنی راه',
|
||
'is_line' => 0,
|
||
'color' => "#5900ff",
|
||
|
||
],
|
||
'4' => [
|
||
'id' => 4,
|
||
'farsi' => 'ابنیه فنی(تعمیر و بازسازی)',
|
||
'en_name' => 'technical',
|
||
'chart' => 'ابنیه فنی',
|
||
'is_line' => 0,
|
||
'color' => "#0099ff",
|
||
],
|
||
'5' => [
|
||
'id' => 5,
|
||
'farsi' => 'راهدارخانه ها',
|
||
'en_name' => 'tollhouse',
|
||
'chart' => 'راهدارخانه',
|
||
'is_line' => 0,
|
||
'color' => "#0c4e17",
|
||
|
||
],
|
||
'6' => [
|
||
'id' => 6,
|
||
'farsi' => 'ساخت راه روستایی',
|
||
'en_name' => 'village',
|
||
'chart' => 'راه روستایی',
|
||
'is_line' => 1,
|
||
'color' => "#bfa30a",
|
||
|
||
],
|
||
];
|
||
}
|
||
|
||
public function getOperationType(Request $request, $id)
|
||
{
|
||
switch ($id) {
|
||
case "1":
|
||
$response = [
|
||
'101' => [
|
||
'farsi' => 'روکش آسفالت گرم',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'102' => [
|
||
'farsi' => 'ماسه آسفالت',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'103' => [
|
||
'farsi' => 'بازیافت سرد و گرم',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'104' => [
|
||
'farsi' => 'میکروسرفیسینگ',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'105' => [
|
||
'farsi' => 'چیپ سیل',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'106' => [
|
||
'farsi' => 'اسلاری سیل',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'107' => [
|
||
'farsi' => 'اسکراب سیل',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'108' => [
|
||
'farsi' => 'فوگ سیل',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'109' => [
|
||
'farsi' => 'سیل کت',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'110' => [
|
||
'farsi' => 'کیپ سیل',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'111' => [
|
||
'farsi' => 'آسفالت سرد/ردمیکس',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'112' => [
|
||
'farsi' => 'لکه گیری',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'113' => [
|
||
'farsi' => 'درزگیری',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
];
|
||
break;
|
||
case "2":
|
||
$response = [
|
||
"201" => [
|
||
'farsi' => 'تعریض راه',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"202" => [
|
||
'farsi' => 'اصلاح قوس',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"203" => [
|
||
'farsi' => 'ترانشه برداری',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"204" => [
|
||
'farsi' => 'اصلاح یا احداث میدان',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"205" => [
|
||
'farsi' => 'احداث تقاطع غیرهمسطح یا همسطح',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"206" => [
|
||
'farsi' => 'ایمن سازی با علائم و حفاظ',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"207" => [
|
||
'farsi' => 'اصلاح ورودی و خروجی',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"208" => [
|
||
'farsi' => 'احداث تونل',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"209" => [
|
||
'farsi' => 'احداث واربانت',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"210" => [
|
||
'farsi' => 'تعریض ابنیه فنی',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"211" => [
|
||
'farsi' => 'ساخت دیوار حایل',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
"212" => [
|
||
'farsi' => 'سایر اقدامات',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
]
|
||
];
|
||
break;
|
||
case "3":
|
||
$response = [
|
||
'301' => [
|
||
'farsi' => 'نصب حفاظ بتنی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'302' => [
|
||
'farsi' => 'نصب حفاظ فلزی/گاردریل',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'303' => [
|
||
'farsi' => 'اجرای روشنایی طولی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'304' => [
|
||
'farsi' => 'اجرای روشنایی نقطه ای',
|
||
'unit' => 'تعداد',
|
||
'amountable' => 1
|
||
],
|
||
'305' => [
|
||
'farsi' => 'نصب علائم ایمنی',
|
||
'unit' => 'تعداد',
|
||
'amountable' => 1
|
||
],
|
||
'306' => [
|
||
'farsi' => 'خط کشی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'307' => [
|
||
'farsi' => 'اصلاح شیب شیروانی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'308' => [
|
||
'farsi' => 'سایر اقدامات',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'309' => [
|
||
'farsi' => 'اجرای شیار لرزاننده طولی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'310' => [
|
||
'farsi' => 'اجرای شیار لرزاننده عرضی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
]
|
||
];
|
||
break;
|
||
case "4":
|
||
$response = [
|
||
'401' => [
|
||
'farsi' => 'تعریض پل/آبرو',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'402' => [
|
||
'farsi' => 'تعمیرات اساسی پل',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'403' => [
|
||
'farsi' => 'تعمیرات تونل',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'404' => [
|
||
'farsi' => 'تعمیر یا احداث دیوار حائل',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'405' => [
|
||
'farsi' => 'احداث پل جدید',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'406' => [
|
||
'farsi' => 'احداث کنارگذر پل/تونل',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'407' => [
|
||
'farsi' => 'سایر اقدامات',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
]
|
||
];
|
||
break;
|
||
case "5":
|
||
$response = [
|
||
'501' => [
|
||
'farsi' => 'احداث راهدارخانه جدید',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'502' => [
|
||
'farsi' => 'احداث انبار شن و نمک',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'503' => [
|
||
'farsi' => 'نوسازی و بهسازی راهدارخانه',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'504' => [
|
||
'farsi' => 'احداث آشیانه ماشین آلات',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'505' => [
|
||
'farsi' => 'محوطه سازی / دیوار کشی',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
],
|
||
'506' => [
|
||
'farsi' => 'سایر اقدامات',
|
||
'unit' => '',
|
||
'amountable' => 0
|
||
]
|
||
];
|
||
break;
|
||
case "6":
|
||
$response = [
|
||
'601' => [
|
||
'farsi' => 'عملیات خاکی و زیرسازی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'602' => [
|
||
'farsi' => 'روسازی',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
],
|
||
'603' => [
|
||
'farsi' => 'ابنیه فنی',
|
||
'unit' => 'دستگاه',
|
||
'amountable' => 1
|
||
],
|
||
'604' => [
|
||
'farsi' => 'آسفالت',
|
||
'unit' => 'کیلومتر',
|
||
'amountable' => 1
|
||
]
|
||
];
|
||
break;
|
||
}
|
||
return $response;
|
||
}
|
||
}
|