<?php

class VisitsBudgetController extends BaseController {

	/**
	 * Constructor
	 */
	public function __construct() {
		// Establish Filters
		$this->beforeFilter('auth');
		$this->beforeFilter('hasRole:' . Role::ROLE_CRM_STAT);

		if (Auth::check()) {
			$this->user			 = Auth::user();
			$this->projects	 = $this->user->projects()->whereUsecrm(1)->whereType(Project::TYPE_SHOP)->get();
		}
		$this->projectPrefix = 'stat';
		parent::__construct();
	}

	public function index() {
		$input = Input::all();

		if (Input::has('filterMonth')) {
			Session::put($this->projectPrefix . '_filterMonth', $input['filterMonth']);
		}
		else {
			$input['filterMonth'] = Session::get($this->projectPrefix . '_filterMonth');
			if (!$input['filterMonth']) {
				$input['filterMonth'] = date("m");
			}
		}
		if (Input::has('filterYear')) {
			Session::put($this->projectPrefix . '_filterYear', $input['filterYear']);
		}
		else {
			$input['filterYear'] = Session::get($this->projectPrefix . '_filterYear');
			if (!$input['filterYear']) {
				$input['filterYear'] = date("Y");
			}
		}

		if (!Input::has('projectId')) {
			$input['projectId'] = Session::get($this->projectPrefix . '_work_projectId');
		}
		$project = false;
		if (!$input['projectId']) {
			$project						 = $this->user->projects()->whereUsecrm(1)->whereType(Project::TYPE_SHOP)->first();
			$input['projectId']	 = $project->id;
		}
		if (!$project) {
			$project = $this->user->projects()->whereUsecrm(1)->whereType(Project::TYPE_SHOP)->whereId($input['projectId'])->first();
		}
		Session::put($this->projectPrefix . '_work_projectId', $input['projectId']);
		if (!$project) {
			return \App::abort(404);
		}

		return $this->setupLayout('stat.visits.budget.index')
										->with('project', $project)
										->with('input', $input);
	}

	public function update() {
		$input = Input::all();

		$input['projectId']	 = Session::get($this->projectPrefix . '_work_projectId');
		$project						 = false;
		if ($input['projectId']) {
			$project = $this->user->projects()->whereUsecrm(1)->whereType(Project::TYPE_SHOP)->whereId($input['projectId'])->first();
		}
		if (!$project) {
			$response = array('status' => 'fail');
			return Response::json($response);
		}

		if (!isset($input['pk']) || !isset($input['name']) || !isset($input['day']) || !isset($input['month']) || !isset($input['year']) || !isset($input['visit_utm_compaign'])) {
			$response = array('status' => 'fail');
			return Response::json($response);
		}

		$visitUtmCampaign = VisitUtmCampaign::find($input['visit_utm_compaign']);
		if (!$visitUtmCampaign) {
			$response = array('status' => 'fail');
			return Response::json($response);
		}

		$budget = false;
		if ($input['pk']) {
			$budget = VisitUtmCampaignBudget::whereId($input['pk'])->whereVisitUtmCampaignId($input['visit_utm_compaign'])->where('day', '=', $input["day"])->where('month', '=', $input["month"])->where('year', '=', $input["year"])->first();
		}
		else {
			$budget = VisitUtmCampaignBudget::whereVisitUtmCampaignId($input['visit_utm_compaign'])->where('day', '=', $input["day"])->where('month', '=', $input["month"])->where('year', '=', $input["year"])->first();
		}
		if (!$budget) {
			$budget = VisitUtmCampaignBudget::create(array(
					'day' => e($input["day"]),
					'month' => e($input["month"]),
					'year' => e($input["year"]),
					'date' => e("{$input["year"]}-{$input["month"]}-{$input["day"]}"),
			));
			$budget->project()->associate($project);
			$budget->user()->associate($this->user);
			$budget->visitUtmCampaign()->associate($visitUtmCampaign);
		}
		$budget->amount = intval($input["value"]);
		$budget->save();

		$response = array(
				'status' => 'success'
		);
		return Response::json($response);
	}

}
