<?php

namespace App\ViewModels\PagSeguro\PagSeguroNotificationCreditCard;

use App\Utils\Builder;

class PagSeguroChargeViewModelBuilder implements Builder {
	protected $id;
	protected $reference_id;
	protected $status;
	protected $created_at;
	protected $paid_at;
	protected $description;
	protected $amount;
	protected $payment_response;
	protected $payment_method;
	protected $links;

	public function build(): PagSeguroChargeViewModel {

		$obj = new PagSeguroChargeViewModel();
		
		$obj->setId($this->id);
		$obj->setReferenceId($this->reference_id);
		$obj->setStatus($this->status);
		$obj->setCreatedAt($this->created_at);
		$obj->setPaidAt($this->paid_at);
		$obj->setDescription($this->description);
		$obj->setAmount($this->amount);
		$obj->setPaymentResponse($this->payment_response);
		$obj->setPaymentMethod($this->payment_method);
		$obj->setLinks($this->links);

		return $obj;

	}

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

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

	}

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

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

	}

	/**
	 *
	 * @param mixed $status
	 */
	public function setStatus($status): PagSeguroChargeViewModelBuilder {

		$this->status = $status;
		return $this;

	}

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

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

	}

	/**
	 *
	 * @param mixed $paid_at
	 */
	public function setPaidAt($paid_at): PagSeguroChargeViewModelBuilder {

		$this->paid_at = $paid_at;
		return $this;

	}

	/**
	 *
	 * @param mixed $description
	 */
	public function setDescription($description): PagSeguroChargeViewModelBuilder {

		$this->description = $description;
		return $this;

	}

	/**
	 *
	 * @param mixed $amount
	 */
	public function setAmount($amount): PagSeguroChargeViewModelBuilder {

		$this->amount = $amount;
		return $this;

	}

	/**
	 *
	 * @param mixed $payment_response
	 */
	public function setPaymentResponse($payment_response): PagSeguroChargeViewModelBuilder {

		$this->payment_response = $payment_response;
		return $this;

	}

	/**
	 *
	 * @param mixed $payment_method
	 */
	public function setPaymentMethod($payment_method): PagSeguroChargeViewModelBuilder {

		$this->payment_method = $payment_method;
		return $this;

	}

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

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

	}

}

