2024-12-25 03:04:59 +00:00
< ? php
namespace frontend\modules\histo\controllers ;
use Yii ;
use yii\db\Expression ;
use common\models\IdCaseForm ;
use common\models\CaseSurgical ;
use yii\data\ArrayDataProvider ;
use common\models\SurgicalSlide ;
use common\models\SurgicalCassettePrint ;
use common\models\SurgicalSpecialPrintDetail ;
use common\models\SurgicalCassettePrintDetail ;
use frontend\modules\histo\models\PrintSlideForm ;
use frontend\modules\histo\models\PrintBlockSearch ;
use frontend\modules\histo\models\PrintSlideSearch ;
use frontend\modules\histo\models\PrintSlideDayBetweenSearch ;
class PrintController extends \yii\web\Controller
{
public function actionCassette ()
{
$searchCase = new IdCaseForm ();
$session = Yii :: $app -> session ;
if ( ! $session [ 'gross' ]) {
$session [ 'gross' ] = null ;
}
if ( $searchCase -> load ( Yii :: $app -> request -> get ())) {
$session [ 'gross' ] = $searchCase -> id_case ;
}
$model = CaseSurgical :: findOne ([ 'id_case' => Yii :: $app -> session [ 'gross' ]]);
if ( $model ) {
if ( Yii :: $app -> request -> post ( 'selection' )) { // เมื่อมีการ Post ค่ามา
$selection = ( array ) Yii :: $app -> request -> post ( 'selection' ); // รับค่ามาเป็น array
$surgical_slide_print = ( array ) Yii :: $app -> request -> post ( 'SurgicalCassettePrint' ); // รับค่ามาเป็น array
//var_dump($selection);
//var_dump($surgical_slide_print);
//die();
//$content = [];
//var_dump(Yii::$app->request->post());
// die();
foreach ( $selection as $key => $value ) {
//var_dump($surgical_slide_print['items'][$value]['hopper']);
//die();
$surgical_slide = SurgicalSlide :: findOne ( $value );
$surgical_slide -> status = 1 ;
if ( $surgical_slide -> save ()) {
$surgical_cassette_print = new SurgicalCassettePrint ();
$surgical_cassette_print -> id_case = $model -> id_case ;
$surgical_cassette_print -> surgical_slide_id = $surgical_slide -> id ;
$surgical_cassette_print -> print_at = date ( 'Y-m-d H:i:s' );
$surgical_cassette_print -> print_by = Yii :: $app -> user -> getId ();
$filePath = '' ;
if ( $surgical_slide_print [ 'items' ][ $value ][ 'printer' ] == 1 ) {
// Actions to perform for 'print_slide1'
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print1/' . $model -> id_case . '_' . $surgical_slide -> no_slide . '_' . $surgical_slide -> id . '.txt' ;
// Other related actions...
}
if ( $surgical_slide_print [ 'items' ][ $value ][ 'printer' ] == 2 ) {
// Actions to perform for 'print_slide1'
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print2/' . $model -> id_case . '_' . $surgical_slide -> no_slide . '_' . $surgical_slide -> id . '.txt' ;
// Other related actions...
}
//$filePath = Yii::getAlias('@webroot') . '/surgical_slide_print1/' . $model->id_case . '_' . $surgical_slide->no_slide . '_' . $surgical_slide->id . '.txt'; // Specify the file path where you want to save the text
$parts = explode ( " - " , $model -> id_case );
// Split the string into an array of characters
$chars = str_split ( $parts [ 0 ]);
// Convert the array back to a string
$result = $chars [ 0 ] . ',' . $chars [ 1 ] . $chars [ 2 ] . ',-,' . $parts [ 1 ];
// Split no_slide the string into an array of characters
$parts1 = substr ( $surgical_slide -> no_slide , 0 , 1 );
$parts2 = substr ( $surgical_slide -> no_slide , 1 , 2 );
$chars1 = str_split ( $parts1 );
$chars2 = str_split ( $parts2 );
// Converting arrays to strings
$stringChars1 = implode ( " " , $chars1 );
$stringChars2 = implode ( " " , $chars2 );
//var_dump($chars1);
//die();
// Create the content you want to save in the file
//for ($i = 1; $i <= $surgical_slide->quantity; $i++) {
2025-03-25 17:48:16 +00:00
$print_arr = [ 1 => 'SR1 LIS' , 2 => 'SR2 LIS' ];
2024-12-25 03:04:59 +00:00
//$content = $result . ',' . $surgical_slide->no_slide . ',' . 'LP. PATH' . ',Hopper' . $surgical_slide_print['items'][$value]['hopper'] . ',Outlet' . $surgical_slide_print['items'][$value]['outlet'] . ',' . $print_arr[$surgical_slide_print['items'][$value]['printer']];
//$content = $model->id_case . $surgical_slide->no_slide . '$' . '$' . '0';
$content = $model -> id_case . $surgical_slide -> no_slide . '$' . $surgical_slide_print [ 'items' ][ $value ][ 'slide_remark' ] . '$' . $model -> given_name ;
// }
//$content = implode("\n", $content);
$surgical_cassette_print -> printer = $surgical_slide_print [ 'items' ][ $value ][ 'printer' ];
$surgical_cassette_print -> remark = $content ;
if ( $surgical_cassette_print -> save ()) {
Yii :: $app -> session -> addFlash ( 'success' , 'สั่งพิมพ์ Cassette: ' . $surgical_slide -> no_slide . ' แล้ว' );
// Save the content to the file
file_put_contents ( $filePath , $content , FILE_APPEND );
} else {
var_dump ( $surgical_cassette_print -> getFirstErrors ());
die ();
}
}
} // end foreach
return $this -> redirect ([ 'cassette' , 'IdCaseForm[id_case]' => $model -> id_case ]);
}
}
return $this -> render ( 'cassette' , [
'model' => $model ,
'searchCase' => $searchCase ,
]);
}
public function actionIndex ()
{
return $this -> render ( 'index' );
}
/*
public function actionSlidePrint ()
{
$searchCase = new PrintSlideForm ();
$session = Yii :: $app -> session ;
if ( ! $session [ 'slide' ]) {
$session [ 'slide' ] = null ;
}
if ( $searchCase -> load ( Yii :: $app -> request -> get ())) {
//$session['slide'] = $searchCase->id_case;
$session [ 'slide' ] = substr ( $searchCase -> id_case , 0 , 10 );
}
$model = CaseSurgical :: findOne ([ 'id_case' => Yii :: $app -> session [ 'slide' ]]);
if ( $model ) {
if ( Yii :: $app -> request -> post ( 'selection' )) {
$selection = ( array ) Yii :: $app -> request -> post ( 'selection' ); // รับค่ามาเป็น array
$surgical_slide_print = ( array ) Yii :: $app -> request -> post ( 'SurgicalCassettePrint' ); // รับค่ามาเป็น array
//var_dump($selection);
//var_dump($surgical_slide_print);
//die();
foreach ( $selection as $key => $value ) {
$surgical_cassette_print = new SurgicalCassettePrint ();
$surgical_cassette_print -> id_case = $model -> id_case ;
$surgical_cassette_print -> print_at = date ( 'Y-m-d H:i:s' );
$surgical_cassette_print -> print_by = Yii :: $app -> user -> getId ();
$filePath = '' ;
if ( $surgical_slide_print [ 'items' ][ $value ][ 'printer' ] == 1 ) {
// Actions to perform for 'print_slide1'
//$filePath = Yii::getAlias('@webroot') . '/surgical_block_print1/' . $model->id_case . '_' . $surgical_slide->no_slide . '_' . $surgical_slide->id . '.txt';
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print1/' . $model -> id_case . '_' ;
$filePath .= $value . '.txt' ;
// Other related actions...
}
if ( $surgical_slide_print [ 'items' ][ $value ][ 'printer' ] == 2 ) {
// Actions to perform for 'print_slide1'
//$filePath = Yii::getAlias('@webroot') . '/surgical_block_print2/' . $model->id_case . '_' . $surgical_slide->no_slide . '_' . $surgical_slide->id . '.txt';
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print2/' . $model -> id_case . '_' ;
$filePath .= $value . '.txt' ;
// Other related actions...
}
$content = $model -> id_case . $value . '$' . $surgical_slide_print [ 'items' ][ $value ][ 'slide_remark' ] . '$' . $model -> given_name ;
$surgical_cassette_print -> remark = $surgical_slide_print [ 'items' ][ $value ][ 'printer' ];
$surgical_cassette_print -> remark = $content ;
if ( $surgical_cassette_print -> save ()) {
Yii :: $app -> session -> addFlash ( 'success' , 'สั่งพิมพ์ Cassette: ' . $model -> id_case . ' ' . $value . ' แล้ว' );
// Save the content to the file
file_put_contents ( $filePath , $content , FILE_APPEND );
} else {
var_dump ( $surgical_cassette_print -> getFirstErrors ());
die ();
}
}
}
}
return $this -> render ( 'slide-print' , [
'searchCase' => $searchCase ,
'model' => $model ,
]);
}
*/
public function actionSlidePrint ()
{
$dataProvider = " " ;
$searchCase = new PrintSlideForm ();
$session = Yii :: $app -> session ;
// emty value
$search_id = null ;
$model = null ;
if ( ! $session [ 'slide' ]) {
$session [ 'slide' ] = null ;
}
if ( $searchCase -> load ( Yii :: $app -> request -> get ())) {
$session [ 'slide' ] = substr ( $searchCase -> id_case , 0 , 10 );
//slide_id
$search_id = substr ( $searchCase -> id_case , 0 , 10 );
//slide_no
$session [ 'slide_no' ] = '' ;
$split_no = substr ( $searchCase -> id_case , 10 , 11 );
$get_slide = str_split ( $split_no );
foreach ( $get_slide as $character ) {
$session [ 'slide_no' ] .= $character ;
}
$model = CaseSurgical :: findOne ([ 'id_case' => $search_id ]);
if ( $model ) {
//var_dump($model);
//die();
$surgical_cassette_print = new SurgicalCassettePrint ();
$surgical_cassette_print -> id_case = $model -> id_case ;
$surgical_cassette_print -> print_at = date ( 'Y-m-d H:i:s' );
$surgical_cassette_print -> print_by = Yii :: $app -> user -> getId ();
$filePath = '' ;
if ( $searchCase -> printer == 1 ) {
// Actions to perform for 'print_slide1'
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print1/' . $model -> id_case . '_' ;
$filePath .= $session [ 'slide_no' ] . '.txt' ;
// Other related actions...
}
if ( $searchCase -> printer == 2 ) {
// Actions to perform for 'print_slide1'
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print2/' . $model -> id_case . '_' ;
$filePath .= $session [ 'slide_no' ] . '.txt' ;
// Other related actions...
}
$content = $model -> id_case . $session [ 'slide_no' ] . '$' . '$' . $model -> given_name ;
//$content = $model->id_case . $value . '$' . $surgical_slide_print['items'][$value]['slide_remark'] . '$' . $model->given_name;
$surgical_cassette_print -> remark = $searchCase -> printer ;
$surgical_cassette_print -> remark = $content ;
$pattern = '/([A-Z#-])(\d+)/' ;
$print_id_case = $searchCase -> id_case ;
$arr = [];
if ( preg_match ( $pattern , $print_id_case , $matches_id )) {
$text = $matches_id [ 1 ];
$number = $matches_id [ 2 ];
}
// Split characters
$firstCharacters = substr ( $print_id_case , 0 , 10 );
$lastCharacters = substr ( $print_id_case , 10 , 11 );
$slide_id = str_split ( $firstCharacters );
$slide_no = str_split ( $lastCharacters );
// Converting arrays to strings
$stringChars1 = implode ( " " , $slide_id );
$stringChars2 = implode ( " " , $slide_no );
$arr [] = [
'id_case' => $stringChars1 ,
'slide_no' => $stringChars2 ,
];
$dataProvider = new ArrayDataProvider ([
'allModels' => $arr ,
]);
if ( $surgical_cassette_print -> save ()) {
/*
$surgical_cassette_print_detail = SurgicalCassettePrintDetail :: findOne ([ 'id_case' => $search_id , 'block_no' => $session [ 'slide_no' ]]);
$surgical_cassette_print_detail -> print_slide_at = date ( 'Y-m-d H:i:s' );
$surgical_cassette_print_detail -> save ();
*/
$surgical_cassette_print_detail = SurgicalCassettePrintDetail :: findOne ([ 'id_case' => $search_id , 'block_no' => $session [ 'slide_no' ]]);
if ( $surgical_cassette_print_detail === null ) {
echo " ไม่พบ Block " . $search_id . " " . $session [ 'slide_no' ];
//exit;
} else {
$surgical_cassette_print_detail -> print_slide_at = date ( 'Y-m-d H:i:s' );
$surgical_cassette_print_detail -> status = 2 ;
$surgical_cassette_print_detail -> save ();
}
Yii :: $app -> session -> addFlash ( 'success' , 'สั่งพิมพ์ Cassette: ' . $model -> id_case . ' ' . $session [ 'slide_no' ] . ' แล้ว' );
// Save the content to the file
file_put_contents ( $filePath , $content , FILE_APPEND );
} else {
var_dump ( $surgical_cassette_print -> getFirstErrors ());
die ();
}
}
}
return $this -> render ( 'slide-print' , [
'searchCase' => $searchCase ,
'model' => $model ,
'dataProvider' => $dataProvider ,
]);
}
public function actionPrintDay ()
{
$searchModel = new PrintBlockSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andFilterWhere ([ 'is' , 'print_slide_at' , new Expression ( 'NULL' )]);
$searchModel2 = new PrintSlideSearch ();
$dataProvider2 = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider2 -> query -> andFilterWhere ([ 'is not' , 'print_slide_at' , new Expression ( 'NULL' )]);
$searchModel3 = new PrintBlockSearch ();
$dataProvider3 = $searchModel -> search ( Yii :: $app -> request -> queryParams );
//$dataProvider3->query->andFilterWhere(['DATE(print_block_at)' => date('Y-m-d', strtotime('-1 day'))])->andFilterWhere(['status' => 1]);
$dataProvider3 -> query -> andFilterWhere ([ 'DATE(sent_slide_at)' => date ( 'Y-m-d' , strtotime ( '-1 day' ))]) -> andFilterWhere ([ 'status' => 1 ]);
//$dataProvider3->query->andFilterWhere(['>=', 'DATE(print_block_at)', date('Y-m-d', strtotime('-4 days'))])->andFilterWhere(['status' => 1]);
if ( Yii :: $app -> request -> post ( 'selection' )) { //แบบ selection
$selection = ( array ) Yii :: $app -> request -> post ( 'selection' ); //typecasting
foreach ( $selection as $id ) {
$surgical_cassette_print_detail = SurgicalCassettePrintDetail :: find ()
-> where ([ 'id' => $id ])
-> all ();
foreach ( $surgical_cassette_print_detail as $cs ) {
$hts = SurgicalCassettePrintDetail :: findOne ([ 'id' => $cs -> id ]);
$hts -> status = 2 ;
$hts -> save ();
}
}
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกเรียบร้อยแล้ว' );
return $this -> redirect ([ 'print-day' ]);
}
$searchModel4 = new PrintBlockSearch ();
$dataProvider4 = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider4 -> query -> andFilterWhere ([ 'DATE(print_slide_at)' => date ( 'Y-m-d' )]) -> andFilterWhere ([ 'status' => 2 ]);
return $this -> render ( 'print-day' , [
'searchModel' => $searchModel ,
'dataProvider' => $dataProvider ,
'searchModel2' => $searchModel2 ,
'dataProvider2' => $dataProvider2 ,
'searchModel3' => $searchModel3 ,
'dataProvider3' => $dataProvider3 ,
'searchModel4' => $searchModel4 ,
'dataProvider4' => $dataProvider4 ,
]);
}
public function actionSpecialPrint ()
{
$searchCase = new PrintSlideForm ();
$session = Yii :: $app -> session ;
if ( ! $session [ 'slide' ]) {
$session [ 'slide' ] = null ;
}
if ( $searchCase -> load ( Yii :: $app -> request -> get ())) {
//$session['slide'] = $searchCase->id_case;
$session [ 'slide' ] = substr ( $searchCase -> id_case , 0 , 10 );
}
$model = CaseSurgical :: findOne ([ 'id_case' => Yii :: $app -> session [ 'slide' ]]);
if ( $model ) {
if ( Yii :: $app -> request -> post ( 'selection' )) {
$selection = ( array ) Yii :: $app -> request -> post ( 'selection' ); // รับค่ามาเป็น array
$surgical_slide_print = ( array ) Yii :: $app -> request -> post ( 'SurgicalCassettePrint' ); // รับค่ามาเป็น array
//var_dump($selection);
//var_dump($surgical_slide_print);
//die();
foreach ( $selection as $key => $value ) {
$surgical_cassette_print = new SurgicalCassettePrint ();
$surgical_cassette_print -> id_case = $model -> id_case ;
$surgical_cassette_print -> print_at = date ( 'Y-m-d H:i:s' );
$surgical_cassette_print -> print_by = Yii :: $app -> user -> getId ();
$filePath = '' ;
if ( $surgical_slide_print [ 'items' ][ $value ][ 'printer' ] == 1 ) {
// Actions to perform for 'print_slide1'
//$filePath = Yii::getAlias('@webroot') . '/surgical_block_print1/' . $model->id_case . '_' . $surgical_slide->no_slide . '_' . $surgical_slide->id . '.txt';
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print1/' . $model -> id_case . '_' ;
$filePath .= $value . '.txt' ;
// Other related actions...
}
if ( $surgical_slide_print [ 'items' ][ $value ][ 'printer' ] == 2 ) {
// Actions to perform for 'print_slide1'
//$filePath = Yii::getAlias('@webroot') . '/surgical_block_print2/' . $model->id_case . '_' . $surgical_slide->no_slide . '_' . $surgical_slide->id . '.txt';
$filePath = Yii :: getAlias ( '@webroot' ) . '/surgical_slide_print2/' . $model -> id_case . '_' ;
$filePath .= $value . '.txt' ;
// Other related actions...
}
$content = $model -> id_case . $value . '$' . $surgical_slide_print [ 'items' ][ $value ][ 'slide_remark' ] . '$' . $model -> given_name ;
$surgical_cassette_print -> remark = $surgical_slide_print [ 'items' ][ $value ][ 'printer' ];
$surgical_cassette_print -> remark = $content ;
if ( $surgical_cassette_print -> save ()) {
$surgical_special_print_detail = new SurgicalSpecialPrintDetail ();
$surgical_special_print_detail -> surgical_cassette_print_id = $surgical_cassette_print -> id ;
$surgical_special_print_detail -> id_case = $model -> id_case ;
$surgical_special_print_detail -> block_no = $value ;
$surgical_special_print_detail -> type = 'special' ;
$surgical_special_print_detail -> remark = $surgical_slide_print [ 'items' ][ $value ][ 'slide_remark' ];
$surgical_special_print_detail -> print_slide_at = date ( 'Y-m-d H:i:s' );
$surgical_special_print_detail -> save ();
Yii :: $app -> session -> addFlash ( 'success' , 'สั่งพิมพ์ Cassette: ' . $model -> id_case . ' ' . $value . ' แล้ว' );
// Save the content to the file
file_put_contents ( $filePath , $content , FILE_APPEND );
} else {
var_dump ( $surgical_cassette_print -> getFirstErrors ());
die ();
}
}
}
}
return $this -> render ( 'special-print' , [
'searchCase' => $searchCase ,
'model' => $model ,
]);
}
public function actionDelete ( $id )
{
$model = SurgicalCassettePrintDetail :: findOne ([ 'id' => $id ]);
if ( ! $model ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่มี Case นี้ในระบบ' );
return $this -> redirect ([ 'print-day' ]);
}
if ( $model -> delete ()) {
//@unlink(Yii::getAlias('@webroot') . '/uploads/surgical/img/' . $model->file_path);
Yii :: $app -> session -> setFlash ( 'success' , 'ลบข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'print-day' ]);
}
return $this -> render ( 'print-day' );
}
public function actionSlideDayBetweenSearch ()
{
$searchModel = new PrintSlideDayBetweenSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andFilterWhere ([ 'is not' , 'print_slide_at' , new Expression ( 'NULL' )]);
return $this -> render ( 'slide-day-between-search' , [
'searchModel' => $searchModel ,
'dataProvider' => $dataProvider
]);
}
}