<?php

namespace App\ViewModels\PagSeguro\PagSeguroResponseViewModel;

use App\Utils\Builder;

class PagSeguroResponseViewModelBuilder implements Builder {
	protected $id;
	protected $reference_id;
	protected $created_at;
	protected $customer;
	protected $items;
	protected $shipping;
	protected $charges;
	protected $notification_urls;
	protected $links;

	public function build(): PagSeguroResponseViewModel {

		$obj = new PagSeguroResponseViewModel();
		
		$obj->setId($this->id);
		$obj->setCustomer($this->customer);
		$obj->setCreatedAt($this->created_at);
		$obj->setCharges($this->charges);
		$obj->setItems($this->items);
		$obj->setLinks($this->links);
		$obj->setNotificationUrls($this->notification_urls);
		$obj->setReferenceId($this->reference_id);
		$obj->setShipping($this->shipping);

		return $obj;

	}

	/**
	 *
	 * @param mixed $id
	 */
	public function setId($id): PagSeguroResponseViewModelBuilder {

		$this->id = $id;
		return $this;

	}

	/**
	 *
	 * @param mixed $reference_id
	 */
	public function setReferenceId($reference_id): PagSeguroResponseViewModelBuilder {

		$this->reference_id = $reference_id;
		return $this;

	}

	/**
	 *
	 * @param mixed $created_at
	 */
	public function setCreatedAt($created_at): PagSeguroResponseViewModelBuilder {

		$this->created_at = $created_at;
		return $this;

	}

	/**
	 *
	 * @param mixed $customer
	 */
	public function setCustomer($customer): PagSeguroResponseViewModelBuilder {

		$this->customer = $customer;
		return $this;

	}

	/**
	 *
	 * @param mixed $items
	 */
	public function setItems($items): PagSeguroResponseViewModelBuilder {

		$this->items = $items;
		return $this;

	}

	/**
	 *
	 * @param mixed $shipping
	 */
	public function setShipping($shipping): PagSeguroResponseViewModelBuilder {

		$this->shipping = $shipping;
		return $this;

	}

	/**
	 *
	 * @param mixed $charges
	 */
	public function setCharges($charges): PagSeguroResponseViewModelBuilder {

		$this->charges = $charges;
		return $this;

	}

	/**
	 *
	 * @param mixed $notification_urls
	 */
	public function setNotificationUrls($notification_urls): PagSeguroResponseViewModelBuilder {

		$this->notification_urls = $notification_urls;
		return $this;

	}

	/**
	 *
	 * @param mixed $links
	 */
	public function setLinks($links): PagSeguroResponseViewModelBuilder {

		$this->links = $links;
		return $this;

	}

}

