public static function findStatus($sort = null) { if ($sort != null) { if (isset($sort['sort'])) { $order = $sort['sort']; } if (isset($sort['date-ini']) && isset($sort['date-end']) && (DateTime::createFromFormat('d-m-Y', $sort['date-ini']) != false && DateTime::createFromFormat('d-m-Y', $sort['date-end']) != false)) { $between = " (date BETWEEN '" . date('Y-m-d', strtotime($sort['date-ini'])) . "' AND '" . date('Y-m-d', strtotime($sort['date-end'])) . "') "; } if (isset($sort['magazine'])) { $id_magazine = $sort['magazine']; if (isset($sort['edition'])) { $id_edition = $sort['edition']; } } if (isset($sort['client'])) { $client = $sort['client']; } if (isset($sort['executive'])) { $executive = $sort['executive']; } if (isset($sort['color'])) { $color = $sort['color']; } if (isset($sort['search'])) { $search = $sort['search']; } } $query = 'SELECT * FROM status '; $where = ''; // variable $where identifica que field uso el WHERE primero if (isset($between)) { $query .= ' WHERE ' . $between; $where = 'between'; } elseif (isset($client)) { $query .= ' WHERE id_client=' . $client; $where = 'client'; } elseif (isset($executive)) { $query .= ' WHERE id_user='******'executive'; } elseif (isset($color)) { $query .= ' WHERE color=' . $color; $where = 'color'; } elseif (isset($id_magazine)) { if ($id_magazine != 0) { $query .= ' WHERE magazine=' . $id_magazine; if (isset($id_edition)) { $query .= ' AND edition=' . $id_edition; } $where = 'magazine'; } } elseif (isset($search)) { $query .= ' WHERE ( status LIKE "%' . $search . '%" OR comments LIKE "%' . $search . '%" OR edition LIKE "%' . $search . '%" '; $where = 'search'; $that = new self(); if ($searchUsers = $that->getSearch($search, 'users')) { foreach ($searchUsers as $key) { $query .= ' OR id_user LIKE "%' . $key->id . '%" '; } } if ($searchContact = $that->getSearch($search, 'contact')) { foreach ($searchContact as $key) { $query .= ' OR id_contact LIKE "%' . $key->id . '%" '; } } if ($searchClient = $that->getSearch($search, 'client')) { foreach ($searchClient as $key) { $query .= ' OR id_client LIKE "%' . $key->id . '%" '; } } $query .= ' ) '; } // agrega un AND por cada field recibido if (isset($id_magazine) && ($id_magazine != 0 && $where != 'magazine')) { $query .= ' AND magazine=' . $id_magazine; if (isset($id_edition)) { $query .= ' AND edition=' . $id_edition; } } if (isset($client) && $where != 'client') { $query .= ' AND id_client=' . $client; } if (isset($executive) && $where != 'executive') { $query .= ' AND id_user='******'color') { $query .= ' AND color=' . $color; } if (isset($search) && $where != 'search') { $query .= ' AND ( status LIKE "%' . $search . '%" OR comments LIKE "%' . $search . '%" OR edition LIKE "%' . $search . '%" '; $that = new self(); if ($searchUsers = $that->getSearch($search, 'users')) { foreach ($searchUsers as $key) { $query .= ' OR id_user LIKE "%' . $key->id . '%" '; } } if ($searchContact = $that->getSearch($search, 'contact')) { foreach ($searchContact as $key) { $query .= ' OR id_contact LIKE "%' . $key->id . '%" '; } } if ($searchClient = $that->getSearch($search, 'client')) { foreach ($searchClient as $key) { $query .= ' OR id_client LIKE "%' . $key->id . '%" '; } } $query .= ' ) '; } if (isset($order)) { $query .= ' ORDER BY date ' . $order . ', time ' . $order; } else { $query .= ' ORDER BY date DESC, time DESC'; } //return $query; return $results = DB::select(DB::raw($query)); }
public function generateAdminForRelationList($relation, array $listFields) { $relatedModel = $this->relationClassFromRelation($relation); $relatedAdmin = new self($relatedModel, $this->controller); $relatedAdmin->setListFields($listFields); $relatedAdmin->setIsSubList(true); $relationField = $this->relationFieldFromRelation($relation); if ($relationField) { $criteria = $relatedAdmin->getSearch()->getCriteria(); $criteria->addCondition($relationField . ' = ' . $this->model->id); $relatedAdmin->setSubListParent(array($relationField => $this->model->id)); } return $relatedAdmin; }