diff --git a/app/Controllers/Books.php b/app/Controllers/Books.php index a8173f3f..3eac684a 100755 --- a/app/Controllers/Books.php +++ b/app/Controllers/Books.php @@ -63,44 +63,58 @@ class Books extends BaseController ## For inserting/updating details of book public function insert_books() { - try{ - helper('session'); - $session_uid = get_logged_user_id(); - $session_bid = get_business_id(); - - $BooksModel = new BooksModel(); - $data = [ - - 'title' => $this->request->getPost('title'), - - 'publication_date' => $this->request->getPost('publication_date'), - 'publisher' => $this->request->getPost('publisher'), - 'genre' => $this->request->getPost('genre'), - 'language' => $this->request->getPost('language'), - 'description' => $this->request->getPost('description'), - 'page_count' => $this->request->getPost('page_count'), - 'price' => $this->request->getPost('price'), - 'isbn_code' => $this->request->getPost('isbn_code'), - 'tax'=>$this->request->getPost('tax'), - 'business_id'=>$session_bid - - ]; - $book_id = $this->request->getPost('book_id'); // Get the book ID for update purpose - - if (empty($book_id)) { - // It's an insert operation - $data['isactive'] = 1; - $data['created_by'] = $session_uid; - $bookId = $BooksModel->insert($data); - - - // Retrieve the selected category ID from the form - $category_id = $this->request->getPost('category_id'); - - if ($category_id) { - // Insert the book-category association into the book_categories table - $BooksModel->db->table('book_categories')->insert(['book_id' => $bookId, 'category_id' => $category_id]); + $requested_details = $this->request->getPost(); + try{ + $session_uid = get_logged_user_id(); + $session_bid = get_business_id(); + $BooksModel = new BooksModel(); + $book_id = $requested_details['book_id']; + if (empty($book_id )) { + $requested_details['created_by'] = (int)$session_uid; + if ($BooksModel->insert($requested_details)) { + $book_id = $BooksModel->insertID(); + session()->setFlashdata('success', 'product successfully created.'); + $this->logger->info("Books: has been added successfully. Inserted ID = " . $book_id); + } else { + session()->setFlashdata('error', 'product could not be created. Please try again..'); + $this->logger->error("Books: Err could not be added. Please try again."); + } + } else { + $isactive = $this->request->getPost('isactive'); + $requested_details['isactive'] = ($isactive == 'on') ? 1 : 0; + $requested_details['updated_by'] = (int)$session_uid; + if ($BooksModel->update($book_id, $requested_details)) { + $book_affectedRows = $BooksModel->db->affectedRows(); + session()->setFlashdata('success', 'product successfully updated.'); + $this->logger->info("Books: has been updated successfully. Updated Book ID = " . $book_id . " Aff ".$book_affectedRows); + } else { + session()->setFlashdata('error', 'product updation failed. Please try again.'); + $this->logger->error("Books: Err Failed to update ID =" . $book_id); + } } + + ## book category section. + $category_id = $requested_details['category_id']; + if ($category_id) { + + $existingRecord = $BooksModel->db->table('book_categories') + ->where(['book_id'=> $book_id,'category_id'=> $category_id]) + ->get() + ->getRow(); + + if (!$existingRecord) { + $BooksModel->db->table('book_categories')->insert(['book_id' => $book_id, 'category_id' => $category_id]); + $book_categories_id = $BooksModel->db->insertID(); + $this->logger->info("Books Category : has been added successfully. Inserted ID = " . $book_categories_id); + }else{ + $existingRecordId = $existingRecord->id; + $BooksModel->db->table('book_categories')->where('id', $existingRecordId)->update(['isactive' => 1]); + $book_categories_affectedRows = $BooksModel->db->affectedRows(); + $this->logger->info("Books Category : has been updated successfully. Updated Book Category ID = " . $existingRecordId." Aff ".$book_categories_affectedRows); + } + } + + ##book image section. if (!empty($_FILES['img_name']['name'])) { // A new image has been uploaded @@ -111,7 +125,7 @@ class Books extends BaseController $imageData = [ - 'book_id' => $bookId, // Assuming $last_inserted_id contains the ID of the inserted scheme + 'book_id' => $book_id, // Assuming $last_inserted_id contains the ID of the inserted scheme 'img_name' => $_FILES['img_name']['name'], 'is_cover' => 1, // Set this based on your requirements 'type' => $_FILES['img_name']['type'] @@ -124,45 +138,11 @@ class Books extends BaseController // Update image data in the 'book_images' table $BooksModel->insertImage($imageData); } - // print_r($bookId); print_r($imageData); print_r($category_id);die; - - if ($BooksModel->insert($data)) { - session()->setFlashdata('success', 'product successfully created.'); - $this->logger->info("Books: has been added successfully. Inserted ID = " . $BooksModel->insertID()); - } else { - session()->setFlashdata('error', 'product could not be created. Please try again..'); - $this->logger->error("Books: Err could not be added. Please try again."); - } - } else { - // It's an update operation - $isactive = $this->request->getPost('isactive'); - $data['isactive'] = ($isactive == 'on') ? 1 : 0; - $data['updated_by'] = $session_uid; - $BooksModel->update($book_id, $data); - - // Retrieve the selected category ID from the form - $category_id = $this->request->getPost('category_id'); - - // Remove existing category associations - $BooksModel->db->table('book_categories')->where('book_id', $book_id)->delete(); - - if ($category_id) { - // Insert the book-category association into the book_categories table - $BooksModel->db->table('book_categories')->insert(['book_id' => $book_id, 'category_id' => $category_id]); - } - if ($BooksModel->update($book_id, $data)) { - session()->setFlashdata('success', 'product successfully updated.'); - $this->logger->info("Books: has been updated successfully. Updated Book ID = " . $book_id); - } else { - session()->setFlashdata('error', 'product updation failed. Please try again.'); - $this->logger->error("Books: Err Failed to update ID =" . $book_id); - } - } + } catch (\Exception $e) { $this->logger->error("Book: Err Occur = ".$e->getMessage()." File = ". $e->getFile() . " Line = " . $e->getLine()); session()->setFlashdata('error', 'Message: ' . $e->getMessage()); } - return redirect()->route('book_list'); } diff --git a/app/Models/BooksModel.php b/app/Models/BooksModel.php index e5948ed9..6a5a44c7 100644 --- a/app/Models/BooksModel.php +++ b/app/Models/BooksModel.php @@ -5,7 +5,7 @@ class BooksModel extends Model { protected $table = 'books'; protected $primaryKey = 'book_id'; - protected $allowedFields = ['book_id','title','cover_picture','publication_date','isbn_code','publisher','category','genre','language','description','page_count','tax','price','created_on','created_by','updated_on','updated_by','isactive','business_id']; + protected $allowedFields = ['book_id','author','publishers_code','title','cover_picture','publication_date','isbn_code','publisher','category','genre','language','description','page_count','tax','price','created_on','created_by','updated_on','updated_by','isactive','business_id']; public function saveData($data, $id = null) { @@ -30,7 +30,7 @@ class BooksModel extends Model public function getnonMembershiplist($business_id) { $builder = $this->builder(); - $builder->select('books.book_id, books.title, books.price, books.duration, books.isactive, books.publisher, books.genre, books.language, books.publication_date, GROUP_CONCAT(category.name SEPARATOR \',\') as name'); + $builder->select('books.book_id, books.wp_api_product_id, books.title, books.price, books.duration, books.isactive, books.publisher, books.genre, books.language, books.publication_date, GROUP_CONCAT(category.name SEPARATOR \',\') as name'); $builder->join('book_categories', 'book_categories.book_id = books.book_id and book_categories.isactive = 1', 'left'); $builder->join('category', 'category.id = book_categories.category_id', 'left'); $builder->where('books.business_id', $business_id); @@ -51,7 +51,8 @@ class BooksModel extends Model 'genre'=>$row->genre, 'language'=>$row->language, 'publication_date'=>$row->publication_date, - 'name'=>$row->name + 'name'=>$row->name, + 'wp_api_product_id'=>$row->wp_api_product_id ]; } @@ -78,8 +79,9 @@ public function getCategories() public function getBooksAndImagesByBookId($id) { $builder = $this->db->table('books'); - $builder->select('books.*, book_images.img_name, book_images.is_cover, book_images.type'); + $builder->select('books.*, book_images.img_name, book_images.is_cover, book_images.type,book_categories.category_id'); $builder->join('book_images', 'book_images.book_id = books.book_id', 'left'); + $builder->join('book_categories', 'book_categories.book_id = books.book_id', 'left'); $builder->where('books.book_id', $id); $query = $builder->get(); diff --git a/app/Views/book_form.php b/app/Views/book_form.php index 18b3fc6b..f0253106 100644 --- a/app/Views/book_form.php +++ b/app/Views/book_form.php @@ -1,7 +1,3 @@ - - -
-