| Server IP : 162.214.74.102 / Your IP : 216.73.217.114 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/www/lrsys_apps/leo/application/plugins/module_med_scheduling/models/ |
Upload File : |
<?php
include_once __DIR__ . "/../../../autoload/My_Model.php";
include_once __DIR__ . "/../factories/SchedulingFactory.php";
class SchedulingModel extends My_Model
{
/**
* @var string
*/
public $table = 'module_med_scheduling';
/**
* @param array $data
* @return bool|ORM
*/
public function createScheduling($data)
{
$scheduling = self::create();
SchedulingFactory::create($data, $scheduling, true);
$scheduling->save();
return $scheduling;
}
/**
* @param array $data
* @param ORM $scheduling
* @return bool|ORM
*/
public function updateScheduling($data, $scheduling)
{
ORM::for_table($this->table)->create($scheduling);
SchedulingFactory::create($data, $scheduling);
$scheduling->save();
return $scheduling;
}
public function updateAttach($data, $scheduling)
{
if(isset($data['attach'])){
$attachs= explode($data['attach'],',');
foreach ($attachs as $t)
$a= ORM::for_table('module_med_scheduling_attach')->find_one($t);
$a->module_med_scheduling_id=$scheduling;
$a->save();
}
}
public function updateProcedures($data, $scheduling) {
try
{
//remove os procedimentos deletados
if(isset($data['procedure_delete']) && $data['procedure_delete'] != '')
{
// Removo as autorizações para procedimento deletado
$data['procedure_delete'] = explode(',', $data['procedure_delete']);
ORM::for_table('module_med_scheduling_authorization_procedures')
->where_in('module_med_scheduling_procedures_id', $data['procedure_delete'])
->delete_many();
// Deleto as despesas relacionadas ao procedimento deletado
ORM::for_table('module_med_scheduling_expenses')
->where_in('scheduling_procedure_id', $data['procedure_delete'])
->delete_many();
// Deleto os procedimentos por último para evitar erro de chave estrangeira
ORM::for_table('module_med_scheduling_procedures')
->where_in('id', $data['procedure_delete'])
->delete_many();
}
// Faço o cadastro ou edição dos procedimentos
$procedure = $data['procedure_id'];
$qty = $data['qty'];
$valuePatient = $data['value_patient'];
$valueAgreement = $data['value_agreement'];
$discount = $data['discount'];
$procedure_edit = isset($data['procedure_edit'])?$data['procedure_edit']:null;
$scheduling_procedure_id_edit = isset($data['scheduling_procedure_id'])?$data['scheduling_procedure_id']:null;
$scheduling_procedure_id = null;
for ($i = 0; $i < count($procedure); $i++)
{
if(isset($procedure_edit[$i]))
{
$scheduling_procedure_id = $scheduling_procedure_id_edit[$i];
if($procedure_edit[$i] == 1)
{
$d = ORM::for_table('module_med_scheduling_procedures')->find_one($scheduling_procedure_id);
$d->module_med_scheduling_id = $scheduling->id;
$d->sys_items_id = $procedure[$i];
$d->qty = $qty[$i];
$d->discount =Finance::amount_fix( $discount[$i]);
$d->value_agreement = Finance::amount_fix($valueAgreement[$i]);
$d->value_patient = Finance::amount_fix($valuePatient[$i]);
$d->save();
}
}
else
{
$d = ORM::for_table('module_med_scheduling_procedures')->create();
$d->module_med_scheduling_id = $scheduling->id;
$d->sys_items_id = $procedure[$i];
$d->qty = $qty[$i];
$d->discount =Finance::amount_fix( $discount[$i]);
$d->value_agreement = Finance::amount_fix($valueAgreement[$i]);
$d->value_patient = Finance::amount_fix($valuePatient[$i]);
$d->save();
$scheduling_procedure_id = $d->id;
}
// Deleto as despesas
ORM::for_table('module_med_scheduling_expenses')
->where('scheduling_procedure_id', $scheduling_procedure_id)->delete_many();
// Insiro as despesas Extras
if(isset($data['expense_id_'.$scheduling_procedure_id]))
{
$expense = $data['expense_id_'.$scheduling_procedure_id];
$expense_qty = $data['expense_qty_'.$scheduling_procedure_id];
$expense_valuePatient = $data['expense_value_patient_'.$scheduling_procedure_id];
$expense_valueAgreement = $data['expense_value_agreement_'.$scheduling_procedure_id];
for ($j = 0; $j < count($expense); $j++)
{
$d = ORM::for_table('module_med_scheduling_expenses')->create();
$d->module_med_scheduling_id = $scheduling->id;
$d->sys_items_id = $expense[$j];
$d->qty = $expense_qty[$j];
$d->procedure_id = $procedure[$i];
$d->value_agreement = Finance::amount_fix($expense_valueAgreement[$j]);
$d->value_patient = Finance::amount_fix($expense_valuePatient[$j]);
$d->scheduling_procedure_id = $scheduling_procedure_id;
$d->save();
}
}
else
{
$expenses = ORM::for_table('module_med_procedures_expenses')->where('sys_item_procedure_id', $procedure[$i])->find_array();
foreach ($expenses as $expense)
{
$d = ORM::for_table('module_med_scheduling_expenses')->create();
$d->module_med_scheduling_id = $scheduling->id;
$d->sys_items_id = $expense['sys_item_expense_id'];
$d->qty = $expense['qty']*$qty[$i];
$d->procedure_id = $procedure[$i];
// Pego o valor da despesa de acordo com o convênio
$agreement_value = ORM::for_table('module_med_procedure_agreement')
->where('module_med_agreement_id', $scheduling->agreement_id)
->where('sys_item_id', $expense['sys_item_expense_id'])
->find_one();
$d->value_agreement = Finance::amount_fix($agreement_value['agreement_value']);
$d->value_patient = Finance::amount_fix($agreement_value['patient_value']);
$d->scheduling_procedure_id = $scheduling_procedure_id;
$d->save();
}
}
}
return true;
} catch (Exception $e) {
die($e);
return false;
}
}
/**
* @param ORM $scheduling
* @return bool|ORM
*/
public function deleteScheduling($scheduling)
{
if($scheduling->status == "Finished")
{
return false;
}
ORM::for_table($this->table)->create($scheduling);
$now = new DateTime('now', new DateTimeZone('America/Sao_Paulo'));
$scheduling->deleted_at = $now->format('Y-m-d H:i:s');
$scheduling->save();
return $scheduling;
}
/**
* @param ORM $status
* @return bool|ORM
*/
public function getStatus($status)
{
if (isset($status)) {
$bar_status = ORM::for_table('module_med_scheduling')
->where('status', $status)->where_null('deleted_at')->find_array();
$count_status = count($bar_status);
return $count_status;
}
return false;
}
/**
* @param $date
* @param $hour
* @return bool|ORM
*/
// public function verifyScheduling($post)
// {
//
// $msg="";
// $dayNumber = date('w', strtotime(_postDate['date']));
//
// if(!empty(_post['professional_id'])){
// $verifyJournWork = ORM::for_table('module_hr_job_journey')
// ->table_alias('s')
// ->where("s.func", _post['professional_id'])
// ->where("s.ind_dia", $dayNumber)
// ->where_raw("((s.hr_ini_manha >='" ._post("hour_start"). "' and s.hr_fim_manha <='" ._post("hour_finish"). ")"
// . " OR "
// . "(s.hr_ini_tarde >='" ._post("hour_start"). "' and s.hr_fim_tarde <='" ._post("hour_finish"). "))")
// ->find_array();
// if(!$verifyJournWork){
// $msg.="\n O professional não atende no horário informado";
// }
//
// // verificar aqui, os choque de horários para atendimento
// }
// //verificar horário de procedimentos, se são realizados no ho
// $procedure =$_POST['id_procedure'];
// foreach ($procedure as $p){
// $verifyProcedure = ORM::for_table('module_med_procedure_allowed_schedules')
// ->table_alias('s')
// ->where("s.sys_item_id", $p)
// ->where("s.ind_dia", $dayNumber)
// ->where_raw("((s.hr_ini_manha >='" ._post("hour_start"). "' and s.hr_fim_manha <='" ._post("hour_finish"). ")"
// . " OR "
// . "(s.hr_ini_tarde >='" ._post("hour_start"). "' and s.hr_fim_tarde <='" ._post("hour_finish"). "))")
// ->find_array();
// if(!$verifyProcedure){
// $procedure = ORM::for_table('sys_items')->find_one($p);
// $msg.="\n O procedimento ".$procedure->name." não é realizado no horário informado";
// }
// }
//
//
// $verifyDiary = ORM::for_table('module_med_diary_schedules')
// ->table_alias('s')
// ->where("s.diary_id", _post('diary_id'))
// ->where("s.ind_dia", $dayNumber)
// ->where_raw("((s.hr_ini_manha >='" ._post("hour_start"). "' and s.hr_fim_manha <='" ._post("hour_finish"). ")"
// . " OR "
// . "(s.hr_ini_tarde >='" ._post("hour_start"). "' and s.hr_fim_tarde <='" ._post("hour_finish"). "))")
// ->find_array();
// if(!$verifyDiary){
// $msg.="\n A agenda não está disponível nesse horário";
// }
//
//
//
//
// $hour = $hour . ':00';
// $data = ORM::for_table($this->table)
// ->table_alias('s')
// ->join('module_med_diary', array('diary.id', '=', 's.diary_id'), 'diary')
// ->where_raw("date = '" . $date . "'")
// ->where("s.diary_id", $diary)
// ->find_array();
//
// $count_scheduling = count($data);
//
// if ($count_scheduling > 0) {
//
// $i = null;
//
// foreach ($data as $d) {
//
// // INTERVALO DA CONSULTA
// $interval = $d['interval'];
//
// // HORA JÁ MARCADA
// $h = $d['hour'];
// $h = strtotime("$h");
//
// // HORA MAIS INTERVALO
// $hour_interval = strtotime("$h + $interval minutes");
//
// // HORA DA NOVA CONSULTA
// $new_scheduling = strtotime("$hour");
//
// if ($h >= $new_scheduling && $hour_interval <= $new_scheduling) {
// $i++;
// if ($i >= $d['simultaneous']) {
// return false;
// }
// }
//
// }
// }
//
// return true;
// }
}