<?php

namespace App\Entities\PagSeguro\Charge;

use App\Entities\PagSeguro\Share\PagSeguroAmount;
use App\Entities\PagSeguro\Share\PagSeguroLinks;
use App\Entities\PagSeguro\Share\PagSeguroPaymentMethod;
use App\Entities\PagSeguro\Share\PagSeguroPaymentResponse;
use App\Entities\PagSeguro\Share\PagSeguroRecurring;
use App\Entities\PagSeguro\Share\PagSeguroSubMerchant;
use App\Utils\Builder;

class PagSeguroChargeBuilder implements Builder {
	protected $id;
	protected $status;
	protected $reated_at;
	protected $paid_at;
	protected $refetrence_id;
	protected $description;
	protected $amount;
	protected $payment_response;
	protected $payment_method;
	protected $recurring;
	protected $sub_merchant;
	protected $notification_urls;
	protected $metadata;
	protected $links;

	public function build(): PagSeguroCharge {

		$obj = new PagSeguroCharge();

		$obj->setAmount( $this->amount );
		$obj->setDescription( $this->description );
		$obj->setId( $this->id );
		$obj->setLinks( $this->links );
		$obj->setMetadata( $$this->metadata );
		$obj->setNotificationUrls( $this->notification_urls );
		$obj->setPaidAt( $this->paid_at );
		$obj->setPaymentMethod( $this->payment_method );
		$obj->setPaymentResponse( $this->payment_response );
		$obj->setReatedAt( $this->reated_at );
		$obj->setRecurring( $this->recurring );
		$obj->setRefetrenceId( $this->refetrence_id );
		$obj->setStatus( $this->status );
		$obj->setSubMerchant( $this->sub_merchant );

		return $obj;

	}

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

		$this->id = $id;

	}

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

		$this->status = $status;

	}

	/**
	 *
	 * @param mixed $reated_at
	 */
	public function setReatedAt($reated_at) {

		$this->reated_at = $reated_at;

	}

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

		$this->paid_at = $paid_at;

	}

	/**
	 *
	 * @param mixed $refetrence_id
	 */
	public function setRefetrenceId($refetrence_id) {

		$this->refetrence_id = $refetrence_id;

	}

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

		$this->description = $description;

	}

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

		$this->amount = $amount;

	}

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

		$this->payment_response = $payment_response;

	}

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

		$this->payment_method = $payment_method;

	}

	/**
	 *
	 * @param mixed $recurring
	 */
	public function setRecurring(PagSeguroRecurring $recurring) {

		$this->recurring = $recurring;

	}

	/**
	 *
	 * @param mixed $sub_merchant
	 */
	public function setSubMerchant(PagSeguroSubMerchant $sub_merchant) {

		$this->sub_merchant = $sub_merchant;

	}

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

		$this->notification_urls = $notification_urls;

	}

	/**
	 *
	 * @param mixed $metadata
	 */
	public function setMetadata($metadata) {

		$this->metadata = $metadata;

	}

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

		$this->links = $links;

	}

}

