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);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|