File "2019_11_06_042543_alter_leave_application_data.php"

Full Path: /home/isoftco/public_html/hrm/database/migrations/2019_11_06_042543_alter_leave_application_data.php
File size: 1.72 KB
MIME-type: text/x-php
Charset: utf-8

<?php

use App\Models\Attendance;
use Carbon\Carbon;
use Illuminate\Database\Migrations\Migration;

class AlterLeaveApplicationData extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        $leaveApplications = \App\Models\LeaveApplication::where('application_status', 'approved')->get();

        foreach($leaveApplications as $application) {

            $admin = \App\Models\Admin::where('company_id', $application->company_id)->first();

            $start = Carbon::createFromFormat("Y-m-d", $application->start_date);

            if ($application->end_date == null) {
                $end = clone $start;
            } else {
                $end = Carbon::createFromFormat("Y-m-d", $application->end_date);
            }


            $diffDays = $end->diffInDays($start);

            for ($i = 0; $i <= $diffDays; $i++) {

                $date = $start;
                $attendance = Attendance::firstOrCreate(['date' => $date->format("Y-m-d"),
                    'employee_id' => $application->employee_id]);

                $attendance->leaveType = $application->leaveType;
                $attendance->halfDayType = $application->halfDayType;
                $attendance->reason = $application->reason;
                $attendance->status = 'absent';
                $attendance->applied_on = $application->applied_on;
                $attendance->last_updated_by = $admin->id;
                $attendance->application_status = 'approved';
                $attendance->save();
                $start->addDays(1);
            }
        }
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}