19 Commits

Author SHA1 Message Date
43a8acca14 Merge pull request 'develop' (#34) from develop into main
Reviewed-on: #34
2026-06-22 12:03:10 +00:00
0291ee6716 Merge pull request 'add validation' (#33) from feature/validation into develop
Reviewed-on: #33
2026-06-22 12:01:28 +00:00
amirghasempoor
0befa33b0f add validation 2026-06-22 15:30:35 +03:30
3708e2ebfb Merge pull request 'add two item in mission and create migration for them' (#32) from feature/AddItemInMission into develop
Reviewed-on: #32
2026-06-22 09:46:08 +00:00
faezeh
3fb1474b80 fix code in mission controller and form request 2026-06-21 16:11:42 +03:30
faezeh
bab99f7f89 add two item in mission and create migration for them 2026-06-21 13:49:01 +03:30
2aa9ae1455 Merge pull request 'fix machine report excel export' (#30) from feature/MachineReportExcel into develop
Reviewed-on: #30
2026-06-20 06:37:30 +00:00
75c2fce369 Merge pull request 'develop' (#28) from develop into main
Reviewed-on: #28
2026-06-15 11:32:19 +00:00
Hamidreza Ranjbarpour
ec1358e85f Merge branch 'main' of rms-develop-main-branch-26-23-5.bundle 2026-05-23 09:29:54 +00:00
Hamidreza Ranjbarpour
21e9931298 producion changes 2026-05-23 09:28:21 +00:00
amirghasempoor
23ab4d2bff Merge branch 'main' of rms_production.bundle 2026-05-23 09:17:47 +00:00
4138ac7620 Merge pull request 'develop' (#7) from develop into main
Reviewed-on: #7
2026-05-23 07:38:15 +00:00
Amir Ghasempoor
4a2612837b Merge pull request #131 from witelgroup/develop
Develop
2026-01-31 13:52:02 +03:30
Amir Ghasempoor
7651920494 Merge pull request #130 from witelgroup/develop
Develop
2026-01-31 13:23:28 +03:30
Amir Ghasempoor
aa90d151c1 Merge pull request #123 from witelgroup/develop
Develop
2025-12-29 14:16:10 +03:30
Amir Ghasempoor
a5a464d4fe Merge pull request #120 from witelgroup/develop
Develop
2025-12-28 12:40:01 +03:30
Amir Ghasempoor
73771adabf Merge pull request #113 from witelgroup/develop
Develop
2025-12-23 11:10:06 +03:30
Amir Ghasempoor
7ba487a8be Merge pull request #111 from witelgroup/develop
Develop
2025-12-22 11:39:50 +03:30
Amir Ghasempoor
c6c3675073 Merge pull request #102 from witelgroup/develop
Develop
2025-12-14 10:56:29 +03:30
13 changed files with 59 additions and 23 deletions

View File

@@ -2,7 +2,6 @@
namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Enums\FMSResultCode;
use App\Enums\MissionCategory;
use App\Enums\MissionStates;
use App\Enums\MissionTypes;
@@ -10,7 +9,6 @@ use App\Enums\MissionViolationStatus;
use App\Enums\MissionZones;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController;
use App\Http\Requests\V3\Mission\RequestPortal\ChangeStateRequest;
use App\Http\Requests\V3\Mission\RequestPortal\ClarifyUnauthorizedExitRequest;
use App\Http\Requests\V3\Mission\RequestPortal\ContinueMissionRequest;
@@ -23,7 +21,6 @@ use App\Models\Mission;
use App\Models\MissionViolation;
use App\Models\Rahdaran;
use App\Models\RahdariPoint;
use App\Models\RoadObserved;
use App\Services\Cartables\Mission\RequestPortalService;
use App\Services\FMS\GetErrorRateService;
use Carbon\Carbon;
@@ -65,6 +62,8 @@ class RequestPortalController extends Controller
$user = auth()->user();
$mission = Mission::query()->create([
'item_id' => $request->item_id,
'sub_item_id' => $request->sub_item_id,
'user_id' => $user->id,
'username' => $user->username,
'province_id' => $user->province_id,
@@ -83,7 +82,6 @@ class RequestPortalController extends Controller
'start_date' => $request->start_date,
'end_date' => $request->end_date,
'request_date' => now(),
'description' => $request->description,
'end_point' => $request->end_point,
'encoded_route' => $request->encoded_route,
'category_id' => $request->category_id,
@@ -137,6 +135,8 @@ class RequestPortalController extends Controller
$machine = CMMSMachine::query()->find($request->machine_id, ['id', 'machine_code', 'car_type']);
$newMission = Mission::query()->create([
'item_id' => $request->item_id,
'sub_item_id' => $request->sub_item_id,
'user_id' => $user->id,
'username' => $user->username,
'province_id' => $user->province_id,
@@ -154,7 +154,6 @@ class RequestPortalController extends Controller
'start_date' => now(),
'end_date' => $request->end_date,
'request_date' => now(),
'description' => $request->description,
'end_point' => $request->end_point,
'encoded_route' => $request->encoded_route,
'category_id' => $request->category_id,
@@ -185,6 +184,8 @@ class RequestPortalController extends Controller
DB::transaction(function () use ($mission, $request) {
$state = MissionStates::REQUEST_CREATED->value;
$mission->update([
'item_id' => $request->item_id,
'sub_item_id' => $request->sub_item_id,
'state_id' => $state,
'state_name' => MissionStates::name($state),
'requested_machines' => json_encode($request->requested_machines),
@@ -194,7 +195,6 @@ class RequestPortalController extends Controller
'zone_fa' => MissionZones::name($request->zone),
'start_date' => $request->start_date,
'end_date' => $request->end_date,
'description' => $request->description,
'end_point' => $request->end_point,
'encoded_route' => $request->encoded_route,
'category_id' => $request->category_id,
@@ -247,6 +247,8 @@ class RequestPortalController extends Controller
$machine = CMMSMachine::query()->where('machine_code', '=', $violation->machine_code)->first(['id', 'machine_code', 'car_type']);
$mission = Mission::query()->create([
'item_id' => $request->item_id,
'sub_item_id' => $request->sub_item_id,
'user_id' => $user->id,
'username' => $user->username,
'province_id' => $user->province_id,

View File

@@ -41,7 +41,7 @@ class FinishRequest extends FormRequest
'زمان پایان ماموریت باید بعد از زمان شروع ماموریت باشد.'
);
}
if ($this->end_km < $mission->km) {
if ($this->end_km <= $mission->km) {
$validator->errors()->add(
'end_km',
'کیلومتر پایان باید بزرگتر از کیلومتر شروع باشد.'

View File

@@ -25,6 +25,8 @@ class ClarifyUnauthorizedExitRequest extends FormRequest
public function rules(): array
{
return [
'item_id' => 'required|exists:info_items,item',
'sub_item_id' => 'required|exists:info_items,id',
'rahdaran' => 'array',
'rahdaran.*' => 'exists:rahdaran,id',
'driver' => 'required|integer|exists:rahdaran,id',

View File

@@ -26,6 +26,8 @@ class ContinueMissionRequest extends FormRequest
public function rules(): array
{
return [
'item_id' => 'required|exists:info_items,item',
'sub_item_id' => 'required|exists:info_items,id',
'rahdaran' => 'array',
'rahdaran.*' => 'exists:rahdaran,id',
'machine_id' => 'required|integer|exists:cmms_machines,id',
@@ -33,7 +35,6 @@ class ContinueMissionRequest extends FormRequest
'type' => 'required|in:1,2',
'zone' => 'required|in:1,2,3',
'end_date' => 'required|date',
'description' => 'string',
'end_point' => 'required|string',
'encoded_route' => 'required|string',
'explanation' => 'required|string',
@@ -57,7 +58,7 @@ class ContinueMissionRequest extends FormRequest
);
}
}
if ($this->end_km < $this->mission->km) {
if ($this->end_km <= $this->mission->km) {
$validator->errors()->add(
'end_km',
'کیلومتر پایان باید بزرگتر از کیلومتر شروع باشد.'

View File

@@ -25,6 +25,8 @@ class StoreRequest extends FormRequest
public function rules(): array
{
return [
'item_id' => 'required|exists:info_items,item',
'sub_item_id' => 'required|exists:info_items,id',
'rahdaran' => 'array',
'rahdaran.*' => 'exists:rahdaran,id',
'requested_machines' => 'required|array',
@@ -32,7 +34,6 @@ class StoreRequest extends FormRequest
'zone' => 'required|in:1,2,3',
'start_date' => 'required|date',
'end_date' => 'required|date',
'description' => 'string',
'end_point' => 'required|string',
'encoded_route' => 'required|string',
'explanation' => 'required|string',

View File

@@ -26,6 +26,8 @@ class UpdateRequest extends FormRequest
public function rules(): array
{
return [
'item_id' => 'required|exists:info_items,item',
'sub_item_id' => 'required|exists:info_items,id',
'rahdaran' => 'array',
'rahdaran.*' => 'exists:rahdaran,id',
'requested_machines' => 'required|array',
@@ -33,7 +35,6 @@ class UpdateRequest extends FormRequest
'zone' => 'required|in:1,2,3',
'start_date' => 'required|date',
'end_date' => 'required|date',
'description' => 'string',
'end_point' => 'required|string',
'encoded_route' => 'required|string',
'explanation' => 'required|string',

View File

@@ -13,8 +13,8 @@ class DeallocateRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->mission->station_id == auth()->user()->station_id &&
in_array($this->mission->state_id, [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value])
return ($this->mission->station_id == auth()->user()->station_id &&
in_array($this->mission->state_id, [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value]))
|| auth()->user()->username === 'witel';
}

View File

@@ -41,7 +41,7 @@ class UpdateRequest extends FormRequest
'زمان پایان ماموریت باید بعد از زمان شروع ماموریت باشد.'
);
}
if ($this->end_km < $this->violation->km) {
if ($this->end_km <= $this->violation->km) {
$validator->errors()->add(
'end_km',
'کیلومتر پایان باید بزرگتر از کیلومتر شروع باشد.'

View File

@@ -14,7 +14,7 @@ class Mission extends Model
{
use HasFactory;
protected $guarded = [];
protected $guarded = ['id'];
protected $hidden = ['pivot'];
protected $casts = [
'start_time' => 'datetime',

View File

@@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
class MissionViolation extends Model
{
use HasFactory;
protected $guarded =[];
protected $guarded =['id'];
public function mission(): BelongsTo
{

View File

@@ -24,7 +24,7 @@ class ReportMachineService
FROM missions m
JOIN cmms_machines cm ON cm.id = m.machine_id
WHERE m.state_id = 4 AND m.start_time >= :from AND m.finish_time <= :to
GROUP BY machine_id;";
GROUP BY machine_id ORDER BY missions DESC;";
return DB::select($sql, [
'from' => $from,
@@ -42,7 +42,7 @@ class ReportMachineService
FROM missions m
JOIN cmms_machines cm ON cm.id = m.machine_id
WHERE m.state_id = 4 AND start_time >= :from AND finish_time <= :to AND m.province_id = :province_id
GROUP BY machine_id;";
GROUP BY machine_id ORDER BY missions DESC;";
return DB::select($sql, [
'from' => $from,
@@ -63,7 +63,7 @@ class ReportMachineService
FROM missions m
JOIN cmms_machines cm ON cm.id = m.machine_id
WHERE m.state_id = 4 AND m.start_time >= :from AND m.finish_time <= :to
GROUP BY cm.car_type;";
GROUP BY cm.car_type ORDER BY missions DESC;";
return DB::select($sql, [
'from' => $from,
@@ -84,7 +84,7 @@ class ReportMachineService
FROM missions m
JOIN cmms_machines cm ON cm.id = m.machine_id
WHERE m.state_id = 4 AND m.start_time >= :from AND m.finish_time <= :to AND m.province_id = :province_id
GROUP BY cm.car_type;";
GROUP BY cm.car_type ORDER BY missions DESC;";
return DB::select($sql, [
'from' => $from,
@@ -105,7 +105,7 @@ class ReportMachineService
SUM(m.end_km - m.km) AS func
FROM missions m
WHERE m.state_id = 4 AND m.start_time >= :from AND m.finish_time <= :to
GROUP BY m.driver_id;";
GROUP BY m.driver_id ORDER BY missions DESC;";
return DB::select($sql, [
'from' => $from,
@@ -126,7 +126,7 @@ class ReportMachineService
SUM(m.end_km - m.km) AS func
FROM missions m
WHERE m.state_id = 4 AND m.start_time >= :from AND m.finish_time <= :to AND province_id = :province_id
GROUP BY m.driver_id;";
GROUP BY m.driver_id ORDER BY missions DESC;";
return DB::select($sql, [
'from' => $from,

View File

@@ -34,7 +34,7 @@ class RequestPortalService
'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id',
'end_date', 'request_date', 'end_point', 'encoded_route', 'zone', 'zone_fa', 'start_time', 'finish_time',
'code', 'category_id', 'category_name', 'explanation', 'city_id', 'city_name', 'province_id', 'station_name',
'driver_id', 'driver_name'
'driver_id', 'driver_name', 'machine_id', 'item_id', 'sub_item_id'
]
);
}

View File

@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('missions', function (Blueprint $table) {
$table->unsignedInteger('item_id')->nullable();
$table->unsignedInteger('sub_item_id')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('missions', function (Blueprint $table) {
$table->dropColumn('item_id', 'sub_item_id');
});
}
};