File "EmployeesTableSeeder.php"

Full Path: /home/isoftco/public_html/hrm/database/seeds/EmployeesTableSeeder.php
File size: 4.52 KB
MIME-type: text/x-php
Charset: utf-8

<?php

use App\Models\Salary;
use Illuminate\Database\Seeder;

class EmployeesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $employeePerDesignationCount = 1;
        \Illuminate\Support\Facades\DB::table('employees')->truncate(); // deleting old records.
        DB::table('awards')->truncate(); // deleting old records.

        $faker = Faker\Factory::create();

        $employee =\App\Models\Employee::create([
            'employeeID' => '123456',
            'full_name' => $faker->firstName . ' ' . $faker->lastName,
            'email' => 'employee@example.com',
            'password' => '123456',
            'gender' => $faker->randomElement(['male', 'female']),
            'father_name' => $faker->name,
            'mobile_number' => $faker->e164PhoneNumber,
            'designation' => rand(1, 4),
            'joining_date' => $faker->dateTimeBetween('-2 years')->format('Y-m-d'),
            'local_address' => $faker->address, 'permanent_address' => $faker->address,
            'status' => 'active',
            'company_id' => 1,
            'last_login' => $faker->dateTime,
        ]);

        //  Insert into salary table
        $salary = rand(0,10000);

        Salary::create([
                'employee_id' => $employee->id,
                'type' => 'basic',
                'remarks' => trans('core.basicSalary'),
                'salary' => $salary
            ]
        );

        $salary = rand(0,50);
        Salary::create([
                'employee_id' => $employee->id,
                'type' => 'hourly_rate',
                'remarks' => 'Hourly Rate',
                'salary' => $salary]
        );
        $companies = \App\Models\Company::all();
        $companiesCount = count($companies);

        foreach ($companies as $company) {

            $this->command->info('Seeding company employees:' . $company->id . ' out of ' . $companiesCount);
            $departments = $company->departments;

            foreach ($departments as $department) {

                foreach ($department->designations as $designation) {

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

                        $employeeID = $faker->randomNumber(9);

                        $employee = \App\Models\Employee::create([
                            'employeeID' => $employeeID,
                            'full_name' => $faker->firstName . ' ' . $faker->lastName,
                            'email' => $faker->email,
                            'password' => '123456',
                            'gender' => $faker->randomElement(['male', 'female']),
                            'father_name' => $faker->name,
                            'mobile_number' => $faker->e164PhoneNumber,
                            'designation' => $designation->id,
                            'joining_date' => $faker->dateTimeBetween('-2 years')->format('Y-m-d'),
                            'local_address' => $faker->address,
                            'permanent_address' => $faker->address,
                            'status' => 'active',
                            'company_id' => $company->id,
                            'last_login' => $faker->dateTime,
                        ]);

                        \App\Models\Award::create([
                            'employee_id' => $employee->id,
                            'award_name' => 'Employee of the Month',
                            'gift' => 'pen',
                            'company_id' => $company->id,
                            'cash_price' => rand(100, 4000),
                            'month' => strtolower($faker->monthName),
                            'year' => '2019'

                        ]);
                        $salary = rand(0,10000);


                        Salary::create([
                                'employee_id' => $employee->id,
                                'type' => 'basic',
                                'remarks' => trans('core.basicSalary'),
                                'salary' => $salary
                            ]
                        );
                        $salary = rand(0,50);

                        Salary::create([
                                'employee_id' => $employee->id,
                                'type' => 'hourly_rate',
                                'remarks' => 'Hourly Rate',
                                'salary' => $salary]
                        );
                    }

                }

            }

        }

    }
}