2023-09-17 19:12:00 +00:00
< ? php
namespace Romanah\Gokbakja\Components ;
use Cms\Classes\ComponentBase ;
2023-09-18 20:22:50 +00:00
use Romanah\Gokbakja\Models\Product as ProductModel ;
2023-09-17 19:12:00 +00:00
use Romanah\Gokbakja\Models\Production as ProductionModel ;
2023-10-18 21:12:32 +00:00
use Romanah\Gokbakja\Models\ProductionCalculate as ProductionCalculateModel ;
2023-10-10 22:29:27 +00:00
use Romanah\Gokbakja\Models\Excruiter as ExcruiterModel ;
2023-10-18 21:12:32 +00:00
use Romanah\Gokbakja\Models\Shift as ShiftModel ;
2023-09-23 20:10:26 +00:00
use Romanah\Gokbakja\Models\ProductionMachine as ProductionMachineModel ;
2023-09-17 19:12:00 +00:00
use Romanah\Gokbakja\Models\PivotProduction as PivotProductionModel ;
use Redirect ;
2023-09-30 21:55:49 +00:00
use Carbon\Carbon ;
2023-09-17 19:12:00 +00:00
use Flash ;
2023-10-02 22:15:33 +00:00
use DB ;
2023-10-10 22:29:27 +00:00
use October\Rain\Support\Facades\Flash as FacadesFlash ;
2023-10-18 21:12:32 +00:00
use Romanah\Gokbakja\Controllers\Excruiter ;
2023-09-17 19:12:00 +00:00
class Production extends ComponentBase
{
public function componentDetails ()
{
return [
'name' => 'Production' ,
'description' => 'productions settings'
];
}
2023-10-02 22:15:33 +00:00
2023-10-10 22:29:27 +00:00
public function onReportProduction ()
{
$currentDate = Carbon :: now () -> timezone ( 'UTC +05:00' );
$currentDateFormat = $currentDate -> format ( 'Y-m-d' );
$data = post ();
2023-10-11 22:11:21 +00:00
2023-10-10 22:29:27 +00:00
$productions = ProductionModel :: with ([ 'pivot_production' , 'excruiter' , 'shift' ]) -> orderBy ( 'id' , 'DESC' );
2023-10-11 16:29:51 +00:00
$productionsCalc = ProductionModel :: orderBy ( 'id' , 'DESC' );
2023-10-10 22:29:27 +00:00
$start = Carbon :: parse ( $data [ " start " ]) -> format ( 'Y-m-d' );
$end = Carbon :: parse ( $data [ " end " ]) -> format ( 'Y-m-d' );
2023-10-11 22:11:21 +00:00
if ( $start == $currentDateFormat ) {
Flash :: error ( " Sene Saylan! " );
} else {
$startView = Carbon :: parse ( $data [ " start " ]) -> format ( 'd.m.Y' );
$endView = Carbon :: parse ( $data [ " end " ]) -> format ( 'd.m.Y' );
2023-10-10 22:29:27 +00:00
2023-10-11 22:11:21 +00:00
$excruiter = $data [ " excruiter_id " ];
$shiftId = $data [ " shift_id " ];
2023-10-10 22:29:27 +00:00
2023-10-11 22:11:21 +00:00
if ( $excruiter ) {
$productions -> where ( " excruiter_id " , $excruiter );
$productionsCalc -> where ( " excruiter_id " , $excruiter );
}
2023-10-10 22:29:27 +00:00
2023-10-11 22:11:21 +00:00
if ( $shiftId ) {
$productions -> where ( " shift_id " , $shiftId );
$productionsCalc -> where ( " shift_id " , $shiftId );
}
if ( $start != $currentDateFormat ) {
$productions -> whereBetween ( 'created_at' , [ $start , $end ]);
2023-10-11 16:29:51 +00:00
2023-10-11 22:11:21 +00:00
$calc = $productionsCalc -> select ( DB :: raw ( 'MAX(all_amount) - MIN(all_amount) AS amount_subtraction' ), DB :: raw ( 'MAX(all_amount) AS max_amount' ), DB :: raw ( 'MIN(all_amount) AS min_amount' ), DB :: raw ( 'MAX(time) AS max_time' ), DB :: raw ( 'MIN(time) AS min_time' ))
-> whereBetween ( 'created_at' , [ $start , $end ]) -> first ();
2023-10-11 16:29:51 +00:00
2023-10-11 22:11:21 +00:00
$diffMinutes = Carbon :: parse ( $calc -> max_time ) -> diffInMinutes ( $calc -> min_time );
$calcTimeDiff = floor ( $diffMinutes / 60 ) . ' sagat ' . ( $diffMinutes - floor ( $diffMinutes / 60 ) * 60 ) . ' minut' ;
// dd($max);
// $min = $productions->select(DB::raw("MIN(id)"));
2023-10-11 16:29:51 +00:00
2023-10-11 22:11:21 +00:00
}
2023-10-10 22:29:27 +00:00
2023-10-11 22:11:21 +00:00
$productionsFiltered = $productions -> get ();
2023-10-10 22:29:27 +00:00
2023-10-11 16:29:51 +00:00
2023-10-11 22:11:21 +00:00
$html_data = '' ;
for ( $x = 0 ; $x < count ( $productionsFiltered ); $x ++ ) {
// dd($productionsFiltered[0]->shift->desc);
$html_data .= ' < tr >
< td style = " font-weight: bold;width: 5%; " > ' . ($x + 1) . ' </ td >
< td >< a href = " # " style = " font-weight: bold;color: #0005c5; " > ' . $productionsFiltered[$x]->created_at->format("d.m.Y | H:i") . ' </ a ></ td >
< td >< a href = " # " style = " font-weight: bold;color: #1e2038; " > ' . $productionsFiltered[$x]->shift->desc . ' </ a ></ td >
< td style = " text-align: center; " >
< span class = " badge badge-soft-info "
style = " font-size: 14px; " > ' . $productionsFiltered[$x]->excruiter->name . ' </ span >
</ td >
< td style = " text-align: center; " >
< span class = " badge badge-soft-success "
style = " font-size: 14px; " > ' . number_format($productionsFiltered[$x]->all_amount) . ' kg </ span >
</ td > ' ;
2023-10-10 22:29:27 +00:00
for ( $i = 0 ; $i < count ( $productionsFiltered [ $x ] -> pivot_production ); $i ++ ) {
2023-10-11 22:11:21 +00:00
$html_data .= '<td> <a href="#">' . number_format ( $productionsFiltered [ $x ] -> pivot_production [ $i ] -> amount_percentage ) . '% </a></td>' ;
2023-10-10 22:29:27 +00:00
}
2023-10-11 22:11:21 +00:00
$html_data .= '<td style="font-weight: bold;color: #0005c5;">' . $productionsFiltered [ $x ] -> note . ' </ td >
</ tr > ' ;
}
2023-10-10 22:29:27 +00:00
2023-10-11 22:11:21 +00:00
if ( $productionsFiltered ) {
return [
'#production_report_datas' => $html_data ,
// '#exampleModalFullscreenLabel' => '<font style="color: darkgreen;text-decoration: underline;font-weight: bold;">'. $startView .' - '. $endView .'</font> seneleri aralygynda güni jemi',
'#report_dynamic' => ' < div class = " col-md-4 " >
< h3 class = " card-title " style = " font-size: 22px;color: #1e2038; " > Çig Mallar Boýunça Umumy </ h3 >
< p class = " card-title-desc " style = " color: #6c6ff5; " > Hasabat </ p >
</ div >
< div class = " col-md-4 " >
< div class = " card bg-info text-white-50 " >
< div class = " card-body " >
< h5 class = " text-white " style = " text-transform: uppercase;margin-bottom: 0; " >< i class = " mdi mdi-bullseye-arrow me-3 " ></ i > Sarp Edilen Wagt : ' . $calcTimeDiff . ' sany </ h5 >
</ div >
2023-10-11 16:29:51 +00:00
</ div >
</ div >
2023-10-11 22:11:21 +00:00
< div class = " col-md-4 " >
< div class = " card bg-info text-white-50 " >
< div class = " card-body " >
< h5 class = " text-white " style = " text-transform: uppercase;margin-bottom: 0; " >< i class = " mdi mdi-bullseye-arrow me-3 " ></ i > Sarp Edilen Çig mal : ' . number_format($calc->amount_subtraction) . ' kg </ h5 >
</ div >
2023-10-11 16:29:51 +00:00
</ div >
</ div >
2023-10-11 22:11:21 +00:00
'
];
} else {
Flash :: error ( " Yalnyshlyk bar!! " );
}
2023-10-10 22:29:27 +00:00
}
}
2023-10-02 22:15:33 +00:00
public function onCalculateReportDaily ()
{
$currentDate = Carbon :: now () -> timezone ( 'UTC +05:00' );
$currentDateFormat = $currentDate -> format ( 'Y-m-d' );
$data = post ();
$excruiter = $this -> param ( " excruiter " );
2023-10-18 21:12:32 +00:00
$currentExcrutier = ExcruiterModel :: where ( " id " , $excruiter ) -> first ();
2023-10-02 22:15:33 +00:00
2023-10-11 16:29:51 +00:00
$productionsCalc = ProductionModel :: orderBy ( 'id' , 'DESC' );
2023-10-18 21:12:32 +00:00
$calc = $productionsCalc -> select ( DB :: raw ( 'MAX(time) AS max_time' ), DB :: raw ( 'MIN(time) AS min_time' ))
-> whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiter ) -> first ();
2023-10-11 16:29:51 +00:00
$diffMinutes = Carbon :: parse ( $calc -> max_time ) -> diffInMinutes ( $calc -> min_time );
2023-10-18 21:12:32 +00:00
$timeCalc = floor ( $diffMinutes / 60 ) . ' sagat ' . ( $diffMinutes - floor ( $diffMinutes / 60 ) * 60 ) . ' minut' ;
2023-10-02 22:15:33 +00:00
2023-10-18 21:12:32 +00:00
$countDailyChanges = ProductionModel :: whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiter ) -> get ();
2023-10-02 22:15:33 +00:00
2023-10-18 21:12:32 +00:00
$products = ProductModel :: where ( 'report' , 'simple' ) -> get ();
// dd(count($countDailyChanges));
2023-10-02 22:15:33 +00:00
2023-10-18 21:12:32 +00:00
if ( count ( $countDailyChanges ) > 1 ) {
2023-10-02 22:15:33 +00:00
2023-10-18 21:12:32 +00:00
$dailyCalculated = ProductionCalculateModel :: whereDate ( " date " , date ( $currentDateFormat )) -> where ( " excruiter_id " , $excruiter ) -> sum ( " amount_calc " );
2023-10-02 22:15:33 +00:00
2023-10-18 21:12:32 +00:00
//sagatda ortacaha hasaplama
$html_data2 = '' ;
2023-10-10 22:29:27 +00:00
// gunluk hasabat
$html_data = '<div class="row">' ;
2023-10-18 21:12:32 +00:00
$html_data .= '<h4 style="margin-top: 20px;margin-bottom: 20px;">JEMI IŞLENEN ÇIG MAL (ekskruiter: ' . $currentExcrutier -> name . ')</h4>' ;
2023-10-10 22:29:27 +00:00
$html_data .= ' < div class = " col-lg " >
2023-10-02 22:15:33 +00:00
< a class = " card bg-success text-white-50 " >
< div class = " card-body " >
< h5 class = " mb-4 text-white " >< i
2023-10-18 21:12:32 +00:00
class = " mdi mdi-bullseye-arrow me-3 " ></ i > ' . $timeCalc. ' </ h5 >
2023-10-02 22:15:33 +00:00
< hr >
2023-10-18 21:12:32 +00:00
< p class = " card-text " style = " font-size: 15px;color: white; " > JEMI IŞLENEN : ' . $dailyCalculated . ' kg </ p >
2023-10-02 22:15:33 +00:00
</ div >
</ a >
</ div > ' ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
//sagatda ortacaha hasaplama
$html_data2 .= '<div class="row">' ;
$html_data2 .= '<h4 style="margin-top: 20px;margin-bottom: 20px;">SAGATDA ORTAÇA (ekskruiter: ' . $currentExcrutier -> name . ')</h4>' ;
2023-10-10 22:29:27 +00:00
$html_data2 .= ' < div class = " col-lg " >
< a class = " card bg-success text-white-50 " >
< div class = " card-body " >
< h5 class = " mb-4 text-white " >< i
2023-10-18 21:12:32 +00:00
class = " mdi mdi-bullseye-arrow me-3 " ></ i > ' . $timeCalc. ' </ h5 >
2023-10-10 22:29:27 +00:00
< hr >
2023-10-18 21:12:32 +00:00
< p class = " card-text " style = " font-size: 15px;color: white; " > SAGATDA ORTAÇA : ' . number_format($dailyCalculated / floor($diffMinutes / 60), 2) . ' kg </ p >
2023-10-10 22:29:27 +00:00
</ div >
</ a >
</ div > ' ;
2023-10-02 22:15:33 +00:00
2023-10-18 21:12:32 +00:00
for ( $x = 0 ; $x < count ( $products ); $x ++ ) {
$productCalc = ProductionCalculateModel :: whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiter ) -> where ( " product_id " , $products [ $x ] -> id ) -> sum ( 'amount_calc' );
$productCalcPercentage = ProductionCalculateModel :: whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiter ) -> where ( " product_id " , $products [ $x ] -> id ) -> orderBy ( 'id' , 'DESC' ) -> first ();
2023-10-10 22:29:27 +00:00
// $diff = $pivotLasts[$x]->amount - $pivotFirsts[$x]->amount;
// $diffPerc = ($diff * 100) / $producedAll;
2023-10-18 21:12:32 +00:00
$html_data .= ' < div class = " col-lg " >
2023-10-10 22:29:27 +00:00
< a class = " card bg-info text-white-50 " >
< div class = " card-body " >
2023-10-18 21:12:32 +00:00
< h5 class = " mb-4 text-white " >< i class = " mdi mdi-bullseye-arrow me-3 " ></ i > ' . ($productCalc) . ' kg </ h5 >
2023-10-10 22:29:27 +00:00
< hr >
2023-10-18 21:12:32 +00:00
< p class = " card-text " style = " font-size: 15px;color: white; " > ' . $products[$x]->name . ' : ' . ($productCalcPercentage->amount_percentage) . ' %</ p >
2023-10-10 22:29:27 +00:00
</ div >
</ a >
</ div > ' ;
2023-10-18 21:12:32 +00:00
$html_data2 .= ' < div class = " col-lg " >
< a class = " card bg-info text-white-50 " >
< div class = " card-body " >
< h5 class = " mb-4 text-white " >< i class = " mdi mdi-bullseye-arrow me-3 " ></ i > ' . number_format($productCalc / floor($diffMinutes / 60), 2) . ' kg </ h5 >
< hr >
< p class = " card-text " style = " font-size: 15px;color: white; " > ' . $products[$x]->name . ' : ' . ($productCalcPercentage->amount_percentage) . ' %</ p >
</ div >
</ a >
</ div > ' ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
}
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
$html_data .= '</div>' ;
$html_data2 .= '</div>' ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
//ekstrudorlar b-ca
$excruiters = ExcruiterModel :: get ();
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
$html_data3 = '<div class="row">' ;
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
for ( $x = 0 ; $x < count ( $excruiters ); $x ++ ) {
2023-10-11 16:29:51 +00:00
$productionsCalc = ProductionModel :: orderBy ( 'id' , 'DESC' );
2023-10-18 21:12:32 +00:00
$calc = $productionsCalc -> select ( DB :: raw ( 'MAX(time) AS max_time' ), DB :: raw ( 'MIN(time) AS min_time' ))
-> whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiters [ $x ] -> id ) -> first ();
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
$diffMinutes = Carbon :: parse ( $calc -> max_time ) -> diffInMinutes ( $calc -> min_time );
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
$timeCalc = floor ( $diffMinutes / 60 ) . ' sagat ' . ( $diffMinutes - floor ( $diffMinutes / 60 ) * 60 ) . ' minut' ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$productCalc = ProductionCalculateModel :: whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiters [ $x ] -> id ) -> sum ( 'amount_calc' );
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$html_data3 .= '<h4 style="margin-top: 20px;margin-bottom: 20px;">JEMI IŞLENEN ÇIG MAL (ekskruiter: ' . $excruiters [ $x ] -> name . ')</h4>' ;
2023-10-10 22:29:27 +00:00
$html_data3 .= ' < div class = " col-lg " >
2023-10-18 21:12:32 +00:00
< a class = " card bg-success text-white-50 " >
< div class = " card-body " >
< h5 class = " mb-4 text-white " >< i
class = " mdi mdi-bullseye-arrow me-3 " ></ i > ' . $timeCalc. ' </ h5 >
< hr >
< p class = " card-text " style = " font-size: 15px;color: white; " > JEMI IŞLENEN : ' . $dailyCalculated . ' kg </ p >
</ div >
</ a >
</ div > ' ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
for ( $i = 0 ; $i < count ( $products ); $i ++ ) {
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$productCalc = ProductionCalculateModel :: whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiters [ $x ] -> id ) -> where ( " product_id " , $products [ $i ] -> id ) -> sum ( 'amount_calc' );
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$productCalcPercentage = ProductionCalculateModel :: whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'excruiter_id' , $excruiters [ $x ] -> id ) -> where ( " product_id " , $products [ $i ] -> id ) -> orderBy ( 'id' , 'DESC' ) -> first ();
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
$html_data3 .= ' < div class = " col-lg " >
< a class = " card bg-info text-white-50 " >
< div class = " card-body " >
< h5 class = " mb-4 text-white " >< i class = " mdi mdi-bullseye-arrow me-3 " ></ i > ' . ($productCalc) . ' kg </ h5 >
< hr >
< p class = " card-text " style = " font-size: 15px;color: white; " > ' . $products[$i]->name . ' : ' . ($productCalcPercentage->amount_percentage ?? 0) . ' %</ p >
</ div >
</ a >
</ div > ' ;
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
}
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
}
$html_data3 .= '</div>' ;
2023-10-11 16:29:51 +00:00
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
//smenlar boyuncha
$shifts = ShiftModel :: get ();
2023-10-10 22:29:27 +00:00
$html_data4 = '<h4 style="margin-top: 20px;margin-bottom: 20px;">SMENLAR BOÝUNÇA</h4>' ;
2023-10-18 21:12:32 +00:00
2023-10-10 22:29:27 +00:00
$html_data4 .= '<div class="container-fluid"><div class="row"><div class="col-md-12">' ;
$html_data4 .= ' < table id = " datatable-buttons " class = " table table-striped table-bordered dt-responsive nowrap "
style = " border-collapse: collapse; border-spacing: 0; width: 100%; " >
< thead >
< tr >
< th > #</th>
< th > Smen </ th >
< th > Wagty </ th >
2023-10-18 21:12:32 +00:00
< th > Jemi </ th > ' ;
2023-10-10 22:29:27 +00:00
$html_data4 .= ' </ tr >
</ thead >< tbody > ' ;
2023-10-18 21:12:32 +00:00
$sumTimeDiffs = 0 ;
$productAllCalc = 0 ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
for ( $i = 0 ; $i < count ( $shifts ); $i ++ ) {
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$productionsCalc = ProductionModel :: orderBy ( 'id' , 'DESC' );
$calc = $productionsCalc -> select ( DB :: raw ( 'MAX(time) AS max_time' ), DB :: raw ( 'MIN(time) AS min_time' ))
-> whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'shift_id' , $shifts [ $i ] -> id ) -> first ();
2023-10-10 22:29:27 +00:00
2023-10-11 16:29:51 +00:00
$diffMinutes = Carbon :: parse ( $calc -> max_time ) -> diffInMinutes ( $calc -> min_time );
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$sumTimeDiffs += $diffMinutes ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$timeCalc = floor ( $diffMinutes / 60 ) . ' sagat ' . ( $diffMinutes - floor ( $diffMinutes / 60 ) * 60 ) . ' minut' ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$productCalc = ProductionCalculateModel :: whereDate ( 'date' , date ( $currentDateFormat )) -> where ( 'shift_id' , $shifts [ $i ] -> id ) -> sum ( 'amount_calc' );
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$productAllCalc += $productCalc ;
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
$html_data4 .= ' < tr >
< th scope = " row " > ' . ($i + 1) . ' </ th >
< td style = " font-weight: bold;color: #0005c5; " > ' . $shifts[$i]->desc . ' ( ' . $shifts[$i]->start . ' - ' . $shifts[$i]->end . ' ) </ td >
< td > '.$timeCalc.' </ td >
2023-10-10 22:29:27 +00:00
2023-10-18 21:12:32 +00:00
< td > ' . $productCalc . ' kg </ td > ' ;
2023-10-10 22:29:27 +00:00
$html_data4 .= '</tr>' ;
}
2023-10-18 21:12:32 +00:00
$timeAllCalc = floor ( $sumTimeDiffs / 60 ) . ' sagat ' . ( $sumTimeDiffs - floor ( $sumTimeDiffs / 60 ) * 60 ) . ' minut' ;
$html_data4 .= ' < tr >
< th scope = " row " colspan = " 2 " > JEMI </ th >
< td > '.$timeAllCalc.' </ td >
2023-10-11 16:29:51 +00:00
2023-10-18 21:12:32 +00:00
< td > ' . $productAllCalc . ' kg </ td > ' ;
$html_data4 .= '</tr>' ;
2023-10-10 22:29:27 +00:00
$html_data4 .= ' </ tbody >
</ table ></ div ></ div ></ div > ' ;
2023-10-18 21:12:32 +00:00
2023-10-10 22:29:27 +00:00
return [
'#calculation_of_day' => $html_data ,
'#avg_of_day' => $html_data2 ,
'#excruiter_daily_report' => $html_data3 ,
'#shift_daily_report' => $html_data4
];
} else {
return [
'#calculation_of_day' => 'Gunluk Hasabat üçin 2-nji üýtgeşmeleri girizmeli!' ,
'#excruiter_daily_report' => 'Gunluk Hasabat üçin 2-nji üýtgeşmeleri girizmeli!' ,
'#shift_daily_report' => 'Gunluk Hasabat üçin 2-nji üýtgeşmeleri girizmeli!'
];
}
2023-10-02 22:15:33 +00:00
}
2023-09-30 21:55:49 +00:00
2023-10-18 21:12:32 +00:00
2023-10-02 22:15:33 +00:00
function onCalculateAvg ()
{
2023-09-30 21:55:49 +00:00
$currentDate = Carbon :: now () -> timezone ( 'UTC +05:00' );
$currentDateFormat = $currentDate -> format ( 'Y-m-d' );
$data = post ();
2023-10-02 22:15:33 +00:00
$product = ProductModel :: where ( 'id' , $data [ " prod_id " ]) -> first ();
2023-09-30 21:55:49 +00:00
$sumPercentage = PivotProductionModel :: where ( 'product_id' , $data [ " prod_id " ]) -> whereDate ( 'created_at' , date ( $currentDateFormat )) -> sum ( 'amount_percentage' );
$sumPercentageCount = PivotProductionModel :: where ( 'product_id' , $data [ " prod_id " ]) -> whereDate ( 'created_at' , date ( $currentDateFormat )) -> count ( 'amount_percentage' );
2023-10-02 22:15:33 +00:00
2023-09-30 21:55:49 +00:00
$sumAmount = PivotProductionModel :: where ( 'product_id' , $data [ " prod_id " ]) -> whereDate ( 'created_at' , date ( $currentDateFormat )) -> sum ( 'amount' );
2023-09-23 20:10:26 +00:00
2023-09-30 21:55:49 +00:00
$sumAmountcount = PivotProductionModel :: where ( 'product_id' , $data [ " prod_id " ]) -> whereDate ( 'created_at' , date ( $currentDateFormat )) -> count ( 'amount' );
2023-10-02 22:15:33 +00:00
// dd($sumPercentage / $sumPercentageCount);
// dd(($sumPercentage + (int) $data["field_value"]) / ($sumPercentageCount + 1));
if ( $sumPercentage != 0 ) {
2023-09-30 21:55:49 +00:00
2023-10-02 22:15:33 +00:00
$calcAvgPerc = ( $sumPercentage + ( float ) $data [ " field_value " ]) / ( $sumPercentageCount + 1 );
// $convertedToKgAvg = ((int) $data["field_value"] / 100) * ((int) $data["all_amount"]);
$convertedToKgSum = (( float ) $data [ " field_value " ] / 100 ) * (( float ) $data [ " all_amount " ]);
$convertToCount = $sumAmountcount + 1 ;
$calculateAvgAmount = ( $convertedToKgSum + $sumAmount ) / $convertToCount ;
$allData = array (
" product_name " => $product -> name ,
" avg_percentage " => number_format ( $calcAvgPerc , 2 ),
" avg_amount " => number_format ( $calculateAvgAmount , 2 )
);
} else {
$allData = array (
" product_name " => $product -> name ,
" avg_percentage " => number_format ( 0 , 2 ),
" avg_amount " => number_format ( 0 , 2 )
);
}
2023-09-30 21:55:49 +00:00
// $calcAvgAmount = ($sumPercentage + (int) $data["field_value"]) / ($sumPercentageCount + 1);
2023-10-02 22:15:33 +00:00
2023-09-30 21:55:49 +00:00
return $allData ;
// dd($currentDateFormat);
2023-09-23 20:10:26 +00:00
}
2023-09-17 19:12:00 +00:00
2023-10-02 22:15:33 +00:00
public function onUpdatePivotProduction ()
2023-09-17 19:12:00 +00:00
{
$user = \Auth :: user ();
2023-09-30 21:55:49 +00:00
$currentDate = Carbon :: now () -> timezone ( 'UTC +05:00' );
// $this["currentMonth"] = $currentDate->format('m');
2023-10-02 22:15:33 +00:00
$data = post ();
2023-09-30 21:55:49 +00:00
2023-10-02 22:15:33 +00:00
$updatePivotProduction = PivotProductionModel :: where ( " id " , $data [ " product_id " ]) -> first ();
2023-09-30 21:55:49 +00:00
2023-10-02 22:15:33 +00:00
$production = ProductionModel :: where ( " id " , $updatePivotProduction -> production_id ) -> first ();
$fieldName = " product_ " . $data [ " product_id " ];
$updatePivotProduction -> amount_percentage = ( float ) $data [ $fieldName ] ? ? 0 ;
$updatePivotProduction -> amount = ((( float ) $data [ $fieldName ] ? ? 0 ) / 100 ) * (( float ) $production -> all_amount );
$updatePivotProduction -> save ();
2023-09-17 19:12:00 +00:00
2023-10-02 22:15:33 +00:00
if ( $updatePivotProduction ) {
Flash :: success ( " Hasabat Ustunlikli Üýtgedildi " );
return Redirect :: refresh ();
2023-09-18 20:22:50 +00:00
}
2023-10-02 22:15:33 +00:00
}
public function onCreateProduction ()
{
$user = \Auth :: user ();
$currentDate = Carbon :: now () -> timezone ( 'UTC +05:00' );
// $this["currentMonth"] = $currentDate->format('m');
$data = post ();
$excruiter = $this -> param ( " excruiter " );
if ( $excruiter == 0 ) {
2023-10-18 21:12:32 +00:00
Flash :: error ( " Ekstrudor Saýla! " );
2023-09-18 20:22:50 +00:00
return Redirect :: refresh ();
2023-10-02 22:15:33 +00:00
} else {
$createProduction = new ProductionModel ();
$createProduction -> all_amount = $data [ " all_amount " ];
$createProduction -> note = $data [ " note " ];
$createProduction -> user_id = $user -> id ;
2023-10-18 21:12:32 +00:00
$createProduction -> date = Carbon :: parse ( $data [ " date " ]) -> format ( 'Y-m-d' );
$createProduction -> time = Carbon :: parse ( $data [ " time " ]) -> format ( 'H:i:s' );
2023-10-02 22:15:33 +00:00
$createProduction -> excruiter_id = $excruiter ;
$createProduction -> shift_id = $data [ " shift_id " ];
$createProduction -> save ();
$products = ProductModel :: where ( " report " , " simple " ) -> get ();
for ( $x = 0 ; $x < count ( $products ); $x ++ ) {
$fieldName = " product_ " . $products [ $x ] -> code ;
$createPivotProduction = new PivotProductionModel ();
$createPivotProduction -> production_id = $createProduction -> id ;
$createPivotProduction -> product_id = $products [ $x ] -> id ;
$createPivotProduction -> amount_percentage = ( float ) $data [ $fieldName ] ? ? 0 ;
$createPivotProduction -> product_name = $products [ $x ] -> name ;
$createPivotProduction -> product_code = $products [ $x ] -> code ;
$createProduction -> excruiter_id = $excruiter ;
$createPivotProduction -> amount = ( float )((( float ) $data [ $fieldName ] ? ? 0 ) / 100 ) * (( float ) $createProduction -> all_amount );
2023-10-18 21:12:32 +00:00
$createPivotProduction -> date = Carbon :: parse ( $data [ " date " ]) -> format ( 'Y-m-d' );
$createPivotProduction -> time = Carbon :: parse ( $data [ " time " ]) -> format ( 'H:i:s' );
2023-10-02 22:15:33 +00:00
$createPivotProduction -> save ();
}
2023-10-18 21:12:32 +00:00
$todayProductionsCount = ProductionModel :: whereDate ( 'date' , date ( $createProduction -> date )) -> where ( " excruiter_id " , $excruiter ) -> count ();
if ( $todayProductionsCount > 1 ){
$todayProductionsGet = ProductionModel :: whereDate ( 'date' , date ( $createProduction -> date )) -> where ( " excruiter_id " , $excruiter ) -> orderBy ( " id " , " DESC " ) -> skip ( 1 ) -> first ();
$productionPivots = PivotProductionModel :: where ( 'production_id' , $todayProductionsGet -> id ) -> get ();
$diffAllAmount = ( $createProduction -> all_amount - $todayProductionsGet -> all_amount );
for ( $x = 0 ; $x < count ( $productionPivots ); $x ++ ) {
$createCalculate = new ProductionCalculateModel ();
$createCalculate -> production_id = $todayProductionsGet -> id ;
$createCalculate -> product_id = $productionPivots [ $x ] -> product_id ;
$createCalculate -> amount_calc = ( float )((( float ) $productionPivots [ $x ] -> amount_percentage ? ? 0 ) / 100 ) * (( float ) $diffAllAmount );
$createCalculate -> excruiter_id = $todayProductionsGet -> excruiter_id ;
$createCalculate -> shift_id = $todayProductionsGet -> shift_id ;
$createCalculate -> amount_percentage = $productionPivots [ $x ] -> amount_percentage ;
$createCalculate -> date = $productionPivots [ $x ] -> date ;
$createCalculate -> time = $productionPivots [ $x ] -> time ;
$createCalculate -> save ();
}
}
2023-10-02 22:15:33 +00:00
if ( $createProduction && $createPivotProduction ) {
Flash :: success ( " Hasabat Ustunlikli Goşuldy " );
return Redirect :: refresh ();
}
2023-10-18 21:12:32 +00:00
2023-09-18 20:22:50 +00:00
}
2023-09-17 19:12:00 +00:00
}
public function onUpdateProduction ()
{
$user = \Auth :: user ();
$data = post ();
$updateResult = ActionModel :: where ( 'id' , $data [ " id " ])
-> update ( array (
'product_id' => $data [ " product_id " ],
'amount' => $data [ " quantity " ],
'stock_id' => $data [ " stock_id " ],
'note' => $data [ " note " ],
'transport_no' => $data [ " transport_no " ],
'driver' => $data [ " driver " ],
'user_id' => $user -> id ,
));
// $createResult = DollorModel::create([]);
// dd($data);
if ( $updateResult ) {
Flash :: success ( " Action Ustunlikli Uytgedildi " );
return Redirect :: refresh ();
}
}
public function onGetProduction ()
{
$id = post ( 'id' );
return ActionModel :: where ( 'id' , $id ) -> first ();
}
// public function onDeleteProduction()
// {
// $id = post('id');
// $item = ActionModel::Find($id);
// $item->delete();
// if ($item) {
// Flash::success("Action Ustunlikli Pozuldy");
// return Redirect::refresh();
// }
// }
2023-10-18 21:12:32 +00:00
2023-09-17 19:12:00 +00:00
}