<?php
namespace App\Http\Controllers\hr;

use App\gnr\GnrCompany;
use App\hr\Edps;
use App\hr\Other;

use App\Http\Controllers\Controller;

use App\Service\EasyCode;
use App\User;
use Auth;

use Illuminate\Http\Request;

use Response;
use Validator;

class EdpsController extends Controller {
	protected $easycode;

	public function __construct() {
		$this->easycode = new EasyCode();
	}

	public function index() {
		$data['pageTitle']   = 'EDPS List';
		$data['addBtnLabel'] = 'New EDPS';
		$data['addBtnUrl']   = url('hr/edps/create');

		$model              = new Edps;
		$data['model']      = $model->where('amount', '>', 0)->orderby('created_at', 'desc')->paginate(99999999);
		$data['attributes'] = $model->attributes();
		$data['easycode']   = $this->easycode;

		return view('hr.edps.index', ['model' => $model, 'data' => $data]);
	}

	public function genarate() {
		$user = User::where('emp_id_fk', '!=', '0')->get();
		foreach ($user as $emp):
		if (count($emp->employee) > 0 && count($emp->employee->organization) > 0 && (@$emp->employee->organization->edps_start_month != '')) {
			Edps::addEditFirstEdps($emp->employee->organization);
		}
		endforeach;
	}

	public function create(Request $request) {
		$data['pageTitle'] = 'New EDPS';

		$data['companyData']  = GnrCompany::options('Select any');
		$data['employeeList'] = User::options('Select any');

		$data['model']                   = new Edps;
		$data['model']->interest_rate    = Other::getInterestRate();
		$data['attributes']              = $data['model']::attributes();
		$data['placeholder']             = $data['model']::placeholder();
		$data['easycode']                = $this->easycode;
		$data['allRecruitmentTypeLabel'] = 'All EDPS List';
		$data['allRecruitmentTypeUrl']   = url('hr/edps');
		$data['closeBtnUrl']             = url('hr/edps');
		if (isset($_POST['_token'])) {
			$req = $request->all();

			if ($req['start_month'] != '') {
				$req['start_month'] = date('Y-m-d', strtotime('01-'.$req['start_month']));
				$req['end_month']   = date('Y-m-31', strtotime($req['start_month'].' +'.$req['how_many_year'].' Year'));
			}

			$req['created_by'] = Auth::user()->id;
			$req['updated_by'] = Auth::user()->id;
			$req['created_at'] = date("Y-m-d H:i:s");
			$req['updated_at'] = date("Y-m-d H:i:s");

			$validator = Validator::make($req, Edps::createRules());
			$validator->setAttributeNames(Edps::attributes());
			if ($validator                     ->fails()) {
				return redirect('/hr/edps/create')->withErrors($validator, 'error')->withInput();
			} else {
				$data['model']->fill($req);
				if ($data['model']          ->save()) {
					return redirect('/hr/edps')->with('success', 'EDPS created successfully.');
				} else {
					return redirect('/hr/edps/create')->with('error', 'Failed to create EDPS.')->withInput();
				}
			}
		}
		return view('hr.edps.create', ['data' => $data]);
	}

	public function update($id, Request $request) {
		$data['pageTitle'] = 'Update EDPS';

		$data['companyData']  = GnrCompany::options('Select any');
		$data['employeeList'] = User::options('Select any');

		$data['model']                = Edps::find($id);
		$data['model']->company_id_fk = $data['model']->user->company_id_fk;
		$data['model']->project_id_fk = $data['model']->user->project_id_fk;
		$data['model']->branch_id_fk  = $data['model']->user->branchId;
		if ($data['model']->start_month != '0000-00-00') {
			$data['model']->start_month = date('m-Y', strtotime($data['model']->start_month));
		}

		$data['attributes']              = $data['model']::attributes();
		$data['placeholder']             = $data['model']::placeholder();
		$data['easycode']                = $this->easycode;
		$data['allRecruitmentTypeLabel'] = 'All EDPS List';
		$data['allRecruitmentTypeUrl']   = url('hr/edps');
		$data['closeBtnUrl']             = url('hr/edps');
		if (isset($_POST['_token'])) {
			$req = $request->all();

			if ($req['start_month'] != '') {
				$req['start_month'] = date('Y-m-d', strtotime('01-'.$req['start_month']));
				$req['end_month']   = date('Y-m-31', strtotime($req['start_month'].' +'.$req['how_many_year'].' Year'));
			}

			$req['created_by'] = Auth::user()->id;
			$req['updated_by'] = Auth::user()->id;
			$req['created_at'] = date("Y-m-d H:i:s");
			$req['updated_at'] = date("Y-m-d H:i:s");

			$validator = Validator::make($req, Edps::createRules());
			$validator->setAttributeNames(Edps::attributes());
			if ($validator                          ->fails()) {
				return redirect('/hr/edps/update/'.$id)->withErrors($validator, 'error')->withInput();
			} else {
				unset($data['model']->company_id_fk);
				unset($data['model']->project_id_fk);
				unset($data['model']->branch_id_fk);
				$data['model']->fill($req);
				if ($data['model']          ->save()) {
					return redirect('/hr/edps')->with('success', 'EDPS created successfully.');
				} else {
					return redirect('/hr/edps/update/'.$id)->with('error', 'Failed to update edps.')->withInput();
				}
			}
		}
		return view('hr.edps.create', ['data' => $data]);
	}

	public function delete(Request $request) {
		$item = Edps::find($request['id']);
		if (isset($_POST['_token'])) {
			if ($item && $item->delete()) {
				if ($request->ajax()) {
					return response::json(['res' => 1, 'msg' => 'Deleted successfully.']);
				} else {

					return redirect('/hr/edps')->with('success', 'Deleted successfully.');
				}
			} else {
				if ($request->ajax()) {
					return response::json(['res' => 0, 'msg' => 'Not found.']);
				} else {

					return redirect('/hr/edps')->with('error', 'Not found.');
				}
			}
		} else {
			if ($request->ajax()) {
				return response::json(['res' => 0, 'msg' => 'Invalid request.']);
			} else {

				return redirect('/hr/edps')->with('error', 'Invalid request.');
			}
		}
	}
}
