WajibPajak.php 3.71 KB
<?php

/**
 * @Author: irul
 * @Date:   2019-09-20 23:09:49
 * @Last Modified by:   irul
 * @Last Modified time: 2019-10-01 23:57:49
 */

namespace Integrasi\Reklame\Base;

use \Integrasi\Reklame\Helper\Validator;
use \Illuminate\Database\Eloquent\ModelNotFoundException;
use \JsonRPC\Exception\ResponseException;

class WajibPajak extends AbstractClass
{
	public static function create($payload)
	{
		/**
		 * Pengaturan validasi payload.
		 */
		$rules = array(
			'rp'             => 'required|in:R,P',
			'pb'             => 'required|in:1,2',
			'kelurahan_id'   => 'required|exists:tblkelurahan,id',
			'kecamatan_id'   => 'required|exists:tblkecamatan,id',
			'customernm'     => 'required|max:150',
			'kabupaten'      => 'required|max:25',
			'alamat'         => 'required|max:255',
			'kodepos'        => 'required|max:5',
			'telphone'       => 'required|max:40',
			'wpnama'         => 'required|max:150',
			'wpalamat'       => 'required|max:255',
			'wpkelurahan_id' => 'required|exists:tblkelurahan,id',
			'wpkecamatan_id' => 'required|exists:tblkecamatan,id',
			'wpkabupaten'    => 'required|max:25',
			'wpkodepos'      => 'required|max:5',
			'wptelp'         => 'required|max:40',
		);

		/**
		 * Proses validasi payload.
		 */
		$validation = Validator::make($payload, $rules);
		if ($validation->fails()) {
			throw new ResponseException(
				'Parameter yang dikirim tidak lulus proses validasi.',
				0,
				null,
				$validation->messages());
		}

		// $wp = Models\Customer::create(array(
		$wp = call_user_func(self::getParentNamespace() . '\Models\Customer::create', array(
			'rp'             => strtoupper(trim($payload['rp'])),
			'pb'             => $payload['pb'],
			'kelurahan_id'   => $payload['kelurahan_id'],
			'kecamatan_id'   => $payload['kecamatan_id'],
			'reg_date'       => date('Y-m-d H:i:s'),
			'customernm'     => trim($payload['customernm']),
			'kabupaten'      => trim($payload['kabupaten']),
			'alamat'         => trim($payload['alamat']),
			'kodepos'        => trim($payload['kodepos']),
			'telphone'       => trim($payload['telphone']),
			'wpnama'         => trim($payload['wpnama']),
			'wpalamat'       => trim($payload['wpalamat']),
			'wpkelurahan_id' => $payload['wpkelurahan_id'],
			'wpkecamatan_id' => $payload['wpkecamatan_id'],
			'wpkelurahan'    => 'Will be replaced in model',
			'wpkecamatan'    => 'Will be replaced in model',
			'wpkabupaten'    => trim($payload['wpkabupaten']),
			'wpkodepos'      => trim($payload['wpkodepos']),
			'wptelp'         => trim($payload['wptelp']),
			'enabled'        => 1,
		));

		return self::getById($wp->id);
	}

	public static function getByNpwpd($npwpd)
	{
		// $data = Models\Customer::findByNpwpd($npwpd)->first();
		$data = call_user_func(self::getParentNamespace() . '\Models\Customer::findByNpwpd', $npwpd)->first();
		if (!$data) {
			throw new ModelNotFoundException(MSG_NOT_FOUND);
		}
		return $data;
	}

	public static function getBySkpd($kohirno)
	{
		if (!Helper::sptpdExist()) {
			// $spt = Models\Spt::findByKohirno($kohirno)->first();
			$spt = call_user_func(self::getParentNamespace() . '\Models\Spt::findByKohirno', $kohirno)->first();
			if (!$spt) {
				throw new ModelNotFoundException(MSG_NOT_FOUND);
			}
			return self::getById($spt->customer_id);
		} else {
			$sptpd = call_user_func(self::getParentNamespace() . '\Models\Sptpd::findByKohirno', $kohirno)->first();
			if (!$sptpd) {
				throw new ModelNotFoundException(MSG_NOT_FOUND);
			}
			return self::getById($sptpd->customer_id);
		}
	}

	public static function getById($id)
	{
		// $data = Models\Customer::find($id);
		$data = call_user_func(self::getParentNamespace() . '\Models\Customer::find', $id);
		if (!$data) {
			throw new ModelNotFoundException(MSG_NOT_FOUND);
		}
		return $data;
	}
}