コード例 #1
0
 public function postEnvioofsc()
 {
     $datos = array();
     $datos['hf'] = explode("||", Input::get('hf'));
     $datos['fecha'] = $datos['hf'][0];
     $datos['bucket'] = $datos['hf'][1];
     $datos['slot'] = $datos['hf'][2];
     //time slot
     $datos['horas'] = explode("-", $datos['hf'][3]);
     $datos['empresa_id'] = Input::get('empresa_id');
     $datos['codactu'] = Input::get('codactu');
     $sla = false;
     $slaInicio = "0000-00-00 00:00";
     //retorno de transaccion
     $save = array("rst" => 2, "msj" => "Sin reultados.", "error" => "", "gestion_id" => 0);
     $inbound = new Inbound();
     $gestionId = "";
     $codactu = $datos['codactu'];
     //"35268199"; //
     $date = $datos['fecha'];
     //date("Y-m-d"); //
     $bucket = $datos['bucket'];
     //"BK_PRUEBAS_TOA";
     $tini = trim($datos['horas'][0]);
     //"09:00"
     $tend = trim($datos['horas'][1]);
     //"13:00"
     $tobooking = date("Y-m-d H:i");
     $slot = $datos['slot'];
     //"AM"
     $cuadrante = "Something";
     $techTp = "NULL";
     $techBb = "NULL";
     $techTv = "NULL";
     $wzKey = "";
     $wtLabel = "";
     $wType = "";
     $accTech = "COAXIAL";
     $businessType = "";
     $phone = array(0 => "", 1 => "");
     //Datos de la actuacion
     $actu = \Gestion::getCargar($codactu);
     //Existe la actuacion
     if (isset($actu["datos"][0])) {
         $actuObj = $actu["datos"][0];
         $actuArray = (array) $actuObj;
         $actuArray['noajax'] = "ok";
         //Motivo/Submotivo
         $actuArray['gestion_id'] = $actuObj->id;
         $actuArray['motivo'] = 1;
         $actuArray['submotivo'] = 1;
         $actuArray['estado'] = 2;
         //GestionID
         $gestionId = $actuObj->id;
         //Tipo de actividad: tabla "actividaes_tipos"
         $actTipo = DB::table('actividades_tipos')->select('nombre', 'label', 'sla', 'duracion')->where('id', '=', $actuArray['actividad_tipo_id'])->first();
         //Duracion en minutos
         $duration = $actTipo->duracion;
         //Quiebre grupo
         $quiebreGrupo = DB::table('quiebre_grupos')->select('nombre')->where('id', '=', $actuArray['quiebre_grupo_id'])->first();
         //Negocio por texto
         if (strpos($actuArray['tipo_averia'], "catv") > 0) {
             $businessType = "CATV";
         }
         if (strpos($actuArray['tipo_averia'], "adsl") > 0) {
             $businessType = "ADSL";
         }
         if (strpos($actuArray['tipo_averia'], "bas") > 0) {
             $businessType = "BASICA";
         }
         $wtLabel = $actTipo->label;
         $wType = $actTipo->nombre;
         //Telefonos de contacto
         $phoneArray = explode("|", $actuArray['fonos_contacto']);
         if (isset($phoneArray[0])) {
             $phone[0] = $phoneArray[0];
         }
         if (isset($phoneArray[1])) {
             $phone[1] = $phoneArray[1];
         }
         //Si no hay telefono de contacto
         if (strlen(trim($actuArray['fonos_contacto'])) < 6) {
             $phone = array("0000000", "0000000");
         }
         //Datos XY Web
         $actuArray['x'] = $actuArray['coord_x'];
         $actuArray['y'] = $actuArray['coord_y'];
         //Facilidades técnicas
         $ffttController = new \FfttController();
         $val = new stdClass();
         $val->fftt = $actuArray['fftt'];
         $val->tipoactu = $actuArray['tipo_averia'];
         $ffttArray = $ffttController->getExplodefftt($val);
         if ($ffttArray["tipo"] == 'catv') {
             $wzKey = $ffttArray["nodo"] . "_" . $ffttArray["troba"];
         } else {
             $wzKey = $ffttArray["mdf"] . "_" . $ffttArray["armario"];
         }
         //Parche: datos no concuerdan -> enumeration
         if ($actuArray['segmento'] == "NO-VIP") {
             $actuArray['segmento'] = "N";
         }
         //Homologacion de campos
         $dataOfsc = array("bucket" => $datos['bucket'], "actividad" => strtolower($actuObj->actividad), "date" => $date, "type" => "update_activity", "external_id" => $bucket, "start_time" => $tini, "end_time" => $tend, "appt_number" => $actuArray['codactu'], "customer_number" => $actuArray['inscripcion'], "worktype_label" => $wtLabel, "time_slot" => $slot, "time_of_booking" => $tobooking, "duration" => $duration, "name" => $actuArray['nombre_cliente'], "phone" => $phone[0], "email" => "", "cell" => $phone[1], "address" => $actuArray['direccion_instalacion'], "city" => "Lima", "state" => "Lima", "zip" => "LIMA 05", "language" => "1", "reminder_time" => "15", "time_zone" => "19", "coordx" => $actuArray['coord_x'], "coordy" => $actuArray['coord_y'], "XA_CREATION_DATE" => $tobooking, "XA_SOURCE_SYSTEM" => "PSI", "XA_CUSTOMER_SEGMENT" => $actuArray['segmento'], "XA_CUSTOMER_TYPE" => "", "XA_CONTACT_NAME" => "", "XA_CONTACT_PHONE_NUMBER_2" => "", "XA_CONTACT_PHONE_NUMBER_3" => "", "XA_CONTACT_PHONE_NUMBER_4" => "", "XA_CITY_CODE" => "", "XA_DISTRICT_CODE" => $actuArray['codigo_distrito'], "XA_DISTRICT_NAME" => $actuArray['distrito'], "XA_ZONE" => $actuArray['zonal'], "XA_QUADRANT" => $cuadrante, "XA_WORK_ZONE_KEY" => $wzKey, "XA_RURAL" => "", "XA_RED_ZONE" => "", "XA_WORK_TYPE" => $wType, "XA_APPOINTMENT_SCHEDULER" => "CLI", "XA_USER" => "", "XA_REQUIREMENT_NUMBER" => $actuArray['codactu'], "XA_NUMBER_SERVICE_ORDER" => $actuArray['orden_trabajo'], "XA_CHANNEL_ORIGIN" => "", "XA_SALES_POINT_CODE" => "", "XA_SALES_POINT_DESCRIPTION" => "", "XA_COMMERCIAL_VALIDATION" => "", "XA_TECHNICAL_VALIDATION" => "", "XA_WEB_UNIFICADA" => "", "XA_ORDER_AREA" => "", "XA_COMMERCIAL_PACKET" => "", "XA_COMPANY_NAME" => $actuArray['empresa'], "XA_GRUPO_QUIEBRE" => $quiebreGrupo->nombre, "XA_QUIEBRES" => $actuArray['quiebre'], "XA_BUSINESS_TYPE" => $businessType, "XA_PRODUCTS_SERVICES" => "", "XA_CURRENT_PRODUCTS_SERVICES" => "", "XA_EQUIPMENT" => "", "XA_NOTE" => $actuArray['observacion'], "XA_TELEPHONE_TECHNOLOGY" => $techTp, "XA_BROADBAND_TECHNOLOGY" => $techBb, "XA_TV_TECHNOLOGY" => $techTv, "XA_ACCESS_TECHNOLOGY" => $accTech, "XA_HFC_ZONE" => "", "XA_HFC_NODE" => "", "XA_HFC_TROBA" => "", "XA_HFC_AMPLIFIER" => "", "XA_HFC_TAP" => "", "XA_HFC_BORNE" => "", "XA_REQUIREMENT_TYPE" => "", "XA_REQUIREMENT_REASON" => "", "XA_CATV_SERVICE_CLASS" => "", "XA_MDF" => $actuArray['mdf'], "XA_CABLE" => "", "XA_CABINET" => "", "XA_BOX" => "", "XA_TERMINAL_ADDRESS" => "", "XA_TERMINAL_LINKHTTP" => "", "XA_ADSLSTB_PREFFIX" => "NULL", "XA_ADSLSTB_MOVEMENT" => "NULL", "XA_ADSL_SPEED" => "", "XA_ADSLSTB_SERVICE_TYPE" => "", "XA_PENDING_EXTERNAL_ACTION" => "", "XA_SMS_1" => $actuArray['sms1'], "XA_DIAGNOSIS" => "", "XA_TOTAL_REPAIRS" => $actuArray['total_averias']);
         //Envio por SLA
         if (Input::get('agdsla') == 'sla' and Input::get('slaini') != '') {
             $sla = true;
             $slaInicio = strtotime(Input::get('slaini'));
             $slaDay = $actTipo->sla * 3600;
             $slaFin = $slaInicio + $slaDay;
             $dataOfsc["sla_window_start"] = date("Y-m-d H:i", $slaInicio);
             $dataOfsc["sla_window_end"] = date("Y-m-d H:i", $slaFin);
             $dataOfsc["date"] = date("Y-m-d", $slaInicio);
         }
         //Campos adicionales para averia
         if (strtolower($actuObj->actividad) == 'averia') {
             $dataOfsc["XA_DIAGNOSIS"] = "SB_01";
         }
         /**
          * Guardar en tablas de gestion
          * - gestiones
          * - gestiones_detalles
          * - gestiones_movimientos
          * - ultimos_movimientos
          */
         $actuArray['fecha_agenda'] = $date;
         $horario = Horario::where('horario', '=', $slot)->first();
         if ($horario != NULL and $horario != '') {
             $actuArray['horario_id'] = $horario->id;
             $actuArray['dia_id'] = date("N", strtotime($date));
         }
         $actuArray['estado_agendamiento'] = "1-1";
         unset($actuArray["tecnico"]);
         unset($actuArray["tecnico_id"]);
         unset($actuArray["celula_id"]);
         Input::replace($actuArray);
         $save = $this->_gestionMovimientoController->postRegistrar();
         unset($actuArray["fecha_agenda"]);
         unset($actuArray["horario_id"]);
         unset($actuArray["dia_id"]);
         $actuArray['estado_agendamiento'] = "3-0";
         $actuArray['motivo'] = 2;
         $actuArray['submotivo'] = 18;
         $actuArray['estado'] = 7;
         if ($save["rst"] == 1) {
             //Crear actividad en OFSC
             /*if ( $dataOfsc['date']==0 ) {
                   $dataOfsc['date']=date("Y-m-d",strtotime(Input::get('slaini')) );
               }*/
             $response = $inbound->createActivity($dataOfsc, $sla);
             $report = $response->data->data->commands->command->appointment->report;
             $resultBool = true;
             /**
              * $report->message:
              * 
              * El mensaje de respuesta puede ser un arreglo
              * o un único mensaje.
              * Se valida la respuesta para cada mensaje recibido.
              */
             if (is_array($report->message)) {
                 foreach ($report->message as $val) {
                     if ($val->result == 'warning') {
                         $save["error"][] = $val->description;
                     }
                     if ($val->result == 'error') {
                         $save["error"][] = $val->description;
                     }
                 }
             } else {
                 if ($report->message->result == 'error') {
                     $resultBool = false;
                     $save["error"][] = $report->message->description;
                 }
             }
             //$result = $report->message->result;
             //Retorno OK
             if ($resultBool) {
                 //Appointment id
                 $aid = $response->data->data->commands->command->appointment->aid;
                 $datosofsc = array();
                 $datosofsc['aid'] = $aid;
                 $datosofsc['gestion_id'] = $save['gestion_id'];
                 $datosofsc['envio_ofsc'] = 2;
                 if ($sla == false) {
                     $datosofsc['envio_ofsc'] = 1;
                 }
                 $datosofsc['gestion_movimiento_id'] = $save['gestion_movimiento_id'];
                 GestionMovimiento::ActOfscAid($datosofsc);
                 $save["msj"] = "Registro y envío a OFSC correcto.";
                 $save["aid"] = $aid;
             }
             //Retorno ERROR
             if (!$resultBool) {
                 $errArray['type'] = $report->message->type;
                 $errArray['code'] = $report->message->code;
                 $errArray['desc'] = $report->message->description;
                 Input::replace($actuArray);
                 $save = $this->_gestionMovimientoController->postRegistrar();
                 $save["rst"] = 2;
                 $save["msj"] = "No se pudo enviar a OFSC. " . $report->message->description;
             }
         }
     }
     return json_encode($save);
 }
コード例 #2
0
ファイル: routes.php プロジェクト: joseacuna/plclclhmvc
//******************************rutas de aplicacion******************************/
//DropDown de Departamentos
Route::get('ajax-deptcat', function () {
    $input = Input::get('facultad_id');
    $departamento = Departamento::where('fk_facultad', '=', $input)->get();
    return Response::json($departamento);
});
//DropDown de Escuelas
Route::get('ajax-escucat', function () {
    $input = Input::get('facultad_id');
    $escuela = Escuela::where('fk_facultad', '=', $input)->get();
    return Response::json($escuela);
});
//DropDown de Carreras
Route::get('ajax-carrcat', function () {
    $input = Input::get('escuela_id');
    $carrera = Carrera::where('fk_escuela', '=', $input)->get();
    return Response::json($carrera);
});
//DropDorn de asignaturas con carreras
Route::get('ajax-asigcat', function () {
    $input = Input::get('carrera_id');
    $asignatura = Carrera::find($input)->asignaturas()->get();
    return Response::json($asignatura);
});
//dropdown diasPeriodos
Route::get('ajax-dia', function () {
    $periodo = Input::get('p_id');
    $dia = Horario::where('periodo', '=', $periodo)->get();
    return Response::json($dia);
});
コード例 #3
0
 /**
  * Listar registro de actividades con estado 1
  * POST agenda/agendaLibre
  *
  * @return Response
  */
 public function postLibre()
 {
     /**
      * Datos base para agendamiento
      */
     $diaMes = date("d");
     $diaSemana = date("N");
     $ini = date("Y/n/" . $diaMes);
     $fechaIni = date("Y-m-d");
     //Aumentandole 7 dias
     $fecha = new DateTime($ini);
     $fecha->add(new DateInterval('P7D'));
     $fechaFin = $fecha->format('Y-m-d');
     //Cabecera
     $idMes = date("m");
     //Mensaje de respuesta
     $agendaMsj = "";
     /**
      * Restriccion:
      * -----------
      * Agendamiento para trobas digitalizadas
      * en quiebres:
      *          - DIGITALIZACION
      *          - POST DIGIT
      * Solo si se encuentra el registro en dig_trobas
      */
     $agendarOrden = true;
     if (Input::get('quiebre') !== null) {
         $ffttData = new stdClass();
         $aquiebre = trim(Input::get('quiebre'));
         if ($aquiebre == 'DIGITALIZACION' or $aquiebre == 'POST DIGIT') {
             $ffttData->fftt = Input::get('fftt');
             $ffttData->tipoactu = Input::get('tipoactu');
             $ffttel = $this->_ffttController->getExplodefftt($ffttData);
             if ($ffttel["tipo"] == 'catv') {
                 //Buscar troba digitalizada
                 $trobadig = DB::table('geo_trobapunto AS gt')->join('dig_trobas AS dt', 'gt.id', '=', 'dt.troba_id')->where('gt.zonal', '=', 'LIM')->where('dt.fecha_fin', '!=', '0000-00-00')->where('gt.nodo', '=', $ffttel["nodo"])->where('gt.troba', '=', $ffttel["troba"])->select('gt.id', 'gt.zonal', 'gt.nodo', 'gt.troba', 'dt.fecha_inicio', 'dt.fecha_fin')->get();
                 //Indice [0] => existe respuesta
                 if (isset($trobadig[0])) {
                     $hoy = new DateTime($fechaIni);
                     $fin = new DateTime($trobadig[0]->fecha_fin);
                     $interval = $fin->diff($hoy);
                     $diasDiff = (int) $interval->format('%R%a');
                     //Si menor a +3 dias el día base cambia
                     if ($diasDiff < 3) {
                         $diasDiff *= -3;
                         $fechaIni = date("Y-m-d", strtotime($trobadig[0]->fecha_fin . " +3 day"));
                         $ini = date("Y/n/" . substr($fechaIni, -2));
                         $diaSemana = date("N", strtotime($fechaIni));
                         $diaMes = substr($fechaIni, -2);
                         $fechaFin = date("Y-m-d", strtotime($fechaIni . " +7 day"));
                         $idMes = date("m", strtotime($fechaIni));
                         //Mostrar agenda solo si $fechaIni = hoy
                         if ($fechaIni != date("Y-m-d")) {
                             $agendarOrden = false;
                             $agendaMsj = '<div class="alert alert-warning' . ' alert-dismissable">
                                       <button type="button" class="close"' . ' data-dismiss="alert"' . ' aria-hidden="true">×</button>
                                       <h4><i class="icon fa' . ' fa-warning"></i> Agenda' . ' disponible el ' . date("d/m/Y", strtotime($fechaIni)) . '</h4></div>';
                         }
                     }
                 } else {
                     //No se puede agendar por fecha de digitalizacion
                     $agendarOrden = false;
                     $agendaMsj = '<div class="alert alert-warning' . ' alert-dismissable">
                                       <button type="button" class="close"' . ' data-dismiss="alert"' . ' aria-hidden="true">×</button>
                                       <h4><i class="icon fa' . ' fa-warning"></i> Troba no' . ' digitalizada.</h4>
                                   </div>';
                 }
             }
         }
     }
     $zona = Input::get('zona');
     $empresa = Input::get('empresa');
     $tipo = Input::get('tipo');
     //1 o 2
     $quiebreGrupoId = Input::get('quiebre_grupo');
     $query = "SELECT \n                IF(b.fecha_agenda IS NULL, \n                    DATE_ADD(?, \n                        INTERVAL IF(a.diaId < ?, 7-?+a.diaId, a.diaId-?)\n                    DAY), \n                    b.fecha_agenda\n                ) fecha, \n                a.*, \n                IF(b.ocupado IS NULL, 0, b.ocupado) ocupado, \n                a.capacidad - IF(b.ocupado IS NULL, 0, b.ocupado) libre\n        FROM\n\n            (SELECT \n                dia_id as diaId, chd.horario_id as horarioId, d.nombre, h.horario\n                'hora', h.hora_inicio AS horaIni, h.hora_fin as horaFin,\n                chd.capacidad, ch.empresa_id as empresaId, \n                ch.zonal_id as zonalId, chd.estado as estado,\n                ch.quiebre_grupo_id\n            FROM \n                capacidad_horario ch \n                JOIN capacidad_horario_detalle chd \n                    ON chd.capacidad_horario_id=ch.id\n                JOIN horarios h ON chd.horario_id=h.id\n                JOIN dias d ON chd.dia_id=d.id\n            WHERE ch.quiebre_grupo_id=? AND ch.empresa_id=? \n            AND ch.zonal_id=? AND ch.horario_tipo_id=? and h.estado=1 \n            AND chd.estado=1\n            ) a\n\n        LEFT JOIN\n\n            (SELECT \n                gd.gestion_id AS id, \n                gm.fecha_agenda,q.quiebre_grupo_id,\n                gm.gestion_id, gm.empresa_id, gm.zonal_id, \n                gm.horario_id, gm.dia_id, COUNT(*) ocupado \n            FROM gestiones_movimientos gm\n            INNER JOIN gestiones_detalles gd ON gd.gestion_id=gm.gestion_id\n            INNER JOIN quiebres q ON q.id=gd.quiebre_id AND q.estado=1\n            INNER JOIN (\n                SELECT max(g2.id) id\n                FROM gestiones_movimientos g2\n                GROUP BY g2.gestion_id\n            ) gm2 ON gm2.id=gm.id\n            WHERE gm.fecha_agenda BETWEEN ? AND ?\n            AND gm.empresa_id=? \n            AND gm.zonal_id=?\n            AND q.quiebre_grupo_id=?\n            GROUP BY\n                gm.empresa_id, gm.zonal_id,\n                gm.horario_id, gm.dia_id,q.quiebre_grupo_id\n            ) b\n        ON a.empresaId=b.empresa_id AND a.zonalId=b.zonal_id\n        AND a.diaId=b.dia_id AND a.horarioId=b.horario_id\n        AND a.quiebre_grupo_id=b.quiebre_grupo_id\n        ORDER BY hora,fecha";
     $horarios = DB::select($query, array($fechaIni, $diaSemana, $diaSemana, $diaSemana, $quiebreGrupoId, $empresa, $zona, $tipo, $fechaIni, $fechaFin, $empresa, $zona, $quiebreGrupoId));
     $cantidadHorarios = Horario::where('horario_tipo_id', '=', $tipo)->where('estado', '=', 1)->get();
     $cantidadMinutos = HorarioTipo::where('id', '=', $tipo)->first();
     $cantidadMinutos = $cantidadMinutos->minutos;
     $nombreMeses = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
     $nombreDias = array("domingo", "lunes", "martes", "mi&eacute;rcoles", "jueves", "viernes", "s&aacute;bado", "domingo", "lunes", "martes", "mi&eacute;rcoles", "jueves", "viernes", "s&aacute;bado", "domingo", "lunes", "martes", "mi&eacute;rcoles", "jueves", "viernes");
     //creando la cabecera
     $table = '<table id="horario" class="table table-bordered"><thead style="font-size: 15px !important;">';
     $table .= '<tr><th colspan=8>' . date("Y") . ' - ' . $nombreMeses[$idMes - 1] . '</th></tr>';
     $table .= '<tr><th>Hora</th>';
     for ($i = 0; $i < 7; $i++) {
         $nuevafecha = strtotime("+{$i} day", strtotime($fechaIni));
         $nombreDia = $nombreDias[$diaSemana + $i];
         $numeroDia = $diaMes + $i;
         $table .= "<th>" . $nombreDia . "(" . date("d", $nuevafecha) . ")</th>";
     }
     $table .= '</tr></thead><tbody>';
     $numeroCeldaHora = 0;
     $numeroCeldaValor = 0;
     foreach ($cantidadHorarios as $value) {
         $horarioId = $value->id;
         $table .= '<tr><td title="' . $numeroCeldaHora . '" style="background:#49afcd">HORA</td>';
         $contDias = 0;
         $numeroCeldaValor++;
         foreach ($horarios as $data) {
             if ($horarioId == $data->horarioId) {
                 $fec = new DateTime($ini);
                 $fec->add(new DateInterval('P' . $contDias . 'D'));
                 $fechaRes = $fec->format('Y-m-d');
                 $nombreDia = $nombreDias[$diaSemana + $contDias];
                 $codigoDia = substr($fechaRes, 8, 2);
                 $codigoDia = $codigoDia == 0 ? 7 : $codigoDia;
                 $estado = "";
                 $cantLibres = (int) $data->libre;
                 /*$libres = "Total:"
                   . $data->capacidad
                   . "<br>Libres:"
                   . $cantLibres;*/
                 $libres = $cantLibres . "/" . $data->capacidad;
                 $hoy = date("Y-m-d");
                 if ($data->estado == 0) {
                     $estado = "background:#f0e535;color:#000";
                     //yellow
                 } elseif ($data->ocupado >= $data->capacidad) {
                     $estado = "background:#f0e535;color:#000";
                 } elseif ($hoy == $fechaRes) {
                     //sumar la cantidad de hora en el intervalo
                     $hora = new DateTime();
                     $hora->add(new DateInterval('PT' . $cantidadMinutos . 'M'));
                     $hora = $hora->format('H:i:s');
                     if ($hora >= $data->horaFin) {
                         $estado = "background:#f0e535;color:#000";
                     }
                     //yellow
                 }
                 //Imprimiendo estado del horario
                 $hora = $data->hora;
                 //$buscar=array(" ","-");
                 //$reemplazar=array("","");
                 //$hora = str_replace($buscar,$reemplazar,$hora);
                 $table = str_replace("HORA", $hora, $table);
                 $table .= '<td title="' . $numeroCeldaValor . '" data-fec="' . $fechaRes . '" data-horario="' . $data->horarioId . '" data-dia="' . $data->diaId . '" data-hora="' . $data->hora . '" data-total="' . $data->capacidad . '" style="' . $estado . '">' . $libres . '</td>';
                 $contDias++;
                 $numeroCeldaValor++;
             }
         }
         $table .= '</tr>';
         $numeroCeldaHora += 8;
     }
     $table .= '</tbody></table>';
     if ($agendarOrden) {
         return Response::json(array('rst' => 1, 'html' => $table));
     } else {
         return Response::json(array('rst' => 1, 'html' => $agendaMsj));
     }
 }