sanjeev
This commit is contained in:
parent
996016a2e6
commit
50736198ee
@ -107,8 +107,10 @@ $routes->get("delete_invoice/(:any)", "Invoice::delete_invoice/$1");
|
||||
|
||||
# Api integration Routes
|
||||
$routes->group("api", function ($routes) {
|
||||
$routes->post("create_products/", "ApiIntegration::save_book_details");
|
||||
$routes->post("create_customers/", "ApiIntegration::save_customer_details");
|
||||
// $routes->post("create_products/", "ApiIntegration::save_book_details");
|
||||
$routes->match(['put', 'post', 'get', 'delete'], 'products', 'ApiIntegration::book_api_integration');
|
||||
$routes->match(['put', 'post', 'get', 'delete'], 'customers', 'ApiIntegration::customer_api_integration');
|
||||
$routes->match(['put', 'post', 'get', 'delete'], 'orders', 'ApiIntegration::sales_api_integration');
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
@ -11,170 +11,825 @@ class ApiIntegration extends ResourceController
|
||||
{
|
||||
use ResponseTrait;
|
||||
|
||||
public function save_book_details()
|
||||
public function book_api_integration()
|
||||
{
|
||||
$request = \Config\Services::request();
|
||||
$message = "";
|
||||
try {
|
||||
switch ($this->request) {
|
||||
case $this->request->is('put'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/products?id=795;
|
||||
$records = (array)$this->request->getVar();
|
||||
$id = $this->request->getVar('id');
|
||||
if ($records['id'] == $id) {
|
||||
$response = $this->save_book_details($records, $id);
|
||||
} else {
|
||||
$response = ['status' => 404, 'message' => "ID Mismatched"];
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('PUT request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $this->request->is('post'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/products;
|
||||
$records = (array)$this->request->getVar();
|
||||
$wordpress_book_id = $records['id'];
|
||||
$response = $this->save_book_details($records, $wordpress_book_id);
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('POST request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $request->is('get'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/products?id=795;
|
||||
// $url = http://localhost/vb_book/api/products;
|
||||
$id = $this->request->getVar('id');
|
||||
if ($id) {
|
||||
$where = ['wp_api_product_id' => (int)$id, 'isactive' => 1];
|
||||
} else {
|
||||
$where = ['isactive' => 1];
|
||||
}
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$book_details = $api_model->setTable('books')->where($where);
|
||||
$response = ['status' => 200, 'message' => "Book Details", "data" => $book_details];
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('GET request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $request->is('delete'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/products?id=795;
|
||||
$id = $this->request->getVar('id');
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$where = ['isactive' => 1, 'wp_api_product_id' => (int)$id];
|
||||
$existing_book_data = $api_model->getData('books', $where);
|
||||
if ((int)count($existing_book_data) > 0) {
|
||||
$book_id = (int)$existing_book_data[0]->book_id;
|
||||
$inactive_data['isactive'] = 0;
|
||||
$update_where = ['isactive' => 1, 'book_id' => $book_id];
|
||||
$api_model->updateData('books', $inactive_data, $update_where);
|
||||
$getExistingBookImageDetails = $api_model->getData('book_images', $update_where);
|
||||
if ($getExistingBookImageDetails) {
|
||||
// $update_where = ['book_id' => $book_id];
|
||||
$api_model->updateData('book_images', $inactive_data, $update_where);
|
||||
}
|
||||
}
|
||||
$response = ['status' => 200, 'message' => "Book Details and Book Images Details Are Inactived"];
|
||||
} catch (\Exception $e) {
|
||||
// Handle DELETE-specific exception
|
||||
return $this->fail('DELETE request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new \Exception('Unsupported HTTP method');
|
||||
// return $this->fail('Unsupported HTTP method');
|
||||
}
|
||||
return $this->respond($response);
|
||||
} catch (\Exception $e) {
|
||||
// Handle the exception, you can log it or return an error response
|
||||
return $this->fail('An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
// return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function save_book_details($records, $wordpress_book_id)
|
||||
{
|
||||
|
||||
$request = \Config\Services::request();
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$message = "";
|
||||
$book_id = "";
|
||||
if (count($records) > 0 && !empty($wordpress_book_id)) {
|
||||
$where = ['wp_api_product_id' => $wordpress_book_id, 'isactive' => 1];
|
||||
$book_details = $api_model->setTable('books')->where($where)->first();
|
||||
if (isset($book_details['book_id']) && $book_details['book_id'] != "") {
|
||||
$book_id = $book_details['book_id'];
|
||||
$where['book_id'] = $book_details['book_id'];
|
||||
} // update means bookid where condition added : else no where condition added.
|
||||
|
||||
if ($request->is('post')) {
|
||||
$records = (array)$request->getVar();
|
||||
if (count($records) > 0 && $records['status'] == "publish" && !empty($records['id'])) {
|
||||
$where = ['wp_api_id' => $records['id']];
|
||||
$countAll = $api_model->countAll('books', $where);
|
||||
if ((int)$countAll == 0) {
|
||||
$publisher = '';
|
||||
$language = '';
|
||||
$attributes = $records['attributes'];
|
||||
if (count($attributes) > 0) {
|
||||
foreach ($attributes as $att) {
|
||||
if ($att->name == "Publisher") {
|
||||
$publisher = implode(", ", $att->options);
|
||||
}
|
||||
if ($att->name == "Book Author") {
|
||||
$publisher .= implode(", ", $att->options) . "(Book Author)";
|
||||
}
|
||||
if ($att->name == "Book Language") {
|
||||
$language = implode(", ", $att->options);
|
||||
|
||||
$countAll = $api_model->countAll('books', $where);
|
||||
$publisher = '';
|
||||
$language = '';
|
||||
$attributes = $records['attributes'];
|
||||
if (count($attributes) > 0) {
|
||||
foreach ($attributes as $att) {
|
||||
if (isset($att->name) && $att->name == "Publisher") {
|
||||
$publisher = implode(", ", $att->options);
|
||||
}
|
||||
if (isset($att->name) && $att->name == "Book Author") {
|
||||
$publisher .= implode(", ", $att->options) . "(Book Author)";
|
||||
}
|
||||
if (isset($att->name) && $att->name == "Book Language") {
|
||||
$language = implode(", ", $att->options);
|
||||
}
|
||||
}
|
||||
}
|
||||
$book_data['wp_api_product_id'] = $wordpress_book_id;
|
||||
$book_data['title'] = isset($records['name']) ? $records['name'] : "";
|
||||
$book_data['publication_date'] = isset($records['date_created']) ? $records['date_created'] : "";
|
||||
$book_data['publisher'] = $publisher;
|
||||
$book_data['genre'] = "";
|
||||
$book_data['language'] = $language;
|
||||
$book_data['description'] = isset($records['description']) ? $records['description'] : "";
|
||||
$book_data['page_count'] = '';
|
||||
$book_data['price'] = (isset($records['sale_price']) && $records['sale_price'] != '') ? $records['sale_price'] : ((isset($records['regular_price']) && $records['regular_price'] != '') ? $records['regular_price'] : NULL);
|
||||
$book_data['isactive'] = 1;
|
||||
$book_data['business_id'] = 1;
|
||||
$images = $records['images'];
|
||||
|
||||
$i = 0;
|
||||
if ((int)$countAll == 0) {
|
||||
$insert_result = $api_model->insertData('books', $book_data);
|
||||
$last_insert_book_id = $insert_result['info'];
|
||||
$message .= $insert_result['info'] ? "Book id : " . $insert_result['info']
|
||||
: "Err :" . $insert_result['err'];
|
||||
} else {
|
||||
$last_insert_book_id = $book_id;
|
||||
$book_where = ['book_id' => $book_id, 'isactive' => 1, 'wp_api_product_id' => $wordpress_book_id];
|
||||
$update_result = $api_model->updateData('books', $book_data, $book_where);
|
||||
$message .= $update_result['info'] ? "Book id : " . $last_insert_book_id . " ( " . $update_result['info'] . ")"
|
||||
: " ( Err :" . $update_result['err'] . ")";
|
||||
}
|
||||
|
||||
$book_image_data = [];
|
||||
|
||||
if (count($images) > 0 && $last_insert_book_id != "") {
|
||||
$message .= " Its have " . count($images) . " Images ,";
|
||||
$where = ['book_id' => (int)$last_insert_book_id, 'isactive' => 1];
|
||||
$existing_images = $api_model->getData('book_images', $where);
|
||||
$request_images = (array)$images;
|
||||
|
||||
$filteringExistingImagesWpApiId = [];
|
||||
$filteringRequestedImagesWpApiId = [];
|
||||
$commonElements = [];
|
||||
if (!empty($existing_images)) {
|
||||
|
||||
for ($z = 0; $z < count($request_images); $z++) {
|
||||
$filteringRequestedImagesWpApiId[$z] = $request_images[$z]->id;
|
||||
}
|
||||
for ($y = 0; $y < count($existing_images); $y++) {
|
||||
$filteringExistingImagesWpApiId[$y] = $existing_images[$y]->wp_api_img_id;
|
||||
}
|
||||
|
||||
if (!empty($filteringExistingImagesWpApiId)) {
|
||||
$A = $filteringExistingImagesWpApiId;
|
||||
$B = $filteringRequestedImagesWpApiId;
|
||||
$missingValues = array_diff($A, $B); //Find difference element in Existing Images only
|
||||
$commonElements = array_intersect($A, $B);
|
||||
if (!empty($missingValues)) {
|
||||
$inactive_where = ['isactive' => 1, 'book_id' => (int)$last_insert_book_id];
|
||||
$inactive_whereIn[0] = 'wp_api_img_id';
|
||||
$inactive_whereIn[1] = $missingValues;
|
||||
$api_model->inactiveMissingDetails('book_images', $inactive_where, $inactive_whereIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$where = ['book_id' => (int)$last_insert_book_id, 'isactive' => 1];
|
||||
if (!empty($commonElements)) {
|
||||
$whereIn[0] = 'wp_api_img_id';
|
||||
$whereIn[1] = $commonElements;
|
||||
} else {
|
||||
$whereIn = null;
|
||||
}
|
||||
$lastestActiveBookImageData = $api_model->getData('book_images', $where, $whereIn);
|
||||
|
||||
foreach ($images as $img) {
|
||||
$bookImgId = null;
|
||||
// Iterate through the array and find the 'book_img_id' based on 'wp_api_img_id'
|
||||
if (!empty($lastestActiveBookImageData)) {
|
||||
foreach ($lastestActiveBookImageData as $item) {
|
||||
if ($item->wp_api_img_id == $img->id) {
|
||||
$bookImgId = $item->book_img_id;
|
||||
break; // Found the match, no need to continue looping
|
||||
}
|
||||
}
|
||||
}
|
||||
$insertion_data['wp_api_id'] = $records['id'];
|
||||
$insertion_data['title'] = $records['name'];
|
||||
$insertion_data['publication_date'] = $records['date_created'];
|
||||
$insertion_data['publisher'] = $publisher;
|
||||
$insertion_data['genre'] = $records['description'];
|
||||
$insertion_data['language'] = $language;
|
||||
$insertion_data['description'] = $records['short_description'];
|
||||
$insertion_data['page_count'] = '';
|
||||
$insertion_data['price'] = $records['sale_price'] != '' ? $records['sale_price'] : $records['regular_price'];
|
||||
$insertion_data['created_by'] = 77;
|
||||
$insertion_data['isactive'] = 1;
|
||||
$insertion_data['business_id'] = 1;
|
||||
$images = $records['images'];
|
||||
$i = 0;
|
||||
$lastInsertId = $api_model->insertData('books', $insertion_data);
|
||||
$insertion_img_data = [];
|
||||
$message .= "book ID : " . $lastInsertId . " have Imgs" . count($images) . " <br/>";
|
||||
// echo "book ID : ".$lastInsertId." have Imgs".count($images)." <br/>";
|
||||
if (count($images) > 0) {
|
||||
foreach ($images as $img) {
|
||||
$insertion_img_data[$i]['img_name'] = $img->src;
|
||||
$insertion_img_data[$i]['is_cover'] = 0;
|
||||
$insertion_img_data[$i]['type'] = 2;
|
||||
$insertion_img_data[$i]['book_id'] = $lastInsertId;
|
||||
$insertion_img_data[$i]['created_by'] = 777;
|
||||
$insertion_img_data[$i]['isactive'] = 1;
|
||||
$i++;
|
||||
} // image loop closed
|
||||
$api_model->insertImagesBatch($insertion_img_data);
|
||||
$message .= "book ID : " . $lastInsertId . " Img. Batch Inserted Done <br/>";
|
||||
// echo "       Img Batch Inserted Done. ".$i. " <br/>";
|
||||
} //image count closed
|
||||
$response = ['status' => 200, 'message' => $message, 'data' => array()];
|
||||
} else {
|
||||
$response = ['status' => 204, 'message' => 'Data Already Exist', 'data' => array()];
|
||||
}
|
||||
} //if cond. closed
|
||||
} else {
|
||||
$response = ['status' => 204, 'message' => 'Invaild Method', 'data' => array()];
|
||||
$book_image_data[$i]['img_name'] = $img->src;
|
||||
$book_image_data[$i]['is_cover'] = 0;
|
||||
$book_image_data[$i]['type'] = 2;
|
||||
$book_image_data[$i]['book_id'] = $last_insert_book_id;
|
||||
$book_image_data[$i]['isactive'] = 1;
|
||||
$book_image_data[$i]['wp_api_img_id'] = $img->id;
|
||||
$book_image_data[$i]['book_img_id'] = $bookImgId;
|
||||
$i++;
|
||||
} // image loop closed
|
||||
$message .= (!empty($book_image_data) ? $api_model->insertAndUpdateChildDetails($book_image_data, 'book_images', 'book_img_id') : []);
|
||||
} //image count closed
|
||||
$response = ['status' => 200, 'message' => $message];
|
||||
} //if cond. closed
|
||||
else {
|
||||
$response = ['status' => 204, 'message' => 'Data No Found'];
|
||||
}
|
||||
return $this->respond($response);
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function save_customer_details()
|
||||
{
|
||||
|
||||
public function customer_api_integration()
|
||||
{
|
||||
$request = \Config\Services::request();
|
||||
$message = "";
|
||||
try {
|
||||
switch ($this->request) {
|
||||
case $this->request->is('put'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/customers?id=795;
|
||||
$records = (array)$this->request->getVar();
|
||||
$id = $this->request->getVar('id');
|
||||
if ($records['id'] == $id) {
|
||||
$response = $this->save_customer_details($records, $id);
|
||||
} else {
|
||||
$response = ['status' => 404, 'message' => "ID Mismatched"];
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('PUT request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $this->request->is('post'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/customers;
|
||||
$records = (array)$this->request->getVar();
|
||||
$wordpress_customer_id = $records['id'];
|
||||
$response = $this->save_customer_details($records, $wordpress_customer_id);
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('POST request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $request->is('get'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/customers?id=795;
|
||||
// $url = http://localhost/vb_book/api/customers;
|
||||
$id = $this->request->getVar('id');
|
||||
if ($id) {
|
||||
$where = ['wp_api_customer_id' => (int)$id, 'isactive' => 1];
|
||||
} else {
|
||||
$where = ['isactive' => 1];
|
||||
}
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$customer_details = $api_model->setTable('customers')->where($where);
|
||||
$response = ['status' => 200, 'message' => "Customer Details", "data" => $customer_details];
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('GET request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $request->is('delete'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/customers?id=795;
|
||||
$id = $this->request->getVar('id');
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$where = ['isactive' => 1, 'wp_api_customer_id' => (int)$id];
|
||||
$existing_customer_data = $api_model->getData('customers', $where);
|
||||
if ((int)count($existing_customer_data) > 0) {
|
||||
$customer_id = (int)$existing_customer_data[0]->customer_id;
|
||||
$inactive_data['isactive'] = 0;
|
||||
$update_where = ['isactive' => 1, 'customer_id' => $customer_id];
|
||||
$api_model->updateData('customers', $inactive_data, $update_where);
|
||||
$getExistingCustomerImageDetails = $api_model->getData('customer_addresses', $update_where);
|
||||
if ($getExistingCustomerImageDetails) {
|
||||
|
||||
$api_model->updateData('customer_addresses', $inactive_data, $update_where);
|
||||
}
|
||||
}
|
||||
$response = ['status' => 200, 'message' => "customer Details and Customer Addresses Details Are Inactived"];
|
||||
} catch (\Exception $e) {
|
||||
// Handle DELETE-specific exception
|
||||
return $this->fail('DELETE request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new \Exception('Unsupported HTTP method');
|
||||
// return $this->fail('Unsupported HTTP method');
|
||||
}
|
||||
return $this->respond($response);
|
||||
} catch (\Exception $e) {
|
||||
// Handle the exception, you can log it or return an error response
|
||||
return $this->fail('An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
// return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function save_customer_details($records, $wordpress_customer_id)
|
||||
{
|
||||
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$message = "";
|
||||
$customer_id = "";
|
||||
if (count($records) > 0 && !empty($wordpress_customer_id)) {
|
||||
$where = ['wp_api_customer_id' => $wordpress_customer_id, 'isactive' => 1];
|
||||
$customer_details = $api_model->setTable('customers')->where($where)->first();
|
||||
if (isset($customer_details['customer_id']) && $customer_details['customer_id'] != "") {
|
||||
$customer_id = $customer_details['customer_id'];
|
||||
$where['customer_id'] = $customer_details['customer_id'];
|
||||
}
|
||||
$countAll = $api_model->countAll('customers', $where);
|
||||
|
||||
if ($request->is('post')) {
|
||||
$records = (array)$request->getVar();
|
||||
$message = "Reponse Count : ".count($records)." <br/>";
|
||||
$x=0;
|
||||
$records = (array)$request->getVar();
|
||||
if (count($records) > 0 && !empty($records['id'])) {
|
||||
$where = ['wp_api_id' => $records['id']];
|
||||
$countAll = $api_model->countAll('customers', $where);
|
||||
if ((int)$countAll == 0) {
|
||||
$insertion_data['wp_api_id'] = $records['id'];
|
||||
$insertion_data['first_name'] = $records['first_name'];
|
||||
$insertion_data['last_name'] = $records['last_name'];
|
||||
$insertion_data['type'] = $records['role'];
|
||||
$insertion_data['email'] = $records['email'];
|
||||
$insertion_data['mode'] = 'online';
|
||||
$insertion_data['created_by'] = 777;
|
||||
$insertion_data['business_id'] = 7;
|
||||
$billing = $records['billing'];
|
||||
$shipping = $records['shipping'];
|
||||
$lastInsertId = $api_model->insertData('customers', $insertion_data);
|
||||
$insertion_baddress_data = [];$insertion_saddress_data = [];
|
||||
$i = 0; $j = 0;
|
||||
|
||||
if(isset($billing) && gettype($billing) === 'object') {$billing = [$billing];}
|
||||
if(isset($shipping) && gettype($shipping) === 'object') {$shipping = [$shipping];}
|
||||
$message .= "Customer ID : ".$lastInsertId." have Billing address = ".count($billing)." and Shipping address = ".count($shipping)." <br/>";
|
||||
if (count($billing) > 0) {
|
||||
foreach ($billing as $bill) {
|
||||
if ($bill->first_name !== '') {
|
||||
$insertion_baddress_data[$i]['first_name'] = $bill->first_name;
|
||||
$insertion_baddress_data[$i]['last_name'] = $bill->last_name;
|
||||
$insertion_baddress_data[$i]['company'] = $bill->company;
|
||||
$insertion_baddress_data[$i]['address_1'] = $bill->address_1;
|
||||
$insertion_baddress_data[$i]['address_2'] = $bill->address_2;
|
||||
$insertion_baddress_data[$i]['city'] = $bill->city;
|
||||
$insertion_baddress_data[$i]['state'] = $bill->state;
|
||||
$insertion_baddress_data[$i]['country'] = $bill->country;
|
||||
$insertion_baddress_data[$i]['postal_code'] = $bill->postcode;
|
||||
$insertion_baddress_data[$i]['customer_id'] = $lastInsertId;
|
||||
$insertion_baddress_data[$i]['address_type'] = 1;
|
||||
$insertion_baddress_data[$i]['created_by'] = 777;
|
||||
$insertion_baddress_data[$i]['email'] = isset($bill->email) ? $bill->email : '';
|
||||
$insertion_baddress_data[$i]['mobile_no'] = isset($bill->phone) ? $bill->phone : '';
|
||||
$i++;
|
||||
$message .= "       Billing address has a value and Inserted ".$i." <br/>";
|
||||
}else{
|
||||
$message .= "       Keys are available but Billing address has no value; <br/>";
|
||||
}
|
||||
}
|
||||
(!empty($insertion_baddress_data) ? $api_model->insertAddressBatch($insertion_baddress_data) : "");
|
||||
}
|
||||
if (count($shipping) > 0) {
|
||||
foreach ($shipping as $ship) {
|
||||
if ($ship->first_name !== '') {
|
||||
$insertion_saddress_data[$j]['first_name'] = $ship->first_name;
|
||||
$insertion_saddress_data[$j]['last_name'] = $ship->last_name;
|
||||
$insertion_saddress_data[$j]['company'] = $ship->company;
|
||||
$insertion_saddress_data[$j]['address_1'] = $ship->address_1;
|
||||
$insertion_saddress_data[$j]['address_2'] = $ship->address_2;
|
||||
$insertion_saddress_data[$j]['city'] = $ship->city;
|
||||
$insertion_saddress_data[$j]['state'] = $ship->state;
|
||||
$insertion_saddress_data[$j]['country'] = $ship->country;
|
||||
$insertion_saddress_data[$j]['postal_code'] = $ship->postcode;
|
||||
$insertion_saddress_data[$j]['email'] = isset($ship->email)?$ship->email:"";
|
||||
$insertion_saddress_data[$j]['mobile_no'] = isset($ship->phone)?$ship->phone:"";
|
||||
$insertion_saddress_data[$j]['customer_id'] = $lastInsertId;
|
||||
$insertion_saddress_data[$j]['address_type'] = 2;
|
||||
$insertion_saddress_data[$j]['created_by'] = 777;
|
||||
$j++;
|
||||
$message .= "        Shipping address has a value and Inserted ".$j." <br/>";
|
||||
}
|
||||
else{
|
||||
$message .= "        Keys are available but Shipping address has no value <br/>";
|
||||
}
|
||||
}
|
||||
(!empty($insertion_saddress_data) ? $api_model->insertAddressBatch($insertion_saddress_data) : "");
|
||||
}
|
||||
$response = ['status' => 200, 'message' => $message, 'data' => array()];
|
||||
} else {
|
||||
$response = ['status' => 204, 'message' => 'Data Already Exist', 'data' => array()];
|
||||
$customer_data['first_name'] = $records['first_name'];
|
||||
$customer_data['last_name'] = $records['last_name'];
|
||||
$customer_data['type'] = $records['role'];
|
||||
$customer_data['email'] = $records['email'];
|
||||
$customer_data['profile_picture'] = $records['avatar_url'];
|
||||
$customer_data['wp_api_customer_id'] = $wordpress_customer_id;
|
||||
$customer_data['mode'] = 'online';
|
||||
$customer_data['business_id'] = 1;
|
||||
$billing = $records['billing'];
|
||||
|
||||
$shipping = $records['shipping'];
|
||||
|
||||
if ((int)$countAll == 0) {
|
||||
$insert_result = $api_model->insertData('customers', $customer_data);
|
||||
$last_insert_customer_id = $insert_result['info'];
|
||||
$message .= $insert_result['info'] ? "Customer id : " . $insert_result['info']
|
||||
: "Err :" . $insert_result['err'];
|
||||
} else {
|
||||
$last_insert_customer_id = $customer_id;
|
||||
$customer_where = ['customer_id' => $customer_id, 'isactive' => 1, 'wp_api_customer_id' => $wordpress_customer_id];
|
||||
$update_result = $api_model->updateData('customers', $customer_data, $customer_where);
|
||||
$message .= $update_result['info'] ? "Customer id : " . $last_insert_customer_id . " ( " . $update_result['info'] . ")"
|
||||
: " ( Err :" . $update_result['err'] . ")";
|
||||
}
|
||||
|
||||
$i = 0; $customer_billing_address_data = [];
|
||||
$j = 0; $customer_shipping_address_data = [];
|
||||
|
||||
if(isset($billing) && gettype($billing) === 'object') {$billing = [$billing];}
|
||||
if(isset($shipping) && gettype($shipping) === 'object') {$shipping = [$shipping];}
|
||||
// echo "Customer ID : ".$last_insert_customer_id." have Billing address = ".count($billing)." and Shipping address = ".count($shipping)." <br/>";
|
||||
|
||||
if (count($billing) > 0 && $last_insert_customer_id != "") {
|
||||
|
||||
$message .= " Its have " . count($billing) . " Billing address ,";
|
||||
|
||||
$where = ['customer_id' => (int)$last_insert_customer_id, 'isactive' => 1, 'address_type'=>1];
|
||||
$existing_billing = $api_model->getData('customer_addresses', $where);
|
||||
$request_billing = (array)$billing;
|
||||
|
||||
$filteringExistingBillingAddress = [];
|
||||
$filteringRequestedBillingAddress = [];
|
||||
$commonBillingElements = [];
|
||||
if (!empty($existing_billing)) {
|
||||
|
||||
for ($z = 0; $z < count($request_billing); $z++) {
|
||||
$filteringRequestedBillingAddress[$z] = $request_billing[$z]->address_1;
|
||||
}
|
||||
for ($y = 0; $y < count($existing_billing); $y++) {
|
||||
$filteringExistingBillingAddress[$y] = $existing_billing[$y]->address_1;
|
||||
}
|
||||
|
||||
if (!empty($filteringExistingBillingAddress)) {
|
||||
$A = $filteringExistingBillingAddress;
|
||||
$B = $filteringRequestedBillingAddress;
|
||||
$missingBillingValues = array_diff($A, $B); //Find difference element in Existing Images only
|
||||
$commonBillingElements = array_intersect($A, $B);
|
||||
if (!empty($missingBillingValues)) {
|
||||
$inactive_where = ['isactive' => 1, 'customer_id' => (int)$last_insert_customer_id,'address_type'=>1];
|
||||
$inactive_whereIn[0] = 'address_1';
|
||||
$inactive_whereIn[1] = $missingBillingValues;
|
||||
$api_model->inactiveMissingDetails('customer_addresses', $inactive_where, $inactive_whereIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //reponse count if closed
|
||||
}else{
|
||||
$response = ['status' => 204, 'message' => 'Invaild Method', 'data' => array()];
|
||||
}
|
||||
return $this->respond($response);
|
||||
}
|
||||
|
||||
$where = ['customer_id' => (int)$last_insert_customer_id, 'isactive' => 1,'address_type'=>1];
|
||||
if (!empty($commonBillingElements)) {
|
||||
$whereIn[0] = 'address_1';
|
||||
$whereIn[1] = $commonBillingElements;
|
||||
} else {
|
||||
$whereIn = null;
|
||||
}
|
||||
$lastestActiveBillingAdressData = $api_model->getData('customer_addresses', $where, $whereIn);
|
||||
|
||||
foreach ($billing as $bill) {
|
||||
$billingAddressId = null;
|
||||
if ($bill->first_name != '') {
|
||||
if (!empty($lastestActiveBillingAdressData)) {
|
||||
foreach ($lastestActiveBillingAdressData as $item) {
|
||||
if ($item->address_1 == $bill->address_1) {
|
||||
$billingAddressId = $item->customer_address_id;
|
||||
break; // Found the match, no need to continue looping
|
||||
}
|
||||
}
|
||||
}
|
||||
$customer_billing_address_data[$i]['first_name'] = $bill->first_name;
|
||||
$customer_billing_address_data[$i]['last_name'] = $bill->last_name;
|
||||
$customer_billing_address_data[$i]['company'] = $bill->company;
|
||||
$customer_billing_address_data[$i]['address_1'] = $bill->address_1;
|
||||
$customer_billing_address_data[$i]['address_2'] = $bill->address_2;
|
||||
$customer_billing_address_data[$i]['city'] = $bill->city;
|
||||
$customer_billing_address_data[$i]['state'] = $bill->state;
|
||||
$customer_billing_address_data[$i]['country'] = $bill->country;
|
||||
$customer_billing_address_data[$i]['postal_code'] = $bill->postcode;
|
||||
$customer_billing_address_data[$i]['customer_id'] = $last_insert_customer_id;
|
||||
$customer_billing_address_data[$i]['address_type'] = 1;
|
||||
$customer_billing_address_data[$i]['email'] = isset($bill->email) ? $bill->email : '';
|
||||
$customer_billing_address_data[$i]['mobile_no'] = isset($bill->phone) ? $bill->phone : '';
|
||||
$customer_billing_address_data[$i]['customer_address_id'] = $billingAddressId;
|
||||
$i++;
|
||||
// echo "       Billing address has a value and Inserted ".$i." <br/>";
|
||||
}else{
|
||||
// echo "       Keys are available but Billing address has no value; <br/>";
|
||||
}
|
||||
}
|
||||
$message .= (!empty($customer_billing_address_data) ? $api_model->insertAndUpdateChildDetails($customer_billing_address_data, 'customer_addresses', 'customer_address_id') : []);
|
||||
|
||||
}
|
||||
if (count($shipping) > 0 && $last_insert_customer_id != "") {
|
||||
$message .= " Its have " . count($shipping) . " Shipping address ,";
|
||||
$where = ['customer_id' => (int)$last_insert_customer_id, 'isactive' => 1, 'address_type'=>2];
|
||||
$existing_shipping = $api_model->getData('customer_addresses', $where);
|
||||
$request_shipping = (array)$shipping;
|
||||
|
||||
$filteringExistingShippingAddress = [];
|
||||
$filteringRequestedShippingAddress = [];
|
||||
$commonShippingElements = [];
|
||||
if (!empty($existing_shipping)) {
|
||||
|
||||
for ($z = 0; $z < count($request_shipping); $z++) {
|
||||
$filteringRequestedShippingAddress[$z] = $request_shipping[$z]->address_1;
|
||||
}
|
||||
for ($y = 0; $y < count($existing_shipping); $y++) {
|
||||
$filteringExistingShippingAddress[$y] = $existing_shipping[$y]->address_1;
|
||||
}
|
||||
|
||||
if (!empty($filteringExistingShippingAddress)) {
|
||||
$A = $filteringExistingShippingAddress;
|
||||
$B = $filteringRequestedShippingAddress;
|
||||
$missingShippingValues = array_diff($A, $B); //Find difference element in Existing Images only
|
||||
$commonShippingElements = array_intersect($A, $B);
|
||||
if (!empty($missingShippingValues)) {
|
||||
$inactive_where = ['isactive' => 1, 'customer_id' => (int)$last_insert_customer_id, 'address_type'=>2];
|
||||
$inactive_whereIn[0] = 'address_1';
|
||||
$inactive_whereIn[1] = $missingShippingValues;
|
||||
$api_model->inactiveMissingDetails('customer_addresses', $inactive_where, $inactive_whereIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$where = ['customer_id' => (int)$last_insert_customer_id, 'isactive' => 1 ,'address_type'=>2];
|
||||
if (!empty($commonShippingElements)) {
|
||||
$whereIn[0] = 'address_1';
|
||||
$whereIn[1] = $commonShippingElements;
|
||||
} else {
|
||||
$whereIn = null;
|
||||
}
|
||||
$lastestActiveShippingAdressData = $api_model->getData('customer_addresses', $where, $whereIn);
|
||||
|
||||
foreach ($shipping as $ship) {
|
||||
$shippingAddressId = null;
|
||||
if ($ship->first_name !== '') {
|
||||
if (!empty($lastestActiveShippingAdressData)) {
|
||||
foreach ($lastestActiveShippingAdressData as $item) {
|
||||
if ($item->address_1 == $ship->address_1) {
|
||||
$shippingAddressId = $item->customer_address_id;
|
||||
break; // Found the match, no need to continue looping
|
||||
}
|
||||
}
|
||||
}
|
||||
$customer_shipping_address_data[$j]['first_name'] = $ship->first_name;
|
||||
$customer_shipping_address_data[$j]['last_name'] = $ship->last_name;
|
||||
$customer_shipping_address_data[$j]['company'] = $ship->company;
|
||||
$customer_shipping_address_data[$j]['address_1'] = $ship->address_1;
|
||||
$customer_shipping_address_data[$j]['address_2'] = $ship->address_2;
|
||||
$customer_shipping_address_data[$j]['city'] = $ship->city;
|
||||
$customer_shipping_address_data[$j]['state'] = $ship->state;
|
||||
$customer_shipping_address_data[$j]['country'] = $ship->country;
|
||||
$customer_shipping_address_data[$j]['postal_code'] = $ship->postcode;
|
||||
$customer_shipping_address_data[$j]['email'] = isset($ship->email)?$ship->email:"";
|
||||
$customer_shipping_address_data[$j]['mobile_no'] = isset($ship->phone)?$ship->phone:"";
|
||||
$customer_shipping_address_data[$j]['customer_id'] = $last_insert_customer_id;
|
||||
$customer_shipping_address_data[$j]['address_type'] = 2;
|
||||
$customer_shipping_address_data[$j]['customer_address_id'] = $shippingAddressId;
|
||||
$j++;
|
||||
// echo "        Shipping address has a value and Inserted ".$j." <br/>";
|
||||
}
|
||||
else{
|
||||
// echo "        Keys are available but Shipping address has no value <br/>";
|
||||
}
|
||||
}
|
||||
$message .= (!empty($customer_shipping_address_data) ? $api_model->insertAndUpdateChildDetails($customer_shipping_address_data, 'customer_addresses', 'customer_address_id') : []);
|
||||
}
|
||||
$response = ['status' => 200, 'message' => $message];
|
||||
} //if cond. closed
|
||||
else {
|
||||
$response = ['status' => 204, 'message' => 'Data No Found'];
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function sales_api_integration()
|
||||
{
|
||||
$request = \Config\Services::request();
|
||||
$message = "";
|
||||
try {
|
||||
switch ($this->request) {
|
||||
case $this->request->is('put'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/orders?id=795;
|
||||
$records = (array)$this->request->getVar();
|
||||
$id = $this->request->getVar('id');
|
||||
if ($records['id'] == $id) {
|
||||
$response = $this->save_sales_details($records, $id);
|
||||
} else {
|
||||
$response = ['status' => 404, 'message' => "ID Mismatched"];
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('PUT request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $this->request->is('post'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/orders;
|
||||
$records = (array)$this->request->getVar();
|
||||
$wordpress_order_id = $records['id'];
|
||||
$response = $this->save_sales_details($records, $wordpress_order_id);
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('POST request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $request->is('get'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/orders?id=795;
|
||||
// $url = http://localhost/vb_book/api/orders;
|
||||
$id = $this->request->getVar('id');
|
||||
if ($id) {
|
||||
$where = ['wp_api_order_id' => (int)$id, 'isactive' => 1];
|
||||
} else {
|
||||
$where = ['isactive' => 1];
|
||||
}
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$invoice_details = $api_model->setTable('invoice')->where($where);
|
||||
$response = ['status' => 200, 'message' => "Invoice Details", "data" => $invoice_details];
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail('GET request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
case $request->is('delete'):
|
||||
try {
|
||||
// $url = http://localhost/vb_book/api/orders?id=795;
|
||||
$id = $this->request->getVar('id');
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$where = ['isactive' => 1, 'wp_api_order_id' => (int)$id];
|
||||
$existing_invoice_data = $api_model->getData('invoice', $where);
|
||||
if ((int)count($existing_invoice_data) > 0) {
|
||||
$invoice_id = (int)$existing_invoice_data[0]->invoice_id;
|
||||
$inactive_data['isactive'] = 0;
|
||||
$update_where = ['isactive' => 1, 'invoice_id' => $invoice_id];
|
||||
$api_model->updateData('invoice', $inactive_data, $update_where);
|
||||
$getExistingInvoiceItemsDetails = $api_model->getData('invoiceitems', $update_where);
|
||||
if ($getExistingInvoiceItemsDetails) {
|
||||
$api_model->updateData('invoiceitems', $inactive_data, $update_where);
|
||||
}
|
||||
}
|
||||
$response = ['status' => 200, 'message' => "Invoice Details and Invoice Items Details Are Inactived"];
|
||||
} catch (\Exception $e) {
|
||||
// Handle DELETE-specific exception
|
||||
return $this->fail('DELETE request failed, An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new \Exception('Unsupported HTTP method');
|
||||
// return $this->fail('Unsupported HTTP method');
|
||||
}
|
||||
return $this->respond($response);
|
||||
} catch (\Exception $e) {
|
||||
// Handle the exception, you can log it or return an error response
|
||||
return $this->fail('An error occurred on line ' . $e->getline() . ': ' . $e->getMessage());
|
||||
// return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function save_sales_details($records, $wordpress_order_id){
|
||||
$api_model = new ApiIntegrationModel();
|
||||
$message = "";
|
||||
$invoice_id = "";
|
||||
if (count($records) > 0 && !empty($wordpress_order_id)) {
|
||||
$where = ['wp_api_order_id' => $wordpress_order_id, 'isactive' => 1];
|
||||
$invoice_details = $api_model->setTable('invoice')->where($where)->first();
|
||||
if (isset($invoice_details['invoice_id']) && $invoice_details['invoice_id'] != "") {
|
||||
$invoice_id = $invoice_details['invoice_id'];
|
||||
$where['invoice_id'] = (int)$invoice_id;
|
||||
}
|
||||
$countAll = $api_model->countAll('invoice', $where);
|
||||
$billing_addr = "";$shipping_addr = "";
|
||||
$lineitems_array = [];
|
||||
$billing_array = []; $shipping_array = [];
|
||||
$lineitems_subtotal = 0; $lineitems_tax = 0;
|
||||
$lineitems_discount = 0; $lineitems_total=0;
|
||||
|
||||
// $line_items = ;
|
||||
|
||||
if(isset($records['billing']) && gettype($records['billing']) === 'object') {$billing_array = [$records['billing']];}
|
||||
if(isset($records['shipping']) && gettype($records['shipping']) === 'object') {$shipping_array = [$records['shipping']];}
|
||||
|
||||
if (count($billing_array) > 0) {
|
||||
foreach ($billing_array as $bill) {
|
||||
$billing_addr = $bill->address_1 .",". $bill->address_2 . "," . $bill->city . "," . $bill->state . "," . $bill->country . "." . $bill->postcode;
|
||||
}
|
||||
}
|
||||
if (count($shipping_array) > 0) {
|
||||
foreach ($shipping_array as $ship) {
|
||||
$shipping_addr = $ship->address_1 .",". $ship->address_2 . "," . $ship->city . "," . $ship->state . "," . $ship->country . "." . $ship->postcode;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($records['line_items']) > 0) {
|
||||
// echo count($records['line_items']);die;
|
||||
$lineitems_array = $records['line_items'];
|
||||
foreach ($lineitems_array as $item) {
|
||||
$lineitems_subtotal += (float)$item->subtotal;
|
||||
$lineitems_tax += (float)$item->total_tax;
|
||||
}
|
||||
$lineitems_total += ((float)$lineitems_subtotal + (float)$lineitems_tax) - (float)$lineitems_discount;
|
||||
}
|
||||
|
||||
$subtotal = $lineitems_subtotal + (float)$records['shipping_total'];
|
||||
$tax = $lineitems_tax + (float)$records['shipping_tax'];
|
||||
$total = ($lineitems_total)+(float)$records['shipping_total'] + (float)$records['shipping_tax'];
|
||||
|
||||
$invoice_data['invoice_id']=$invoice_id;
|
||||
$invoice_data['invoice_number']=$records['number'];
|
||||
$invoice_data['customer_id']=$records['customer_id'];
|
||||
$invoice_data['wp_api_order_id']=$records['id'];
|
||||
$invoice_data['invoice_date']=date("Y-m-d", strtotime($records['date_created']));
|
||||
$invoice_data['due_date']=NULL;
|
||||
$invoice_data['subtotal']=number_format($subtotal, 2);
|
||||
$invoice_data['tax']=number_format($tax, 2);
|
||||
$invoice_data['discount']=number_format($lineitems_discount, 2);
|
||||
$invoice_data['total_amount']= number_format($total, 2);
|
||||
$invoice_data['payment_status']="";
|
||||
$invoice_data['order_number']=$records['order_key'];
|
||||
$invoice_data['payment_method']=$records['payment_method'];
|
||||
$invoice_data['event_id']=NULL;
|
||||
$invoice_data['business_id']=1;
|
||||
$invoice_data['shipping_address']=$shipping_addr;
|
||||
$invoice_data['shipping_address_id']=NULL;
|
||||
$invoice_data['billing_address']=$billing_addr;
|
||||
$invoice_data['billing_address_id'] =NULL;
|
||||
|
||||
if ((int)$countAll == 0) {
|
||||
$insert_result = $api_model->insertData('invoice', $invoice_data);
|
||||
$last_insert_invoice_id = $insert_result['info'];
|
||||
$message .= $insert_result['info'] ? "Invoice id : " . $insert_result['info']
|
||||
: "Err :" . $insert_result['err'];
|
||||
} else {
|
||||
$last_insert_invoice_id = $invoice_id;
|
||||
$customer_where = ['invoice_id' => $invoice_id, 'isactive' => 1, 'wp_api_order_id' => $wordpress_order_id];
|
||||
$update_result = $api_model->updateData('invoice', $invoice_data, $customer_where);
|
||||
$message .= $update_result['info'] ? "Invoice id : " . $last_insert_invoice_id . " ( " . $update_result['info'] . ")"
|
||||
: " ( Err :" . $update_result['err'] . ")";
|
||||
}
|
||||
|
||||
$line_item_data = [];
|
||||
$shipping_line_item_data = [];
|
||||
$i = 0;$j=0;
|
||||
if (count($lineitems_array) > 0 && $last_insert_invoice_id != "") {
|
||||
$message .= " Its have " . count($lineitems_array) . " LineItems ,";
|
||||
$where = ['invoice_id' => (int)$last_insert_invoice_id, 'isactive' => 1];
|
||||
$existing_invoiceitem = $api_model->getData('invoiceitems', $where);
|
||||
$request_invoiceitem = (array)$lineitems_array;
|
||||
|
||||
$filteringExistingInvoiceItemWpApiId = [];
|
||||
$filteringRequestedInvoiceItemWpApiId = [];
|
||||
$commonElements = [];
|
||||
if (!empty($existing_invoiceitem)) {
|
||||
|
||||
for ($z = 0; $z < count($request_invoiceitem); $z++) {
|
||||
$filteringRequestedInvoiceItemWpApiId[$z] = $request_invoiceitem[$z]->id;
|
||||
}
|
||||
for ($y = 0; $y < count($existing_invoiceitem); $y++) {
|
||||
$filteringExistingInvoiceItemWpApiId[$y] = $existing_invoiceitem[$y]->wp_api_line_items_id;
|
||||
}
|
||||
|
||||
if (!empty($filteringExistingInvoiceItemWpApiId)) {
|
||||
$A = $filteringExistingInvoiceItemWpApiId;
|
||||
$B = $filteringRequestedInvoiceItemWpApiId;
|
||||
$missingValues = array_diff($A, $B); //Find difference element in Existing Images only
|
||||
$commonElements = array_intersect($A, $B);
|
||||
if (!empty($missingValues)) {
|
||||
$inactive_where = ['isactive' => 1, 'invoice_id' => (int)$last_insert_invoice_id];
|
||||
$inactive_whereIn[0] = 'wp_api_line_items_id';
|
||||
$inactive_whereIn[1] = $missingValues;
|
||||
$api_model->inactiveMissingDetails('invoiceitems', $inactive_where, $inactive_whereIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$where = ['invoice_id' => (int)$last_insert_invoice_id, 'isactive' => 1];
|
||||
if (!empty($commonElements)) {
|
||||
$whereIn[0] = 'wp_api_line_items_id';
|
||||
$whereIn[1] = $commonElements;
|
||||
} else {
|
||||
$whereIn = null;
|
||||
}
|
||||
$lastestActiveInvoiceitemsData = $api_model->getData('invoiceitems', $where, $whereIn);
|
||||
|
||||
foreach ($lineitems_array as $ii) {
|
||||
$invoiceItemsId = null;
|
||||
|
||||
// Iterate through the array and find the 'book_img_id' based on 'wp_api_img_id'
|
||||
if (!empty($lastestActiveInvoiceitemsData)) {
|
||||
foreach ($lastestActiveInvoiceitemsData as $item) {
|
||||
if ($item->wp_api_line_items_id == $ii->id) {
|
||||
$invoiceItemsId = $item->invoice_child_id;
|
||||
break; // Found the match, no need to continue looping
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$where = ['wp_api_product_id' => (int)$ii->product_id];
|
||||
$get_book_data_based_on_wp_product_id = $api_model->getData('books', $where);
|
||||
|
||||
$line_item_data[$i]['product'] = (!empty($get_book_data_based_on_wp_product_id) ? $get_book_data_based_on_wp_product_id[0]->book_id : NULL);
|
||||
$line_item_data[$i]['quantity'] =(float)$ii->quantity;
|
||||
$line_item_data[$i]['unit_price'] =(float)$ii->price;
|
||||
$line_item_data[$i]['tax'] =(float)$ii->total_tax;
|
||||
$line_item_data[$i]['subtotal'] =(float)$ii->total;
|
||||
$line_item_data[$i]['invoice_child_id'] = $invoiceItemsId;
|
||||
$line_item_data[$i]['wp_api_line_items_id'] = $ii->id;
|
||||
$line_item_data[$i]['invoice_id'] = $last_insert_invoice_id;
|
||||
$i++;
|
||||
} // line item loop closed
|
||||
$message .= (!empty($line_item_data) ? $api_model->insertAndUpdateChildDetails($line_item_data, 'invoiceitems', 'invoice_child_id') : []);
|
||||
|
||||
|
||||
}
|
||||
$shipping_lineitems_array = $records['shipping_lines'];
|
||||
if (count($shipping_lineitems_array) > 0 && $last_insert_invoice_id != "") {
|
||||
$message .= " Its have " . count($shipping_lineitems_array) . " shipping details ,";
|
||||
$where = ['invoice_id' => (int)$last_insert_invoice_id, 'isactive' => 1];
|
||||
$existing_shipping_invoiceitem = $api_model->getData('invoiceitems', $where);
|
||||
$request_shipping_invoiceitem = (array)$shipping_lineitems_array;
|
||||
|
||||
$filteringExistingShippingInvoiceItemWpApiId = [];
|
||||
$filteringRequestedShippingInvoiceItemWpApiId = [];
|
||||
$commonShippingElements = [];
|
||||
if (!empty($existing_shipping_invoiceitem)) {
|
||||
|
||||
for ($z = 0; $z < count($request_shipping_invoiceitem); $z++) {
|
||||
$filteringRequestedShippingInvoiceItemWpApiId[$z] = $request_shipping_invoiceitem[$z]->id;
|
||||
}
|
||||
for ($y = 0; $y < count($existing_shipping_invoiceitem); $y++) {
|
||||
$filteringExistingShippingInvoiceItemWpApiId[$y] = $existing_shipping_invoiceitem[$y]->wp_api_line_items_id;
|
||||
}
|
||||
|
||||
if (!empty($filteringExistingShippingInvoiceItemWpApiId)) {
|
||||
$A = $filteringExistingShippingInvoiceItemWpApiId;
|
||||
$B = $filteringRequestedShippingInvoiceItemWpApiId;
|
||||
$missingShippingValues = array_diff($A, $B); //Find difference element in Existing Images only
|
||||
$commonShippingElements = array_intersect($A, $B);
|
||||
if (!empty($missingShippingValues)) {
|
||||
$inactive_where = ['isactive' => 1, 'invoice_id' => (int)$last_insert_invoice_id];
|
||||
$inactive_whereIn[0] = 'wp_api_line_items_id';
|
||||
$inactive_whereIn[1] = $missingShippingValues;
|
||||
$api_model->inactiveMissingDetails('invoiceitems', $inactive_where, $inactive_whereIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$where = ['invoice_id' => (int)$last_insert_invoice_id, 'isactive' => 1];
|
||||
if (!empty($commonShippingElements)) {
|
||||
$whereIn[0] = 'wp_api_line_items_id';
|
||||
$whereIn[1] = $commonShippingElements;
|
||||
} else {
|
||||
$whereIn = null;
|
||||
}
|
||||
$lastestActiveShippingInvoiceitemsData = $api_model->getData('invoiceitems', $where, $whereIn);
|
||||
|
||||
foreach ($shipping_lineitems_array as $sii) {
|
||||
$shippingInvoiceItemsId = null;
|
||||
|
||||
// Iterate through the array and find the 'book_img_id' based on 'wp_api_img_id'
|
||||
if (!empty($lastestActiveShippingInvoiceitemsData)) {
|
||||
foreach ($lastestActiveShippingInvoiceitemsData as $item) {
|
||||
if ($item->wp_api_line_items_id == $sii->id) {
|
||||
$shippingInvoiceItemsId = $item->invoice_child_id;
|
||||
break; // Found the match, no need to continue looping
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$where = ['title' => (int)$sii->method_title];
|
||||
$get_book_data_based_on_title = $api_model->getData('books', $where);
|
||||
|
||||
$shipping_line_item_data[$j]['product'] = (!empty($get_book_data_based_on_title) ? $get_book_data_based_on_title[0]->book_id : NULL);
|
||||
$shipping_line_item_data[$j]['quantity'] = 0;
|
||||
$shipping_line_item_data[$j]['unit_price'] =0;
|
||||
$shipping_line_item_data[$j]['tax'] =(float)$sii->total_tax;
|
||||
$shipping_line_item_data[$j]['subtotal'] =(float)$sii->total;
|
||||
$shipping_line_item_data[$j]['invoice_child_id'] = $shippingInvoiceItemsId;
|
||||
$shipping_line_item_data[$j]['wp_api_line_items_id'] = $sii->id;
|
||||
$shipping_line_item_data[$j]['invoice_id'] = $last_insert_invoice_id;
|
||||
$j++;
|
||||
} // line item loop closed
|
||||
$message .= (!empty($shipping_line_item_data) ? $api_model->insertAndUpdateChildDetails($shipping_line_item_data, 'invoiceitems', 'invoice_child_id') : []);
|
||||
}
|
||||
$response = ['status' => 200, 'message' => $message];
|
||||
}
|
||||
else {
|
||||
$response = ['status' => 204, 'message' => 'Data No Found'];
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -15,17 +15,28 @@ class ApiIntegrationModel extends Model
|
||||
|
||||
public function insertData($table, $data)
|
||||
{
|
||||
$this->db->table($table)->insert($data);
|
||||
$last_insert_id = $this->db->insertID();
|
||||
return $last_insert_id;
|
||||
|
||||
try {
|
||||
$this->db->table($table)->insert($data);
|
||||
$last_insert_id = $this->db->insertID();
|
||||
return ["info"=>$last_insert_id,"err"=>""];
|
||||
} catch (\CodeIgniter\Database\Exceptions\DatabaseException $e) {
|
||||
return ["info"=>"","err"=>'Database operation failed: ' . $e->getMessage()];
|
||||
} catch (\Exception $e) {
|
||||
return ["info"=>"","err"=>'An error occurred: ' . $e->getMessage()];
|
||||
}
|
||||
}
|
||||
|
||||
public function updateData($table, $data, $where)
|
||||
{
|
||||
$this->db->table($table)->update($data, $where);
|
||||
$affected_rows = $this->db->affectedRows();
|
||||
return $affected_rows;
|
||||
try {
|
||||
$this->db->table($table)->update($data, $where);
|
||||
$affected_rows = $this->db->affectedRows();
|
||||
return ["info"=>$affected_rows." Affected","err"=>""];
|
||||
} catch (\CodeIgniter\Database\Exceptions\DatabaseException $e) {
|
||||
return ["info"=>"","err"=>'Database operation failed: ' . $e->getMessage()];
|
||||
} catch (\Exception $e) {
|
||||
return ["info"=>"","err"=>'Database operation failed: ' . $e->getMessage()];
|
||||
}
|
||||
}
|
||||
|
||||
public function countAll($table, $where = null)
|
||||
@ -38,37 +49,43 @@ class ApiIntegrationModel extends Model
|
||||
}
|
||||
|
||||
|
||||
public function getData($table, $where = null)
|
||||
public function getData($table, $where = null,$whereIn = null)
|
||||
{
|
||||
$query = $this->db->table($table);
|
||||
if ($where) {
|
||||
$query->where($where);
|
||||
}
|
||||
if($whereIn){
|
||||
// $query->whereIn($column_name,$missingValues)
|
||||
$query->whereIn($whereIn[0],$whereIn[1]);
|
||||
}
|
||||
return $query->get()->getResult();
|
||||
}
|
||||
|
||||
public function insertImagesBatch($imgDataArray) {
|
||||
$this->db->table('book_images')->insertBatch($imgDataArray);
|
||||
public function insertAndUpdateChildDetails($data,$table_name,$column_name){
|
||||
$i = 1;
|
||||
$text = ' Child-table Name = '.str_replace("_", " ",ucwords($table_name)) .', Column = '.str_replace("_", " ",ucwords($column_name)) .'. ';
|
||||
foreach ($data as $row) {
|
||||
$id = isset($row[$column_name]) ? $row[$column_name] : "";
|
||||
if($id != ''){
|
||||
unset($row[$column_name]); // Remove the primary Id from the data to avoid updating it.
|
||||
$where = [$column_name=>$id,'isactive'=>1];
|
||||
$child_affected_rows = $this->updateData($table_name, $row, $where);
|
||||
$text .= $child_affected_rows["info"] ? $i.') Id = '.$id.', '.$child_affected_rows["info"].'. '
|
||||
: $i.') Id = '.$id.', Err = '.$child_affected_rows["err"].'. ';
|
||||
}else{
|
||||
$child_insert_id = $this->insertData($table_name, $row);
|
||||
$text .= $child_insert_id["info"] ? $i.') Inserted ID = '.$child_insert_id["info"].'. '
|
||||
: $i.') Err = '.$child_insert_id["err"].'. ' ;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
public function saveAddressDetails($data){
|
||||
$i = 0;
|
||||
$statement = [];
|
||||
foreach ($data as $row) {
|
||||
$id = $row['customer_address_id'];
|
||||
if($id != ''){
|
||||
unset($row['customer_address_id']); // Remove the id from the data to avoid updating it
|
||||
unset($row['created_by']); // bcoz here data Updating here.
|
||||
$this->db->table('customer_addresses')->where('customer_address_id', $id)->update($row);// Update the row with the specified id
|
||||
$affectedRows = $this->db->affectedRows();
|
||||
$statement[$i] = "address - ".$id." ".$affectedRows ? " Updated":" Not Updated";
|
||||
}else{
|
||||
|
||||
$this->db->table('customer_addresses')->insert($row);
|
||||
$insertID = $this->db->insertID();
|
||||
$statement[$i] = "address - ".$insertID." Inserted";
|
||||
}
|
||||
}
|
||||
return $statement;
|
||||
public function inactiveMissingDetails($table_name,$where,$whereIn){
|
||||
$dataToUpdate = ['isactive' => 0];
|
||||
$this->db->table($table_name)->where($where)->whereIn($whereIn[0],$whereIn[1])->update($dataToUpdate);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user