314 lines
11 KiB
PHP
314 lines
11 KiB
PHP
<?php
|
||
|
||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||
// This can be removed if you use __autoload() in config.php OR use Modular Extensions
|
||
|
||
/** @noinspection PhpIncludeInspection */
|
||
require __DIR__ . '/REST_Controller.php';
|
||
|
||
/**
|
||
* This is an example of a few basic user interaction methods you could use
|
||
* all done with a hardcoded array
|
||
*
|
||
* @package CodeIgniter
|
||
* @subpackage Rest Server
|
||
* @category Controller
|
||
*/
|
||
class Payments extends REST_Controller {
|
||
function __construct() {
|
||
// Construct the parent class
|
||
parent::__construct();
|
||
$this->load->model('payments_model');
|
||
$this->load->model('Api_model');
|
||
}
|
||
|
||
/**
|
||
* @api {get} api/payments/:id List all Payments
|
||
* @apiVersion 0.3.0
|
||
* @apiName GetPayment
|
||
* @apiGroup Payments
|
||
*
|
||
* @apiHeader {String} authtoken Authentication token, generated from admin area
|
||
*
|
||
* @apiParam {Number} payment_id Optional payment unique ID <br/><i>Note : if you don't pass Payment id then it will list all payments records</i>
|
||
*
|
||
* @apiSuccess {Array} Payments List all Payment Records.
|
||
*
|
||
* @apiSuccessExample Success-Response:
|
||
* HTTP/1.1 200 OK
|
||
* [
|
||
* {
|
||
* "id": "3",
|
||
* "invoiceid": "7",
|
||
* "amount": "1000.00",
|
||
* "paymentmode": "3",
|
||
* "paymentmethod": "",
|
||
* "date": "2020-06-08",
|
||
* "daterecorded": "2020-06-08 20:29:54",
|
||
* "note": "",
|
||
* "transactionid": "000355795931",
|
||
* "invoiceid": "UPI",
|
||
* "description": "",
|
||
* "show_on_pdf": "0",
|
||
* "invoices_only": "0",
|
||
* "expenses_only": "0",
|
||
* "selected_by_default": "0",
|
||
* "active": "1",
|
||
* "paymentid": "1"
|
||
* },
|
||
* {
|
||
* "id": "4",
|
||
* "invoiceid": "12",
|
||
* "amount": "-3.00",
|
||
* "paymentmode": "4",
|
||
* "paymentmethod": "",
|
||
* "date": "2020-07-04",
|
||
* "daterecorded": "2020-07-04 15:32:59",
|
||
* "note": "",
|
||
* "transactionid": "P228210122733439",
|
||
* "invoiceid": "Stripe",
|
||
* "description": "",
|
||
* "show_on_pdf": "0",
|
||
* "invoices_only": "0",
|
||
* "expenses_only": "0",
|
||
* "selected_by_default": "0",
|
||
* "active": "1",
|
||
* "paymentid": "2"
|
||
* },
|
||
* {
|
||
* "id": "1",
|
||
* "invoiceid": "14",
|
||
* "amount": "8.00",
|
||
* "paymentmode": "1",
|
||
* "paymentmethod": "",
|
||
* "date": "2020-07-04",
|
||
* "daterecorded": "2020-07-04 15:47:30",
|
||
* "note": "",
|
||
* "transactionid": "000360166374",
|
||
* "invoiceid": "Bank",
|
||
* "description": null,
|
||
* "show_on_pdf": "0",
|
||
* "invoices_only": "0",
|
||
* "expenses_only": "0",
|
||
* "selected_by_default": "1",
|
||
* "active": "1",
|
||
* "paymentid": "3"
|
||
* },
|
||
* {
|
||
* "id": "2",
|
||
* "invoiceid": "13",
|
||
* "amount": "3.00",
|
||
* "paymentmode": "2",
|
||
* "paymentmethod": "Credit card",
|
||
* "date": "2020-07-04",
|
||
* "daterecorded": "2020-07-04 15:49:56",
|
||
* "note": "",
|
||
* "transactionid": "0124875873",
|
||
* "invoiceid": "paypal",
|
||
* "description": "",
|
||
* "show_on_pdf": "0",
|
||
* "invoices_only": "0",
|
||
* "expenses_only": "0",
|
||
* "selected_by_default": "0",
|
||
* "active": "1",
|
||
* "paymentid": "4"
|
||
* }
|
||
* ]
|
||
* @apiError {Boolean} paymentmode Request paymentmode.
|
||
* @apiError {String} message No data were found.
|
||
*
|
||
* @apiErrorExample Error-Response:
|
||
* HTTP/1.1 404 Not Found
|
||
* {
|
||
* "paymentmode": false,
|
||
* "message": "No data were found"
|
||
* }
|
||
*/
|
||
public function data_get($id = '') {
|
||
// If the id parameter doesn't exist return all the
|
||
$data = $this->Api_model->payment_get($id);
|
||
// Check if the data store contains
|
||
if ($data) {
|
||
// Set the response and exit
|
||
$this->response($data, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
|
||
|
||
} else {
|
||
// Set the response and exit
|
||
$this->response(['paymentmode' => FALSE, 'message' => 'No data were found'], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code
|
||
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @api {get} api/payments/search/:keysearch Search Payments Information
|
||
* @apiVersion 0.3.0
|
||
* @apiName GetPaymentSearch
|
||
* @apiGroup Payments
|
||
*
|
||
* @apiHeader {String} authtoken Authentication token, generated from admin area
|
||
*
|
||
* @apiParam {String} keysearch Search Keywords
|
||
*
|
||
* @apiSuccess {Array} Payments Payments information
|
||
*
|
||
* @apiSuccessExample Success-Response:
|
||
* HTTP/1.1 200 OK
|
||
* [
|
||
* {
|
||
* "id": "3",
|
||
* "invoiceid": "14",
|
||
* "amount": "8.00",
|
||
* "paymentmode": "2",
|
||
* "paymentmethod": "",
|
||
* "date": "2020-07-04",
|
||
* "daterecorded": "2020-07-04 15:47:30",
|
||
* "note": "",
|
||
* "transactionid": "",
|
||
* ...
|
||
* }
|
||
* ]
|
||
*
|
||
* @apiError {Boolean} paymentmode Request paymentmode
|
||
* @apiError {String} message No data were found
|
||
*
|
||
* @apiErrorExample Error-Response:
|
||
* HTTP/1.1 404 Not Found
|
||
* {
|
||
* "paymentmode": false,
|
||
* "message": "No data were found"
|
||
* }
|
||
*/
|
||
public function data_search_get($key = '') {
|
||
// If the key parameter doesn't exist return all the
|
||
$data = $this->Api_model->search('payments', $key);
|
||
// Check if the data store contains
|
||
if ($data) {
|
||
// Set the response and exit
|
||
$this->response($data, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
|
||
|
||
} else {
|
||
// Set the response and exit
|
||
$this->response(['paymentmode' => FALSE, 'message' => 'No data were found'], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**
|
||
* @api {post} api/payments Add New Payment
|
||
* @apiName PostPayment
|
||
* @apiGroup Payments
|
||
*
|
||
* @apiHeader {String} authtoken Authentication token, generated from admin area
|
||
*
|
||
* @apiParam {String} invoiceid Mandatory Invoice ID associated with the payment.
|
||
* @apiParam {String} amount Mandatory Payment amount.
|
||
* @apiParam {String} paymentmode Mandatory Payment mode (e.g., cash, credit card, etc.).
|
||
* @apiParam {String} [paymentmethod] Optional Payment method details.
|
||
* @apiParam {String} [note] Optional Additional payment note.
|
||
* @apiParam {String} [transactionid] Optional Transaction ID.
|
||
* @apiParam {String} [custom_fields] Optional Custom fields data.
|
||
*
|
||
* @apiParamExample {Multipart Form} Request-Example:
|
||
* array (size=6)
|
||
* 'invoiceid' => string '123' (length=3)
|
||
* 'amount' => string '250.00' (length=6)
|
||
* 'paymentmode' => string '1' (length=1)
|
||
* 'paymentmethod' => string 'Visa' (length=4)
|
||
* 'note' => string 'Payment for Invoice #123' (length=25)
|
||
* 'transactionid' => string 'TXN123456789' (length=12)
|
||
* 'custom_fields' => string '{"field1": "value1", "field2": "value2"}' (JSON format)
|
||
*
|
||
* @apiSuccess {Boolean} paymentmode Status of the request.
|
||
* @apiSuccess {String} message Payment add successful.
|
||
*
|
||
* @apiSuccessExample Success-Response:
|
||
* HTTP/1.1 200 OK
|
||
* {
|
||
* "paymentmode": true,
|
||
* "message": "Payment add successful."
|
||
* }
|
||
*
|
||
* @apiError {Boolean} paymentmode Status of the request.
|
||
* @apiError {String} message Payment add fail.
|
||
*
|
||
* @apiErrorExample Error-Response:
|
||
* HTTP/1.1 404 Not Found
|
||
* {
|
||
* "paymentmode": false,
|
||
* "message": "Payment add fail."
|
||
* }
|
||
*/
|
||
|
||
|
||
public function data_post() {
|
||
\modules\api\core\Apiinit::the_da_vinci_code('api');
|
||
|
||
// form validation
|
||
$this->form_validation->set_rules('invoiceid', 'Payment Name', 'trim|required|max_length[600]', array('is_unique' => 'This %s already exists please enter another Payment Name'));
|
||
$this->form_validation->set_rules('amount', 'Source', 'trim|required', array('is_unique' => 'This %s already exists please enter another Payment amount'));
|
||
$this->form_validation->set_rules('paymentmode', 'Status', 'trim|required', array('is_unique' => 'This %s already exists please enter another Status'));
|
||
if ($this->form_validation->run() == FALSE) {
|
||
// form validation error
|
||
$message = array('paymentmode' => FALSE, 'error' => $this->form_validation->error_array(), 'message' => validation_errors());
|
||
$this->response($message, REST_Controller::HTTP_NOT_FOUND);
|
||
} else {
|
||
$insert_data = [
|
||
'invoiceid' => $this->input->post('invoiceid', TRUE),
|
||
'amount' => $this->input->post('amount', TRUE),
|
||
'paymentmode' => $this->input->post('paymentmode', TRUE),
|
||
'paymentmethod' => $this->input->post('paymentmethod', TRUE),
|
||
'date' => date('Y-m-d H:i:s'), // Current date and time
|
||
'daterecorded' => date('Y-m-d H:i:s'), // Current date and time for recording
|
||
'note' => $this->input->post('note', TRUE), // Optional note
|
||
'transactionid' => $this->input->post('transactionid', TRUE)
|
||
]; if (!empty($this->input->post('custom_fields', TRUE))) {
|
||
$insert_data['custom_fields'] = $this->Api_model->value($this->input->post('custom_fields', TRUE));
|
||
}
|
||
// insert data
|
||
$this->load->model('payments_model');
|
||
$output = $this->payments_model->add($insert_data);
|
||
// το $output πρέπει να είναι το ID του νέου payment
|
||
if ($output > 0 && !empty($output)) {
|
||
// success
|
||
$this->handle_payment_attachments_array($output);
|
||
$message = array(
|
||
'status' => TRUE,
|
||
'message' => 'Payment add successful.',
|
||
'record_id' => $output // επιστρέφουμε το ID του νέου payment
|
||
);
|
||
$this->response($message, REST_Controller::HTTP_OK);
|
||
} else {
|
||
// error
|
||
$message = array('paymentmode' => FALSE, 'message' => 'Payment add fail.');
|
||
$this->response($message, REST_Controller::HTTP_NOT_FOUND);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|