Staging #1663
15 changed files with 294 additions and 69 deletions
|
|
@ -43,7 +43,7 @@ class GenerateBatteryCompatibilityCommand extends Command
|
||||||
$vehicles = $vm->getVehicles();
|
$vehicles = $vm->getVehicles();
|
||||||
foreach ($vehicles as $vehicle)
|
foreach ($vehicles as $vehicle)
|
||||||
{
|
{
|
||||||
$batteries = $vehicle->getBatteries();
|
$batteries = $vehicle->getActiveBatteries();
|
||||||
$comp_batt = [];
|
$comp_batt = [];
|
||||||
foreach ($batteries as $battery)
|
foreach ($batteries as $battery)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -823,7 +823,8 @@ class APIController extends Controller implements LoggedController
|
||||||
|
|
||||||
// batteries
|
// batteries
|
||||||
$batt_list = [];
|
$batt_list = [];
|
||||||
$batts = $vehicle->getBatteries();
|
// $batts = $vehicle->getBatteries();
|
||||||
|
$batts = $vehicle->getActiveBatteries();
|
||||||
foreach ($batts as $batt)
|
foreach ($batts as $batt)
|
||||||
{
|
{
|
||||||
// TODO: Add warranty_tnv to battery information
|
// TODO: Add warranty_tnv to battery information
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,7 @@ class BatteryController extends Controller
|
||||||
$row['height'] = $orow[0]->getHeight();
|
$row['height'] = $orow[0]->getHeight();
|
||||||
$row['total_height'] = $orow[0]->getTotalHeight();
|
$row['total_height'] = $orow[0]->getTotalHeight();
|
||||||
$row['image_file'] = $orow[0]->getImageFile();
|
$row['image_file'] = $orow[0]->getImageFile();
|
||||||
|
$row['flag_active'] = $orow[0]->isActive();
|
||||||
|
|
||||||
// add row metadata
|
// add row metadata
|
||||||
$row['meta'] = [
|
$row['meta'] = [
|
||||||
|
|
@ -182,7 +183,8 @@ class BatteryController extends Controller
|
||||||
->setHeight($req->request->get('height'))
|
->setHeight($req->request->get('height'))
|
||||||
->setTotalHeight($req->request->get('total_height'))
|
->setTotalHeight($req->request->get('total_height'))
|
||||||
->setSellingPrice($req->request->get('sell_price'))
|
->setSellingPrice($req->request->get('sell_price'))
|
||||||
->setImageFile($req->request->get('image_file'));
|
->setImageFile($req->request->get('image_file'))
|
||||||
|
->setActive($req->request->get('flag_active', false));
|
||||||
|
|
||||||
// initialize error list
|
// initialize error list
|
||||||
$error_array = [];
|
$error_array = [];
|
||||||
|
|
@ -308,6 +310,7 @@ class BatteryController extends Controller
|
||||||
->setTotalHeight($req->request->get('total_height'))
|
->setTotalHeight($req->request->get('total_height'))
|
||||||
->setSellingPrice($req->request->get('sell_price'))
|
->setSellingPrice($req->request->get('sell_price'))
|
||||||
->setImageFile($req->request->get('image_file'))
|
->setImageFile($req->request->get('image_file'))
|
||||||
|
->setActive($req->request->get('flag_active', false))
|
||||||
->clearVehicles();
|
->clearVehicles();
|
||||||
|
|
||||||
// initialize error list
|
// initialize error list
|
||||||
|
|
@ -424,7 +427,7 @@ class BatteryController extends Controller
|
||||||
$bmodel_id = $req->query->get('model_id');
|
$bmodel_id = $req->query->get('model_id');
|
||||||
$bsize_id = $req->query->get('size_id');
|
$bsize_id = $req->query->get('size_id');
|
||||||
|
|
||||||
// find the battery using model and size
|
// find the battery using model and size and battery must be active
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$query = $em->createQuery('SELECT b FROM App\Entity\Battery b
|
$query = $em->createQuery('SELECT b FROM App\Entity\Battery b
|
||||||
JOIN b.model bm
|
JOIN b.model bm
|
||||||
|
|
@ -432,7 +435,8 @@ class BatteryController extends Controller
|
||||||
JOIN b.manufacturer bmfg
|
JOIN b.manufacturer bmfg
|
||||||
WHERE bm.id = :bm_id
|
WHERE bm.id = :bm_id
|
||||||
AND bs.id = :bs_id
|
AND bs.id = :bs_id
|
||||||
AND bmfg.id = :bmfg_id')
|
AND bmfg.id = :bmfg_id
|
||||||
|
AND b.flag_active = true')
|
||||||
->setParameter('bmfg_id', $bmfg_id)
|
->setParameter('bmfg_id', $bmfg_id)
|
||||||
->setParameter('bm_id', $bmodel_id)
|
->setParameter('bm_id', $bmodel_id)
|
||||||
->setParameter('bs_id', $bsize_id);
|
->setParameter('bs_id', $bsize_id);
|
||||||
|
|
|
||||||
|
|
@ -270,7 +270,7 @@ class BatteryManufacturerController extends Controller
|
||||||
|
|
||||||
// get row data
|
// get row data
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$all_batts = $em->getRepository(Battery::class)->findAll();
|
$all_batts = $em->getRepository(Battery::class)->findBy(['flag_active' => true]);
|
||||||
|
|
||||||
foreach ($all_batts as $battery)
|
foreach ($all_batts as $battery)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1043,7 +1043,7 @@ class RiderAppController extends APIController
|
||||||
if ($rider == null)
|
if ($rider == null)
|
||||||
return new APIResponse(false, 'No rider found.');
|
return new APIResponse(false, 'No rider found.');
|
||||||
|
|
||||||
$batts = $em->getRepository(Battery::class)->findAll();
|
$batts = $em->getRepository(Battery::class)->findBy(['flag_active' => true]);
|
||||||
$models = $em->getRepository(BatteryModel::class)->findAll();
|
$models = $em->getRepository(BatteryModel::class)->findAll();
|
||||||
$sizes = $em->getRepository(BatterySize::class)->findAll();
|
$sizes = $em->getRepository(BatterySize::class)->findAll();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,8 @@ class BatteryController extends APIController
|
||||||
|
|
||||||
// batteries
|
// batteries
|
||||||
$batt_list = [];
|
$batt_list = [];
|
||||||
$batts = $vehicle->getBatteries();
|
// $batts = $vehicle->getBatteries();
|
||||||
|
$batts = $vehicle->getActiveBatteries();
|
||||||
foreach ($batts as $batt)
|
foreach ($batts as $batt)
|
||||||
{
|
{
|
||||||
// TODO: Add warranty_tnv to battery information
|
// TODO: Add warranty_tnv to battery information
|
||||||
|
|
|
||||||
|
|
@ -485,7 +485,7 @@ class VehicleController extends Controller
|
||||||
// get row data
|
// get row data
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$vobj = $em->getRepository(Vehicle::class)->find($req->request->get('vehicle_id'));
|
$vobj = $em->getRepository(Vehicle::class)->find($req->request->get('vehicle_id'));
|
||||||
$all_batts = $em->getRepository(Battery::class)->findAll();
|
$all_batts = $em->getRepository(Battery::class)->findBy(['flag_active' => true]);
|
||||||
|
|
||||||
if (empty($vobj))
|
if (empty($vobj))
|
||||||
throw $this->createNotFoundException('The item does not exist');
|
throw $this->createNotFoundException('The item does not exist');
|
||||||
|
|
@ -495,19 +495,20 @@ class VehicleController extends Controller
|
||||||
$battery_index = [];
|
$battery_index = [];
|
||||||
|
|
||||||
// get compatible batteries from selected manufacturer
|
// get compatible batteries from selected manufacturer
|
||||||
foreach ($vobj->getBatteries() as $battery)
|
// foreach ($vobj->getBatteries() as $battery)
|
||||||
|
foreach ($vobj->getActiveBatteries() as $battery)
|
||||||
{
|
{
|
||||||
$batteries[] = [
|
$batteries[] = [
|
||||||
'id' => $battery->getID(),
|
'id' => $battery->getID(),
|
||||||
'mfg_name' => $battery->getManufacturer()->getName(),
|
'mfg_name' => $battery->getManufacturer()->getName(),
|
||||||
'model_name' => $battery->getModel()->getName(),
|
'model_name' => $battery->getModel()->getName(),
|
||||||
'size_name' => $battery->getSize()->getName(),
|
'size_name' => $battery->getSize()->getName(),
|
||||||
'prod_code' => $battery->getProductCode(),
|
'prod_code' => $battery->getProductCode(),
|
||||||
'sell_price' => $battery->getSellingPrice(),
|
'sell_price' => $battery->getSellingPrice(),
|
||||||
'warr_private' => $battery->getWarrantyPrivate(),
|
'warr_private' => $battery->getWarrantyPrivate(),
|
||||||
'warr_commercial' => $battery->getWarrantyCommercial(),
|
'warr_commercial' => $battery->getWarrantyCommercial(),
|
||||||
];
|
];
|
||||||
$battery_index[$battery->getID()] = 1;
|
$battery_index[$battery->getID()] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// add all other batteries, because they want options
|
// add all other batteries, because they want options
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,12 @@ class Battery
|
||||||
*/
|
*/
|
||||||
protected $image_file;
|
protected $image_file;
|
||||||
|
|
||||||
|
// flag if battery is active
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="boolean", options={"default": true})
|
||||||
|
*/
|
||||||
|
protected $flag_active;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->vehicles = new ArrayCollection();
|
$this->vehicles = new ArrayCollection();
|
||||||
|
|
@ -159,6 +165,8 @@ class Battery
|
||||||
$this->total_height = 0;
|
$this->total_height = 0;
|
||||||
|
|
||||||
$this->date_create = new DateTime();
|
$this->date_create = new DateTime();
|
||||||
|
|
||||||
|
$this->flag_active = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getID()
|
public function getID()
|
||||||
|
|
@ -382,4 +390,15 @@ class Battery
|
||||||
{
|
{
|
||||||
return $this->image_file;
|
return $this->image_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isActive()
|
||||||
|
{
|
||||||
|
return $this->flag_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActive($flag_active = true)
|
||||||
|
{
|
||||||
|
$this->flag_active = $flag_active;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ namespace App\Entity;
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
|
use Doctrine\Common\Collections\Criteria;
|
||||||
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -177,4 +179,12 @@ class Vehicle
|
||||||
{
|
{
|
||||||
return $this->cust_vehicles;
|
return $this->cust_vehicles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getActiveBatteries()
|
||||||
|
{
|
||||||
|
$crit = Criteria::create();
|
||||||
|
$crit->where(Criteria::expr()->eq('flag_active', true));
|
||||||
|
|
||||||
|
return $this->batteries->matching($crit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1660,6 +1660,11 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
// validated! save the entity
|
// validated! save the entity
|
||||||
$em->persist($obj);
|
$em->persist($obj);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
|
// check if hub has valid mobile number
|
||||||
|
$phone_number = $this->country_code . $hub->getNotifNumber();
|
||||||
|
if (!empty($phone_number))
|
||||||
|
$this->sendSMSHubRejection($phone_number, $obj, $jo);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $error_array;
|
return $error_array;
|
||||||
|
|
@ -2404,9 +2409,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$hub['distance'] = false;
|
$hub['distance'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get rider counts
|
||||||
|
$rider_counts = $this->getHubRiderCounts($hub['hub']);
|
||||||
|
|
||||||
// counters
|
// counters
|
||||||
$hub['rider_count'] = count($hub['hub']->getAvailableRiders());
|
// get only the active riders for the total rider count per hub
|
||||||
|
// $hub['rider_count'] = count($hub['hub']->getAvailableRiders());
|
||||||
|
$hub['rider_count'] = count($hub['hub']->getActiveRiders());
|
||||||
$hub['redis_jo_count'] = $hub['jo_count'];
|
$hub['redis_jo_count'] = $hub['jo_count'];
|
||||||
|
|
||||||
|
$hub['rider_logged_in'] = $rider_counts['logged_in'];
|
||||||
|
$hub['rider_in_transit'] = $rider_counts['in_transit'];
|
||||||
|
$hub['rider_available'] = $rider_counts['available'];
|
||||||
|
|
||||||
//$hub['redis_jo_count'] = 0;
|
//$hub['redis_jo_count'] = 0;
|
||||||
// $hub['jo_count'] = count($hub['hub']->getForAssignmentJobOrders());
|
// $hub['jo_count'] = count($hub['hub']->getForAssignmentJobOrders());
|
||||||
$hub['jo_count'] = $hub['redis_jo_count'];
|
$hub['jo_count'] = $hub['redis_jo_count'];
|
||||||
|
|
@ -2553,6 +2568,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->fillDropdownParameters($params);
|
$this->fillDropdownParameters($params);
|
||||||
$this->fillFormTags($params);
|
$this->fillFormTags($params);
|
||||||
|
|
||||||
|
// get the rider data to display for table
|
||||||
|
$rider_data = $this->getRiderDataForAssignment($obj);
|
||||||
|
$params['rider_data'] = $rider_data;
|
||||||
|
|
||||||
// get template to display
|
// get template to display
|
||||||
$params['template'] = $this->getTwigTemplate('jo_assigning_form');
|
$params['template'] = $this->getTwigTemplate('jo_assigning_form');
|
||||||
$params['obj'] = $obj;
|
$params['obj'] = $obj;
|
||||||
|
|
@ -2715,10 +2734,20 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$hub['distance'] = false;
|
$hub['distance'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get rider counts
|
||||||
|
$rider_counts = $this->getHubRiderCounts($hub['hub']);
|
||||||
|
|
||||||
// counters
|
// counters
|
||||||
$hub['rider_count'] = count($hub['hub']->getAvailableRiders());
|
// get only the active riders for the total rider count per hub
|
||||||
|
// $hub['rider_count'] = count($hub['hub']->getAvailableRiders());
|
||||||
|
$hub['rider_count'] = count($hub['hub']->getActiveRiders());
|
||||||
// $hub['redis_jo_count'] = $hub['jo_count'];
|
// $hub['redis_jo_count'] = $hub['jo_count'];
|
||||||
$hub['redis_jo_count'] = 0;
|
$hub['redis_jo_count'] = 0;
|
||||||
|
|
||||||
|
$hub['rider_logged_in'] = $rider_counts['logged_in'];
|
||||||
|
$hub['rider_in_transit'] = $rider_counts['in_transit'];
|
||||||
|
$hub['rider_available'] = $rider_counts['available'];
|
||||||
|
|
||||||
// $hub['jo_count'] = count($hub['hub']->getForAssignmentJobOrders());
|
// $hub['jo_count'] = count($hub['hub']->getForAssignmentJobOrders());
|
||||||
$hub['jo_count'] = $hub['redis_jo_count'];
|
$hub['jo_count'] = $hub['redis_jo_count'];
|
||||||
|
|
||||||
|
|
@ -2818,6 +2847,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->fillDropdownParameters($params);
|
$this->fillDropdownParameters($params);
|
||||||
$this->fillFormTags($params);
|
$this->fillFormTags($params);
|
||||||
|
|
||||||
|
// get the rider data to display for table
|
||||||
|
$rider_data = $this->getRiderDataForAssignment($obj);
|
||||||
|
$params['rider_data'] = $rider_data;
|
||||||
|
|
||||||
$params['obj'] = $obj;
|
$params['obj'] = $obj;
|
||||||
$params['status_cancelled'] = JOStatus::CANCELLED;
|
$params['status_cancelled'] = JOStatus::CANCELLED;
|
||||||
// get template to display
|
// get template to display
|
||||||
|
|
@ -3273,6 +3306,34 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getHubRiderCounts($hub)
|
||||||
|
{
|
||||||
|
$em = $this->em;
|
||||||
|
|
||||||
|
$hub_id = $hub->getID();
|
||||||
|
|
||||||
|
// get in transit rider count aka flag_available is false AND current_jo_id is not null AND rider is active
|
||||||
|
$in_transit_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = false AND r.current_job_order IS NOT NULL AND r.flag_active = true');
|
||||||
|
$in_transit_query->setParameters(['hub_id' => $hub_id]);
|
||||||
|
$in_transit_count = $in_transit_query->getSingleScalarResult();
|
||||||
|
|
||||||
|
// get available rider count aka flag_available is true AND current_jo_id is null AND rider is active
|
||||||
|
$available_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = true AND r.current_job_order IS NULL AND r.flag_active = true');
|
||||||
|
$available_query->setParameters(['hub_id' => $hub_id]);
|
||||||
|
$available_count = $available_query->getSingleScalarResult();
|
||||||
|
|
||||||
|
// on duty count = in transit + available
|
||||||
|
$logged_in_count = $in_transit_count + $available_count;
|
||||||
|
|
||||||
|
$rider_count = [
|
||||||
|
'logged_in' => $logged_in_count,
|
||||||
|
'in_transit' => $in_transit_count,
|
||||||
|
'available' => $available_count,
|
||||||
|
];
|
||||||
|
|
||||||
|
return $rider_count;
|
||||||
|
}
|
||||||
|
|
||||||
protected function fillDropdownParameters(&$params)
|
protected function fillDropdownParameters(&$params)
|
||||||
{
|
{
|
||||||
$em = $this->em;
|
$em = $this->em;
|
||||||
|
|
@ -3495,6 +3556,49 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getRiderDataForAssignment($obj)
|
||||||
|
{
|
||||||
|
$hub = $obj->getHub();
|
||||||
|
|
||||||
|
$rider_data = [];
|
||||||
|
|
||||||
|
// get all active riders of hub
|
||||||
|
$active_riders = $hub->getActiveRiders();
|
||||||
|
|
||||||
|
// need to get first name, last name, contact number, plate number, status, image file
|
||||||
|
// status: Online (rider is logged in app), Offline (rider is not logged in app), In transit
|
||||||
|
|
||||||
|
foreach ($active_riders as $rider)
|
||||||
|
{
|
||||||
|
// in transit - flag_available = 0 AND current_job_order is not null
|
||||||
|
// online - flag_available = 1
|
||||||
|
// offline - flag_available = 0 AND current_job_order is null
|
||||||
|
$rider_status = '';
|
||||||
|
|
||||||
|
if ($rider->isAvailable())
|
||||||
|
{
|
||||||
|
$rider_status = 'Online';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($rider->getCurrentJobOrder() == null)
|
||||||
|
$rider_status = 'Offline';
|
||||||
|
else
|
||||||
|
$rider_status = 'In transit';
|
||||||
|
}
|
||||||
|
|
||||||
|
$rider_data[$rider->getID()] = [
|
||||||
|
'first_name' => $rider->getFirstName(),
|
||||||
|
'last_name' => $rider->getLastName(),
|
||||||
|
'contact_number' => $rider->getContactNumber(),
|
||||||
|
'plate_number' => $rider->getPlateNumber(),
|
||||||
|
'image_file' => $rider->getImageFile(),
|
||||||
|
'status' => $rider_status,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return $rider_data;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: re-enable search, figure out how to group the orWhere filters into one, so can execute that plus the pending filter
|
// TODO: re-enable search, figure out how to group the orWhere filters into one, so can execute that plus the pending filter
|
||||||
// check if datatable filter is present and append to query
|
// check if datatable filter is present and append to query
|
||||||
protected function setQueryFilters($datatable, &$query, $qb, $hubs, $tier, $status)
|
protected function setQueryFilters($datatable, &$query, $qb, $hubs, $tier, $status)
|
||||||
|
|
@ -3909,4 +4013,38 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->rt->sendSMS($phone_number, $this->translator->trans('message.battery_brand_allcaps'), $message);
|
$this->rt->sendSMS($phone_number, $this->translator->trans('message.battery_brand_allcaps'), $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function sendSMSHubRejection($phone_number, $rejection, $jo)
|
||||||
|
{
|
||||||
|
// sms content
|
||||||
|
// Job Order # - can get from jo
|
||||||
|
// Order Date and Time - get from jo
|
||||||
|
// Date and Time Rejected - get from rejection
|
||||||
|
// Enrollee Name - get from rejection ($hub->getName() . ' - ' . $hub->getBranch())
|
||||||
|
// Reason of Rejection - get from rejection
|
||||||
|
// Remarks - get from rejection
|
||||||
|
// Type of Service - get from jo
|
||||||
|
|
||||||
|
$hub = $rejection->getHub();
|
||||||
|
$jo_id = $jo->getID();
|
||||||
|
|
||||||
|
// convert to string format the date fields (order date and time and date and time rejected)
|
||||||
|
$order_date_time = $jo->getDateCreate()->format('d M Y g:i A');
|
||||||
|
$reject_date_time = $rejection->getDateCreate()->format('d M Y g:i A');
|
||||||
|
|
||||||
|
$enrollee = $hub->getName() . ' - ' . $hub->getBranch();
|
||||||
|
$reason = JORejectionReason::getName($rejection->getReason());
|
||||||
|
$remarks = $rejection->getRemarks();
|
||||||
|
|
||||||
|
$service_type = ServiceType::getName($jo->getServiceType());
|
||||||
|
|
||||||
|
$msg = 'Job Order #: ' . $jo_id . "\n" . 'Order Date and Time: ' . $order_date_time . "\n" .
|
||||||
|
'Date and Time Rejected: ' . $reject_date_time . "\n" . 'Enrollee Name: ' . $enrollee . "\n" .
|
||||||
|
'Reason of Rejection: ' . $reason . "\n" . 'Remarks: ' . $remarks . "\n" .
|
||||||
|
'Type of Service: ' . $service_type;
|
||||||
|
|
||||||
|
// error_log($msg);
|
||||||
|
|
||||||
|
$this->rt->sendSMS($phone_number, $this->translator->trans('message.battery_brand_allcaps'), $msg);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -714,7 +714,7 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
if (isset($data['error']))
|
if (isset($data['error']))
|
||||||
return $data;
|
return $data;
|
||||||
|
|
||||||
$batts = $this->em->getRepository(Battery::class)->findAll();
|
$batts = $this->em->getRepository(Battery::class)->findBy(['flag_active' => true]);
|
||||||
$models = $this->em->getRepository(BatteryModel::class)->findAll();
|
$models = $this->em->getRepository(BatteryModel::class)->findAll();
|
||||||
$sizes = $this->em->getRepository(BatterySize::class)->findAll();
|
$sizes = $this->em->getRepository(BatterySize::class)->findAll();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,20 @@
|
||||||
<div class="form-control-feedback hide" data-field="size"></div>
|
<div class="form-control-feedback hide" data-field="size"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group m-form__group row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<span class="m-switch m-switch--icon block-switch">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="flag_active" id="flag_active" value="1"{{ obj.isActive() ? ' checked' }}>
|
||||||
|
<label class="switch-label">Active</label>
|
||||||
|
<span></span>
|
||||||
|
</label>
|
||||||
|
</span>
|
||||||
|
<div class="form-control-feedback hide" data-field="flag_active"></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<label data-field="image_file">
|
<label data-field="image_file">
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,21 @@
|
||||||
title: 'Brand',
|
title: 'Brand',
|
||||||
width: 120
|
width: 120
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'flag_active',
|
||||||
|
title: 'Active',
|
||||||
|
template: function (row, index, datatable) {
|
||||||
|
var tag = '';
|
||||||
|
|
||||||
|
if (row.flag_active === true) {
|
||||||
|
tag = '<span class="m-badge m-badge--success m-badge--wide">Yes</span>';
|
||||||
|
} else {
|
||||||
|
tag = '<span class="m-badge m-badge--danger m-badge--wide">No</span>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
},
|
||||||
/*
|
/*
|
||||||
{
|
{
|
||||||
field: 'prod_code',
|
field: 'prod_code',
|
||||||
|
|
|
||||||
|
|
@ -754,7 +754,10 @@
|
||||||
<!--<th class="text-right">Distance</th>
|
<!--<th class="text-right">Distance</th>
|
||||||
<th class="text-right">Travel Time</th>
|
<th class="text-right">Travel Time</th>
|
||||||
-->
|
-->
|
||||||
<th class="text-right">Available Riders</th>
|
<th class="text-right">Total Rider Count</th>
|
||||||
|
<th class="text-right">On Duty</th>
|
||||||
|
<th class="text-right">In Transit</th>
|
||||||
|
<th class="text-right">Available</th>
|
||||||
<th class="text-right">Job Order Count</th>
|
<th class="text-right">Job Order Count</th>
|
||||||
<th class="text-right">Jobs For Assignment</th>
|
<th class="text-right">Jobs For Assignment</th>
|
||||||
<th class="text-right">Inventory</th>
|
<th class="text-right">Inventory</th>
|
||||||
|
|
@ -764,7 +767,7 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="placeholder-row{{ hubs|length > 0 ? ' hide' }}">
|
<tr class="placeholder-row{{ hubs|length > 0 ? ' hide' }}">
|
||||||
<td colspan="8">
|
<td colspan="11">
|
||||||
No items to display.
|
No items to display.
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -777,6 +780,9 @@
|
||||||
<td class="text-right">{{ hub.duration ? hub.duration : '-' }}</td>
|
<td class="text-right">{{ hub.duration ? hub.duration : '-' }}</td>
|
||||||
-->
|
-->
|
||||||
<td class="text-right">{{ hub.rider_count }}</td>
|
<td class="text-right">{{ hub.rider_count }}</td>
|
||||||
|
<td class="text-right">{{ hub.rider_logged_in|default('0') }}</td>
|
||||||
|
<td class="text-right">{{ hub.rider_in_transit|default('0') }}</td>
|
||||||
|
<td class="text-right">{{ hub.rider_available|default('0') }}</td>
|
||||||
<td class="text-right">{{ hub.redis_jo_count }}</td>
|
<td class="text-right">{{ hub.redis_jo_count }}</td>
|
||||||
<td class="text-right">{{ hub.jo_count }}</td>
|
<td class="text-right">{{ hub.jo_count }}</td>
|
||||||
<td class="text-right">{{ hub.inventory|default('0') }}</td>
|
<td class="text-right">{{ hub.inventory|default('0') }}</td>
|
||||||
|
|
@ -882,48 +888,64 @@
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<label>Click on a row to select a rider</label>
|
<label>Click on a row to select a rider</label>
|
||||||
<div class="form-control-feedback hide" data-field="rider"></div>
|
<div class="form-control-feedback hide" data-field="rider"></div>
|
||||||
<div class="table-frame" data-name="rider">
|
<div class="table-frame" data-name="rider">
|
||||||
<table id="riders-table" class="table table-compact table-hover table-clickable table-vcenter m-table">
|
<table id="riders-table" class="table table-compact table-hover table-clickable table-vcenter m-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th>First Name</th>
|
<th>First Name</th>
|
||||||
<th>Last Name</th>
|
<th>Last Name</th>
|
||||||
<th>Contact No.</th>
|
<th>Contact No.</th>
|
||||||
<th>Plate Number</th>
|
<th>Plate Number</th>
|
||||||
<th>Status</th>
|
<th>Status</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% set avail_riders = obj.getHub.getAvailableRiders|default([]) %}
|
<!--
|
||||||
<tr class="placeholder-row{{ obj.getHub and avail_riders|length > 0 ? ' hide' }}">
|
{% set avail_riders = obj.getHub.getAvailableRiders|default([]) %}
|
||||||
<td colspan="6">
|
<tr class="placeholder-row{{ obj.getHub and avail_riders|length > 0 ? ' hide' }}">
|
||||||
No riders available.
|
<td colspan="6">
|
||||||
</td>
|
No riders available.
|
||||||
</tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
{% if obj.getHub %}
|
{% if obj.getHub %}
|
||||||
{% for rider in avail_riders %}
|
{% for rider in avail_riders %}
|
||||||
<tr data-id="{{ rider.getID }}"{{ obj.getRider and obj.getRider.getID == rider.getID ? ' class="m-table__row--primary"' }}>
|
<tr data-id="{{ rider.getID }}"{{ obj.getRider and obj.getRider.getID == rider.getID ? ' class="m-table__row--primary"' }}>
|
||||||
<td>
|
<td>
|
||||||
<div class="user-portrait-sm" style="background-image: url('{{ rider.getImageFile ? "/uploads/" ~ rider.getImageFile : "/assets/images/user.gif" }}');"></div>
|
<div class="user-portrait-sm" style="background-image: url('{{ rider.getImageFile ? "/uploads/" ~ rider.getImageFile : "/assets/images/user.gif" }}');"></div>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ rider.getFirstName }}</td>
|
<td>{{ rider.getFirstName }}</td>
|
||||||
<td>{{ rider.getLastName }}</td>
|
<td>{{ rider.getLastName }}</td>
|
||||||
<td>{{ rider.getContactNumber }}</td>
|
<td>{{ rider.getContactNumber }}</td>
|
||||||
<td>{{ rider.getPlateNumber }}</td>
|
<td>{{ rider.getPlateNumber }}</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</tbody>
|
-->
|
||||||
</table>
|
{% if obj.getHub %}
|
||||||
</div>
|
{% for key, data in rider_data %}
|
||||||
</div>
|
<tr data-id="{{ key }}" {{ obj.getRider and obj.getRider.getID == key ? ' class="m-table__row--primary"' }}>
|
||||||
</div>
|
<td>
|
||||||
|
<div class="user-portrait-sm" style="background-image: url('{{ data['image_file'] ? "/uploads/" ~ data['image_file'] : "/assets/images/user.gif" }}');"></div>
|
||||||
|
</td>
|
||||||
|
<td> {{ data['first_name'] }} </td>
|
||||||
|
<td> {{ data['last_name'] }} </td>
|
||||||
|
<td> {{ data['contact_number'] }} </td>
|
||||||
|
<td> {{ data['plate_number'] }} </td>
|
||||||
|
<td> {{ data['status'] }} </td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -233,13 +233,13 @@ $(function() {
|
||||||
var batteryIds = [];
|
var batteryIds = [];
|
||||||
var battMfgModelSize = []
|
var battMfgModelSize = []
|
||||||
|
|
||||||
{% for batt in obj.getBatteries %}
|
{% for batt in obj.getActiveBatteries %}
|
||||||
trow = {
|
trow = {
|
||||||
id: "{{ batt.getID }}",
|
id: "{{ batt.getID }}",
|
||||||
manufacturer: "{{ batt.getManufacturer.getName|default('') }} ",
|
manufacturer: "{{ batt.getManufacturer.getName|default('') }} ",
|
||||||
model: "{{ batt.getModel.getName|default('') }}",
|
model: "{{ batt.getModel.getName|default('') }}",
|
||||||
size: "{{ batt.getSize.getName|default('') }}",
|
size: "{{ batt.getSize.getName|default('') }}",
|
||||||
sell_price: "{{ batt.getSellingPrice }}"
|
sell_price: "{{ batt.getSellingPrice }}",
|
||||||
};
|
};
|
||||||
|
|
||||||
battRows.push(trow);
|
battRows.push(trow);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue