public function auditar($tratamiento_id)
 {
     try {
         $t = Tratamiento::findOrFail($tratamiento_id);
         $tu = $t->turno;
         $p = PacientePrepaga::findOrFail($tu->paciente_prepaga_id)->paciente;
         $o = Odontologo::findOrFail($tu->agenda->odontologo_efector_id);
         $n = $t->nomenclador;
         $this->errores[$t->id] = [];
         $this->edadFueraDeRango($t, $p, $n, $tu);
         return Response::json(array('error' => false, 'listado' => array("tratamiento" => $t->toArray(), "errores" => $this->errores[$t->id])), 200);
     } catch (\Exception $e) {
         return Response::json(array('error' => true, 'mensaje' => $e->getMessage()), 200);
     }
 }
 public function parteDiario()
 {
     $salida = [];
     $params = Input::all();
     $coes = CentroOdontologoEspecialidad::where('odontologo_id', $params['odontologo_id'])->where('centro_id', $params['centro_id'])->where('especialidad_id', $params['especialidad_id'])->get();
     foreach ($coes as $coe) {
         //$agendas = $coe->agendas()->where('habilitado_turnos','=',1)->where('fecha','=',$params["fecha"])->get();
         $agendas = $coe->agendas()->where('fecha', '=', $params["fecha"])->get();
         foreach ($agendas as $agenda) {
             $turnos = $agenda->vistaTurnos();
             foreach ($turnos as $t) {
                 $pp = PacientePrepaga::find($t->paciente_prepaga_id);
                 $tt = Turno::find($t->id);
                 $trata = $tt->tratamientos()->get();
                 if (!empty($pp)) {
                     $t->fecha_agenda = $agenda->fecha;
                     $t->tiene_fichados = $pp->paciente->tieneFichados() > 0;
                     $ver_queja = $pp->paciente->getPresentoQuejaAttribute();
                     $t->presento_queja = $ver_queja == "1" ? "S" : "N";
                     //$t->presento_queja = $pp->paciente->getPresentoQuejaAttribute();   // Este Va
                     $ver_hiv = $pp->paciente->getTieneHivAttribute();
                     $t->hiv = $ver_hiv == "1" ? "S" : "N";
                     $t->edad = $pp->paciente->getEdadAttribute();
                     $t->presupuestos_con_saldo = $pp->presupuestosConSaldo();
                     $t->facturas_con_saldo = $pp->facturasConSaldo();
                     $t->es_vip = $pp->paciente->vip ? "S" : "N";
                     $t->cant_tratam = count($trata);
                 } else {
                     $t->fecha_agenda = $agenda->fecha;
                     $t->tiene_fichados = False;
                     $t->presento_queja = NULL;
                     $t->hiv = NULL;
                     $t->edad = NULL;
                     $t->presupuestos_con_saldo = False;
                     $t->facturas_con_saldo = False;
                     $t->es_vip = NULL;
                     $t->cant_tratam = 0;
                 }
                 $salida[] = $t;
             }
         }
     }
     return Response::json(array('error' => false, 'listado' => $salida), 200);
 }
 public function tomar_turno($paciente_prepaga_id)
 {
     $params = Input::all();
     unset($params['apikey']);
     $turno_id = $params["turno_id"];
     $tipo = isset($params["tipo"]) && !empty($params["tipo"]) ? $params["tipo"] : "T";
     $user_id = Auth::user()->id;
     $paciente_prepaga = PacientePrepaga::findOrFail($paciente_prepaga_id);
     $turnos = explode(",", $turno_id);
     //si son muchos turnos
     if (count($turnos) > 1) {
         $objTurnos = Turno::whereIn('id', $turnos)->where('estado', 'L')->get();
         if (count($objTurnos) == count($turnos)) {
             $affectedRows = Turno::whereIn('id', $turnos)->where('estado', 'L')->update(array('estado' => 'A', 'paciente_prepaga_id' => $paciente_prepaga->id, 'user_id' => $user_id));
             if ($affectedRows == count($turnos)) {
                 foreach ($objTurnos as $cadaTurno) {
                     $this->eventoAuditar($cadaTurno);
                 }
                 $turno = Turno::findOrFail($turnos[0]);
                 return Response::json(array('error' => false, 'listado' => array($turno->find($turno->id)->toArray())), 200);
             } else {
                 return Response::json(array('error' => true, 'mensaje' => 'No se pudieron asignar los turnos', 'envio' => $params), 200);
             }
         } else {
             return Response::json(array('error' => true, 'mensaje' => "alguno de los turnos está tomado"), 200);
         }
     } else {
         //es un solo turno
         $turno = Turno::findorFail($turno_id);
         //chequea entreturno
         if ($tipo == 'E') {
             $otros_entreturnos = Turno::where('padre', '=', $turno->id)->get();
             $new_turno = new Turno();
             $new_turno->fill($turno->toArray());
             $new_turno->id = null;
             $new_turno->padre = $turno->id;
             $turno = $new_turno;
             $turno->tipo_turno = 'E';
             $desde = strtotime(substr($turno->hora_desde, 0, 2) . ":" . substr($turno->hora_desde, -2));
             $hasta = strtotime(substr($turno->hora_hasta, 0, 2) . ":" . substr($turno->hora_hasta, -2));
             if (count($otros_entreturnos) == 0) {
                 $n_desde = $desde + ($hasta - $desde) / 2;
                 $turno->hora_desde = date('Hi', $n_desde);
             } else {
                 $intervalo = ($hasta - $desde) / (2 + count($otros_entreturnos));
                 $n_desde = $desde + $intervalo;
                 foreach ($otros_entreturnos as $entreturno) {
                     $entreturno->hora_desde = date('Hi', $n_desde);
                     $entreturno->save();
                     $n_desde += $intervalo;
                 }
                 $turno->hora_desde = date('Hi', $n_desde);
             }
             $turno->estado = 'L';
         }
         //falta verificar turno bloqueado x mismo usuario
         if ($turno->estado == 'L') {
             $turno->estado = 'A';
             $turno->paciente_prepaga_id = $paciente_prepaga->id;
             $turno->user_id = $user_id;
             if ($turno->save()) {
                 $this->eventoAuditar($turno);
                 return Response::json(array('error' => false, 'listado' => array($turno->find($turno->id)->toArray())), 200);
             } else {
                 return Response::json(array('error' => true, 'mensaje' => HerramientasController::getErrores($turno->validator), 'envio' => $params), 200);
             }
         } else {
             return Response::json(array('error' => true, 'mensaje' => "turno tomado"), 200);
         }
     }
 }
 public function movimientosPaciente($paciente_id)
 {
     $pacientes_prepagas = PacientePrepaga::where('paciente_id', '=', $paciente_id)->with('ctactes')->get()->toArray();
     $movimientos = array();
     foreach ($pacientes_prepagas as $pp) {
         //var_dump($pp);die();
         $mov = $pp["ctactes"];
         $prepaga = Prepaga::find($pp["prepaga_id"]);
         foreach ($mov as $m) {
             $coe = CentroOdontologoEspecialidad::find($m["centro_odontologo_especialidad_id"]);
             $m["odontologo"] = $coe->odontologo->nombre_completo;
             $m["especialidad"] = $coe->especialidad->especialidad;
             $m["prepaga"] = $prepaga->razon_social;
             $m["prepaga_codigo"] = $prepaga->codigo;
             //	$m["saldo"] = 0;
             //$m["fecha"] = substr($m["fecha"],-2)."-".substr($m["fecha"],5,2)."-".substr($m["fecha"],0,4);
             $movimientos[] = $m;
             //$movimientos = array_merge($movimientos,$mov);
         }
     }
     return Response::json(array('error' => false, 'listado' => $movimientos), 200);
 }