<?php

class ChangeController extends BaseController {

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

	public function changeOk() {
		$input = Input::all();
		
		if (!isset($input['partnerId'])) {
			$response = array(
					'status' => 'fail'
			);
			return Response::json($response);
		}

		$partner = Partner::find($input['partnerId']);
		if ($partner == null || !$partner->statusIsAllow(Partner::ALLOW_CHECK_CHANGE) || !is_numeric($input['partnerId'])) {
			$response = array(
					'status'	 => 'fail',
					'message'	 => 'Клиент не найден'
			);
			return Response::json($response);
		}
		
	  $partner->status = Partner::STATUS_CHANGE_SUCCESS;
	  $partner->save();
		
		$refrence	 = $partner->saveHistory("Обмен заказа подтвержден.");
		$partnerOld	 = Partner::find($input['partnerId']);
		
    // новый заказ
		$partner = Partner::create(array(
								'project_id'			      => $partnerOld->project_id,
								'user_id'					      => e(Sentry::getUser()->id),
								'status'					      => Partner::STATUS_WORK,
								'name'						      => $partnerOld->name,
								'phone'						      => $partnerOld->phone,
								'email'						      => $partnerOld->email,
								'info_source_id'	      => $partnerOld->info_source_id,
								'comment'					      => $partnerOld->comment,
								'salenextdatetime'      => DB::raw('DATE_ADD(NOW(), INTERVAL 30 MINUTE)'),
								'zip'							      => $partnerOld->zip,
								'state'						      => $partnerOld->state,
								'region'					      => $partnerOld->region,
								'city'						      => $partnerOld->city,
								'street'					      => $partnerOld->street,
								'building'				      => $partnerOld->building,
								'room'						      => $partnerOld->room,
								'address'					      => $partnerOld->address,
								'address_short'		      => $partnerOld->address_short,
								'cart'		              => $partnerOld->cart,
								'paytype'		            => $partnerOld->paytype,
								'transport_type'	      => $partnerOld->transport_type,
								'pickup'	              => $partnerOld->pickup,
								'clarification_address' => $partnerOld->clarification_address,
								'cdek_senderCityId'	    => $partnerOld->cdek_senderCityId,
								'cdek_receiverCityId'   => $partnerOld->cdek_receiverCityId,
								'cdek_receiverCity'     => $partnerOld->cdek_receiverCity,
								'cdek_tariffId'	        => $partnerOld->cdek_tariffId,
								'cdek_cacheOnDelivery'	=> $partnerOld->cdek_cacheOnDelivery,
								'is_franchisees_order'	=> $partnerOld->is_franchisees_order,
		));

		$refrence = Refrence::create(array(
								'partner_id'			 => $partner->id,
								'comment'					 => e("Добавлен в клиенты"),
								'status'					 => e(Partner::STATUS_WORK),
								'sender_user_id'	 => $partner->user_id,
								'reciver_user_id'	 => $partner->user_id
		));

		$refrence->load('sender');
		$comment						 = $refrence->toArray();
		$comment['comment']	 = nl2br($comment['comment']);

		$response = array(
				'status'									 => 'success',
				'open_new_partner'         => 1,
				'btns'										 => View::make('partner.btns')->with('partner', $partner)->render(),
				'noredirect'               => 1,
				'comment'									 => $comment,
				'partnerIsStatusToWork'		 => $partner->isStatusToWork(),
				'partnerSaleNextDateTime'	 => $partner->salenextdatetime,
				'partnerStatusName'				 => $partner->getStatusName(),
				'partner'									 => $partner->toArray()
		);
		return Response::json($response);
	}

	public function changeReject() {
		$input = Input::all();
		
		if (!isset($input['partnerId'])) {
			$response = array(
					'status' => 'fail'
			);
			return Response::json($response);
		}

		$partner = Partner::find($input['partnerId']);
		if ($partner == null || !$partner->statusIsAllow(Partner::ALLOW_CHECK_CHANGE) || !is_numeric($input['partnerId'])) {
			$response = array(
					'status'	 => 'fail',
					'message'	 => 'Клиент не найден'
			);
			return Response::json($response);
		}
		
	  $partner->status = $partner->status_next;
		$partner->save();
		$refrence	 = $partner->saveHistory("Обмен заказа отклонен.");
		
		$partner	 = Partner::find($input['partnerId']);

		$refrence->load('sender');
		$comment						 = $refrence->toArray();
		$comment['comment']	 = nl2br($comment['comment']);

		$response = array(
				'status'									 => 'success',
				'btns'										 => View::make('partner.btns')->with('partner', $partner)->render(),
				'comment'									 => $comment,
				'partnerIsStatusToWork'		 => $partner->isStatusToWork(),
				'partnerSaleNextDateTime'	 => $partner->salenextdatetime,
				'partnerStatusName'				 => $partner->getStatusName(),
				'partner'									 => $partner->toArray()
		);
		return Response::json($response);
	}
	
}