File "CompanySettingsController.php"

Full Path: /home/isoftco/public_html/hrm/app/Http/Controllers/Admin/CompanySettingsController.php
File size: 7.16 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Controllers\Admin;

use App\Classes\Files;
use App\Classes\Reply;
use App\Http\Controllers\AdminBaseController;

use App\Http\Requests\Admin\Company\UpdateRequest;
use App\Models\Company;
use App\Models\Country;
use App\Models\Setting;
use Carbon\Carbon;
use Illuminate\Http\Request;

use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Response;

use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;


class CompanySettingsController extends AdminBaseController
{

    public function __construct()
    {
        parent::__construct();
        $this->csettingOpen = 'active';
        $this->pageTitle = 'Settings';
        $this->countries = Country::where('currency_symbol', '!=', 'null')->groupBy('currency_code')->get();
        $this->countrieslist = Country::all();
    }

    public function generalSetting()
    {
        $this->csettingActive = 'active';
        $this->countries = Country::groupBy('currency_code')
            ->get();
        $this->company = admin()->company;
        return View::make('admin.company_settings.edit', $this->data);
    }

    public function generalSettingUpdate(UpdateRequest $request)
    {
        $data = $request->all();
        $company = admin()->company;


        $currencyArray = explode(':', $request->currency);
        $data['currency'] = $currencyArray[1];
        $data['currency_symbol'] = $currencyArray[0];
        $data['timezone'] = request()->get('timezone') . '=' . request()->get('timezoneIndex');

        unset($data["timezoneIndex"]);

        $company->update($data);

        if ($request->hasFile('logo')) {
            $file = new Files();
            $filename = $file->upload($request->file('logo'), 'company_logo', null, 200, false);
            $company->logo = $filename;
            $company->save();
            return Reply::redirect(route('admin.general_setting.edit'));
        }

        return Reply::success('messages.updateSuccess');
    }

    public function edit($id)
    {
        $this->csettingActive = 'active';
        $this->countries = Country::where('currency_symbol', '!=', 'null')->groupBy('currency_code')
            ->get();

        return View::make('admin.company_settings.edit', $this->data);
    }

    public function theme()
    {
        $this->cthemeSettingActive = 'active';

        return View::make('admin.company_settings.theme', $this->data);
    }

    public function updateTheme(Request $request)
    {
        $company = admin()->company;
        $input = $request->all();
        $company->update($input);

        return Reply::success('messages.updateSuccess');
    }

    public function update(Request $request)
    {
        $company = admin()->company;

        $input = $request->all();

        if (request()->get('admin_theme') != '' || request()->get('front_theme') != '') {
            $company->update($input);

            return Reply::success('messages.updateSuccess');
        }

        if (admin()->type != 'superadmin') {
            return View::make('admin.errors.noaccess', $this->data);
        }

        $input['award_feature'] = (isset($input['award_feature'])) ? 1 : 0;
        $input['leave_feature'] = (isset($input['leave_feature'])) ? 1 : 0;
        $input['payroll_feature'] = (isset($input['payroll_feature'])) ? 1 : 0;
        $input['attendance_feature'] = (isset($input['attendance_feature'])) ? 1 : 0;
        $input['notice_feature'] = (isset($input['notice_feature'])) ? 1 : 0;
        $input['holidays_feature'] = (isset($input['holidays_feature'])) ? 1 : 0;
        $input['expense_feature'] = (isset($input['expense_feature'])) ? 1 : 0;
        $input['jobs_feature'] = (isset($input['jobs_feature'])) ? 1 : 0;

        $company->update($input);
        Session::flash('success', trans("messages.updateSuccess"));

        return Reply::success('messages.updateSuccess');

    }

    public function change_language()
    {

        if (admin()->type == 'admin') {
            $setting = Company::findOrFail($this->company_id);
        } else {
            $setting = Setting::findOrFail($this->setting->id);
        }
        $data = request()->all();


        $setting->update($data);

        $output['success'] = 'success';

        return Response::json($output, 200);
    }

    public function features()
    {
        if (admin()->type != 'superadmin') {
            return View::make('admin.errors.noaccess', $this->data);
        }
        $this->csettingOpen = '';
        $this->settingOpen = 'active open';
        $this->cfeaturesActive = 'active';

        return View::make('admin.company_settings.features', $this->data);
    }

    public function notificationSetting()
    {
        $this->notificationSettingActive = 'active';

        return View::make('admin.notificationSettings.edit', $this->data);
    }

    public function updateNotification(Request $request)
    {

        $company = admin()->company;
        $input = $request->all();

        $input['award_notification'] = (isset($input['award_notification'])) ? 1 : 0;
        $input['leave_notification'] = (isset($input['leave_notification'])) ? 1 : 0;
        $input['payroll_notification'] = (isset($input['payroll_notification'])) ? 1 : 0;
        $input['attendance_notification'] = (isset($input['attendance_notification'])) ? 1 : 0;
        $input['notice_notification'] = (isset($input['notice_notification'])) ? 1 : 0;
        $input['expense_notification'] = (isset($input['expense_notification'])) ? 1 : 0;
        $input['employee_add'] = (isset($input['employee_add'])) ? 1 : 0;

        $company->update($input);

        return Reply::success('messages.updateSuccess');

    }

    public function updateAjaxNotification()
    {
        $setting = Company::findOrFail($this->company_id);
        $input[request()->get('type')] = request()->get('value');
        $setting->update($input);

        $output['success'] = 'success';

        return Response::json($output, 200);
    }

    public function attendance()
    {
        $company = admin()->company;
        if ($company->office_start_time != NULL && $company->office_end_time != NULL) {
            $this->officeStartTime = $company->getOfficeStartTime()->timezone($company->timezone)->format('g:i A');
            $this->officeEndTime = $company->getOfficeEndTime()->timezone($company->timezone)->format('g:i A');
        }
        return \View::make('admin.company_settings.attendance', $this->data);
    }

    public function attendanceUpdateSetting(Request $request)
    {
        $company = admin()->company;
        $company->mark_attendance = $request->mark_attendance;

        $start_time = Carbon::createFromFormat('g:i A', request()->get('start_time'), $company->timezone)->timezone('UTC');
        $end_time = Carbon::createFromFormat('g:i A', request()->get('end_time'), $company->timezone)->timezone('UTC');

        $company->office_start_time = $start_time;
        $company->office_end_time = $end_time;

        if (empty($request->late_mark)) {
            $company->late_mark_after = NULL;
        } else {
            $company->late_mark_after = $request->late_mark;
        }

        $company->attendance_setting_set = 1;
        $company->save();

        return Reply::success('messages.updateSuccess');
    }

}