Commit d86d3a50 by Tobin

Merge branch 'master' into 'dev_production'

Master See merge request !40
parents 4cca8d61 7916ea95
...@@ -40,6 +40,7 @@ class Bookings extends CI_Controller { ...@@ -40,6 +40,7 @@ class Bookings extends CI_Controller {
empty($mechanic_id))?'':$mechanic_id; empty($mechanic_id))?'':$mechanic_id;
$template['mechanic_data'] = $mechanic_data; $template['mechanic_data'] = $mechanic_data;
$template['bookingData'] = $this->Booking_model->getMechBookings($mechanic_id,'','0,1,3,4'); $template['bookingData'] = $this->Booking_model->getMechBookings($mechanic_id,'','0,1,3,4');
//pr($template['bookingData']);
$this->load->view('template',$template); $this->load->view('template',$template);
} }
......
...@@ -38,6 +38,8 @@ ...@@ -38,6 +38,8 @@
if (isset(apache_request_headers()['Auth'])) { if (isset(apache_request_headers()['Auth'])) {
$auth = apache_request_headers()['Auth']; $auth = apache_request_headers()['Auth'];
} }
define("PAYSTACK_SECRET_KEY", "sk_test_36658e3260b1d1668b563e6d8268e46ad6da3273");
} }
// customer_login // customer_login
...@@ -285,9 +287,9 @@ ...@@ -285,9 +287,9 @@
header('Content-type: application/json'); header('Content-type: application/json');
$postData = $_POST; $postData = $_POST;
$optionalData = array('optionlaDescription'=>'','optionalImages'=>array(),'optionalVideos'=>array()); $optionalData=array('optionlaDescription'=>'','optionalImages'=>array(),'optionalVideos'=>array());
$respArr = array('status'=>'0','message'=>'Something went wrong.'); $respArr = array('status'=>'0','message'=>'Something went wrong.');
if(empty($postData) || empty($postData = json_decode($postData['data'],true)) || if(empty($postData) || empty($postData = json_decode($postData['data'],true)) ||
!isset($postData['cost']) || empty($postData['cost']) || !isset($postData['cost']) || empty($postData['cost']) ||
!isset($postData['customer_id']) || empty($postData['customer_id']) || !isset($postData['customer_id']) || empty($postData['customer_id']) ||
...@@ -322,6 +324,7 @@ ...@@ -322,6 +324,7 @@
$postData['optionalData'] = $optionalData; $postData['optionalData'] = $optionalData;
$status = $this->Booking_model->scheduleBooking($postData); $status = $this->Booking_model->scheduleBooking($postData);
if($status){ if($status){
$respArr['status'] = '1'; $respArr['status'] = '1';
$respArr['message'] = 'Success'; $respArr['message'] = 'Success';
...@@ -472,7 +475,7 @@ ...@@ -472,7 +475,7 @@
echo json_encode($respArr);exit; echo json_encode($respArr);exit;
} }
$status=$this->Booking_model->changeBookStatus($postData['customer_id'],$postData['booking_id'],'3'); $status=$this->Booking_model->changeBookStatus($postData['customer_id'],$postData['booking_id'],'4');
if($status){ if($status){
$respArr['status'] = 1; $respArr['status'] = 1;
...@@ -1343,6 +1346,116 @@ ...@@ -1343,6 +1346,116 @@
$result = $this->Webservice_model->rate_mechanic($postData); $result = $this->Webservice_model->rate_mechanic($postData);
echo json_encode($result);exit; echo json_encode($result);exit;
} }
public function acceptMechanicQuote(){
header('Content-type:application/json');
$headers = apache_request_headers();
$post = file_get_contents("php://input");
$postData = json_decode($post,true);
$result = $this->Webservice_model->acceptMechanicQuote($postData);
echo json_encode($result);exit;
}
public function payNow($transId) {
$result = array();
$mech_data = $this->Webservice_model->getMechAmount($transId);
$amount = $mech_data['data']['amount'] * 100;
$callback_url = base_url().'Webservices/verify_payment/'.$transId;
$postdata = array('email' => $mech_data['emailId'], 'amount' => $amount,"reference" => $transId, "callback_url" => $callback_url);
$url = "https://api.paystack.co/transaction/initialize";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($postdata)); //Post Fields
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$headers = [
'Authorization: Bearer '.PAYSTACK_SECRET_KEY,
'Content-Type: application/json',
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$request = curl_exec ($ch);
curl_close ($ch);
if ($request) {
$result = json_decode($request, true);
}
$redir = $result['data']['authorization_url'];
header("Location: ".$redir);
}
public function verify_payment($ref) {
$result = array();
$url = 'https://api.paystack.co/transaction/verify/'.$ref;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt(
$ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer '.PAYSTACK_SECRET_KEY]
);
$request = curl_exec($ch);
curl_close($ch);
if ($request) {
$result = json_decode($request, true);
$status = $this->Webservice_model->transactionResp($ref,$result);
if($status){
if($result){
if($result['data']){
if($result['data']['status'] == 'success'){
header("Location: ".base_url().'Webservices/success/'.$ref);
}else{
header("Location: ".base_url().'Webservices/fail/'.$ref);
}
}
else{
header("Location: ".base_url().'Webservices/fail/'.$ref);
}
}else{
header("Location: ".base_url().'Webservices/fail/'.$ref);
}
}
}else{
header("Location: ".base_url().'Webservices/fail/'.$ref);
}
}
public function fail($ref = ''){
header("Location: http://localhost:4200/dashboard?status=failure&tab=appointment&ref=".$ref);
}
public function success($ref = ''){
$this->db->select('customer_vehicle.car_name,bookings.scheduled_date,bookings.scheduled_time,customers.email,bookings.cost');
$this->db->from('transaction');
$this->db->join('bookings','transaction.booking_id = bookings.booking_id');
$this->db->join('customer_vehicle','customer_vehicle.customer_veh_id = bookings.customer_veh_id');
$this->db->join('customers','customers.customer_id = bookings.customer_id');
$this->db->where('transaction.id',$ref);
$bookData = $this->db->get()->row();
$subject = "DcarFixxers, Payment Successfull";
$email_id = $bookData->email;
$message = "<html>
<body>
Hi,\n\r Welcome to DcarFixxers. \r\n Your Payment for the vehicle ".$bookData->car_name." on date ".$bookData->scheduled_date." at ".$bookData->scheduled_time." for amount ".$bookData->cost." is Success
</body>
</html>";
$template = getNotifTemplate();
if(isset($template['success_booking']) && !empty($template['success_booking'])){
$message = str_replace(array('{:car_name}','{:book_date}','{:amount}'),array($bookData->car_name,$bookData->scheduled_date,$bookData->cost),$template['success_booking']);
}
send_mail($subject,$email_id,$message);
header("Location: http://localhost:4200/dashboard?status=success&tab=appointment&ref=".$ref);
}
} }
?> ?>
...@@ -95,4 +95,35 @@ ...@@ -95,4 +95,35 @@
$unique = md5(uniqid(time().mt_rand(), true)); $unique = md5(uniqid(time().mt_rand(), true));
return $unique; return $unique;
} }
function getNotifTemplate(){
$CI = & get_instance();
$settings = $CI->db->get('notification_templates');
return (!empty($settings))?$settings->row_array():'';
}
function send_mail($subject,$email,$message,$attach=null) {
$ci =& get_instance();
$ci->load->library('email');
$ci->email->initialize(array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.sendgrid.net',
'smtp_user' => '[email protected]',
'smtp_pass' => 'Golden_123',
'smtp_port' => 587,
'crlf' => "\r\n",
'newline' => "\r\n"
));
$ci->email->from('[email protected]', 'DcarFixxers');
$ci->email->to($email);
$ci->email->cc('[email protected]');
$ci->email->subject($subject);
$ci->email->message($message);
$ci->email->set_mailtype('html');
if($attach != null) {
$ci->email->attach($attach);
}
return $ci->email->send();
}
?> ?>
\ No newline at end of file
...@@ -6,184 +6,336 @@ class Booking_model extends CI_Model { ...@@ -6,184 +6,336 @@ class Booking_model extends CI_Model {
} }
public function scheduleBooking($postData = array()){ public function scheduleBooking($postData = array()){
if(empty($postData) || if(empty($postData) ||
!isset($postData['customer_id']) || empty($postData['customer_id']) || !isset($postData['customer_id']) || empty($postData['customer_id']) ||
!isset($postData['pickup_data']) || empty($postData['pickup_data']) || !isset($postData['pickup_data']) || empty($postData['pickup_data']) ||
!isset($postData['vechile_info']) || empty($postData['vechile_info']) || !isset($postData['vechile_info']) || empty($postData['vechile_info']) ||
!isset($postData['mechanic_id']) || empty($postData['mechanic_id']) || !isset($postData['mechanic_id']) || empty($postData['mechanic_id']) ||
!isset($postData['selected_issues']) || empty($postData['selected_issues'])){ !isset($postData['selected_issues']) || empty($postData['selected_issues'])){
return 0; return 0;
} }
$vehData = $postData['vechile_info']; $vehData = $postData['vechile_info'];
$car_name = $vehData['modelYear'].' '.$vehData['maker'].' '.$vehData['modelName']; $car_name = $vehData['modelYear'].' '.$vehData['maker'].' '.$vehData['modelName'];
$vehJson = array('vehicle' => $car_name,'attributes' => $vehJson = array('vehicle' => $car_name,
array('Year' => $vehData['modelYear'], 'attributes' => array(
'Make' => $vehData['maker'], 'Year' => $vehData['modelYear'],
'Trim' => $vehData['trim'], 'Make' => $vehData['maker'],
'Model' => $vehData['modelName'], 'Trim' => $vehData['trim'],
'Engine' => $vehData['emgine'])); 'Model' => $vehData['modelName'],
if(isset($vehData['lastMaintanceDate']) && !empty($vehData['lastMaintanceDate'])){ 'Engine' => $vehData['emgine']
$last_date = $vehData['lastMaintanceDate']; )
}else{ );
$last_date =''; $last_date ='';
} if(isset($vehData['lastMaintanceDate']) && !empty($vehData['lastMaintanceDate'])){
$insert_array = array('customer_id' => $postData['customer_id'], $last_date = $vehData['lastMaintanceDate'];
'car_name' => $car_name, }
'car_model' => $vehData['modelName'],
'car_maker' => $vehData['maker'], $last_maintanence_date ='';
'car_loc_lat' => $postData['pickup_data']['pickup_lat'], if(isset($vehData['maintanenceInterval']) && !empty($vehData['maintanenceInterval'])){
'car_loc_lng' => $postData['pickup_data']['pickup_lng'], $last_maintanence_date = $vehData['maintanenceInterval'];
'car_location' => $postData['pickup_data']['pickup_loc'], }
'vehicle_data' => json_encode($vehJson),
'car_model_year'=> $vehData['modelYear'], $last_id = '';
'last_maintenance_date'=>$last_date, if(isset($postData['customer_vehicle_id']) && !empty($postData['customer_vehicle_id'])){
'status' => '3'); $last_id = $postData['customer_vehicle_id'];
$this->db->update('customer_vehicle',array('last_maintenance_date'=>$last_date,'maintanence_interval'=>$last_maintanence_date),array('customer_veh_id'=>$postData['customer_vehicle_id']));
$selected_issues = array(); }
foreach($postData['selected_issues'] AS $selIssue){
$selected_issues[] = array('issue' => $selIssue['issue'], $insert_array = array('customer_id' => $postData['customer_id'],
'issue_id' => $selIssue['issue_id'], 'car_name' => $car_name,
'sub_issue_id' => $selIssue['sub_issue_id'], 'car_model' => $vehData['modelName'],
'issue_category' => $selIssue['issue_category']); 'car_maker' => $vehData['maker'],
} 'car_loc_lat' => $postData['pickup_data']['pickup_lat'],
'car_loc_lng' => $postData['pickup_data']['pickup_lng'],
if($this->db->insert('customer_vehicle',$insert_array)){ 'car_location' => $postData['pickup_data']['pickup_loc'],
'vehicle_data' => json_encode($vehJson),
$last_id = $this->db->insert_id(); 'car_model_year' => $vehData['modelYear'],
'last_maintenance_date'=> $last_date,
$book_data = array('cost' => $postData['cost'], 'maintanence_interval' => (int)$last_maintanence_date,
'mileage' => $vehData['milage'], 'status' => '3');
'customer_id' => $postData['customer_id'],
'mechanic_id' => $postData['mechanic_id'], $selected_issues = array();
'scheduled_date' => $postData['schedule_date']['date'], foreach($postData['selected_issues'] AS $selIssue){
'scheduled_time' => $postData['schedule_date']['time'], $selected_issues[] = array('issue' => $selIssue['issue'],
'issues_selected' => json_encode($selected_issues), 'issue_id' => $selIssue['issue_id'],
'customer_veh_id' => $last_id, 'sub_issue_id' => $selIssue['sub_issue_id'],
'custom_issue_data'=> json_encode($postData['optionalData']), 'issue_category' => $selIssue['issue_category']);
'status' => '0'); }
if(empty($last_id)){
if($this->db->insert('bookings',$book_data)){ $this->db->insert('customer_vehicle',$insert_array);
return 1; $last_id = $this->db->insert_id();
} }
$book_data = array('cost' => $postData['cost'],
'mileage' => $vehData['milage'],
'customer_id' => $postData['customer_id'],
//'mechanic_id' => $postData['mechanic_id'],
'scheduled_date' => $postData['schedule_date']['date'],
'scheduled_time' => $postData['schedule_date']['time'],
'issues_selected' => json_encode($selected_issues),
'customer_veh_id' => $last_id,
'custom_issue_data'=> json_encode($postData['optionalData']),
'car_loc_lat' => $postData['pickup_data']['pickup_lat'],
'car_loc_lng' => $postData['pickup_data']['pickup_lng'],
'car_location' => $postData['pickup_data']['pickup_loc'],
'is_multiple' => (isset($postData['multiple']))?$postData['multiple']:0,
'status' => '0');
if($this->db->insert('bookings',$book_data)){
$insertBookMech = array();
$book_id = $this->db->insert_id();
$mechanic_id = explode(',',$postData['mechanic_id']);
foreach ($mechanic_id AS $mech_id) {
$mech_amt = explode(':',$mech_id);
$insertBookMech[] = array('booking_id'=>$book_id,'mechanic_id'=>$mech_amt[0],'amount'=>$mech_amt[1],'status'=>'0');
}
if(!empty($insertBookMech)){
$this->db->insert_batch('mechanic_booking',$insertBookMech);
}
return 1;
} }
return 0; return 0;
}
function getCustBookDetails($postData = array(), $status = ''){
$cond = array();
$where_cond = array();
if(empty($postData) || !isset($postData['customer_id']) || empty($postData['customer_id'])){
return 0;
}
$cond = "BK.customer_id='".$postData['customer_id']."' ";
$cond .= (!empty($status))?"AND BK.status IN (".$status.") ":'';
$sql = "SELECT BK.booking_id,BK.customer_id,BK.customer_veh_id,BK.scheduled_date,
BK.scheduled_time,BK.cost,BK.is_multiple,BK.status,VEH.car_name,VEH.car_maker,
VEH.car_model,VEH.car_model_year,BK.status
FROM bookings AS BK
INNER JOIN customer_vehicle AS VEH ON (VEH.customer_veh_id = BK.customer_veh_id)
WHERE $cond
GROUP BY BK.booking_id";
$bookData = $this->db->query($sql);
if(empty($bookData)){
return 0;
} }
function getCustBookDetails($postData = array(), $status = ''){ $bookDetails = array();
$cond = array(); $bookData = $bookData->result();
if(empty($postData) || !isset($postData['customer_id']) || empty($postData['customer_id'])){ foreach($bookData AS $book) {
return 0; $bookMechData=$this->db->query("SELECT * FROM mechanic_booking
WHERE booking_id='$book->booking_id' AND status!='2'");
if(!empty($bookMechData)){
$bookMechData = $bookMechData->result();
foreach ($bookMechData AS $mech_value) {
$mechanic_data = $this->db->query("
SELECT ROUND(AVG(MR.rate),2) AS rating,MCH.mechanic_id,MCH.first_name,
MCH.last_name,MCH.phone,CQ.custom_service_quote,MCH.location,
MCH.email_id,CQ.custom_amount,BK.status,BK.amount as mechanic_amount
FROM mechanic_booking AS BK
INNER JOIN mechanic MCH ON BK.mechanic_id=MCH.mechanic_id
INNER JOIN admin_users AU ON AU.id=MCH.mechanic_id
LEFT JOIN custom_quote CQ ON
CQ.mechanic_id=BK.mechanic_id AND
CQ.booking_id=BK.booking_id AND CQ.status='1'
LEFT JOIN mechanic_rating MR ON
MR.mechanic_id=BK.mechanic_id AND MR.status='1'
WHERE AU.status='1' AND BK.mechanic_id='$mech_value->mechanic_id' AND
BK.booking_id='$book->booking_id'");
if(!empty($mechanic_data)){
$mechData = $mechanic_data->row();
$mechData->custom_service_quote = json_decode($mechData->custom_service_quote);
$book->mechanic_data[] = $mechData;
$sTime = strtotime($book->scheduled_date.' '.$book->scheduled_time);
$cTime = strtotime('+1 hour');
if($cTime >= $sTime){
$book->status = '4';
}
}
} }
$cond = "BK.customer_id='".$postData['customer_id']."' "; }
$cond .= (!empty($status))?"AND BK.status IN (".$status.") ":''; $bookDetails[] = $book;
$sql = "SELECT BK.booking_id,BK.customer_id,BK.mechanic_id,BK.customer_veh_id,BK.scheduled_date,
BK.scheduled_time,BK.cost,BK.status,MECH.first_name,MECH.last_name,VEH.car_name,
BK.status
FROM bookings AS BK
INNER JOIN mechanic AS MECH ON (MECH.mechanic_id = BK.mechanic_id)
INNER JOIN customer_vehicle AS VEH ON (VEH.customer_veh_id = BK.customer_veh_id)
WHERE $cond
GROUP BY BK.booking_id";
$bookData = $this->db->query($sql);
if(!empty($bookData)){
return $bookData->result();
}
return 0;
} }
return $bookDetails;
}
function changeBookStatus($customer_id = '', $booking_id = '', $status = ''){ function changeBookStatus($customer_id = '', $booking_id = '', $status = ''){
if(empty($customer_id) || empty($booking_id) || $status == ''){ if(empty($customer_id) || empty($booking_id) || $status == ''){
return 0; return 0;
} }
$status = $this->db->update('bookings', $status = $this->db->update('bookings',
array('status'=>$status), array('status'=>$status),
array('customer_id'=>$customer_id,'booking_id'=>$booking_id)); array('customer_id'=>$customer_id,'booking_id'=>$booking_id));
return $status; $this->db->select('customer_vehicle.car_name,bookings.scheduled_date,bookings.scheduled_time,customers.email');
$this->db->from('bookings');
$this->db->join('customer_vehicle','customer_vehicle.customer_veh_id = bookings.customer_veh_id');
$this->db->join('customers','customers.customer_id = bookings.customer_id');
$this->db->where('bookings.booking_id',$booking_id);
$bookData = $this->db->get()->row();
$subject = "DcarFixxers, Cancel Booking";
$email_id = $bookData->email;
$message = "<html>
<body>
Hi,\n\r Welcome to DcarFixxers. \r\n Your booking for the vehicle ".$bookData->car_name." on date ".$bookData->scheduled_date." at ".$bookData->scheduled_time." is Cancelled.
</body>
</html>";
$template = getNotifTemplate();
if(isset($template['cancel_booking']) && !empty($template['cancel_booking'])){
$message = str_replace(array('{:car_name}','{:book_date}'),array($bookData->car_name,$bookData->scheduled_date),$template['cancel_booking']);
} }
send_mail($subject,$email_id,$message);
function getMechBookings($mechanic_id = '', $booking_id = '', $status = '1'){ return $status;
if($this->session->userdata('user_type') != 1 && empty($mechanic_id)){ }
return 0;
} function getMechBookings($mechanic_id = '', $booking_id = '', $status = '1'){
if($this->session->userdata('user_type') != 1 && empty($mechanic_id)){
return 0;
}
$cond = " BK.status IN (".$status.") ";
$cond .= (!empty($booking_id))?" AND BK.booking_id='".$booking_id."' ":"";
$cond .= (!empty($mechanic_id))?" AND MBK.mechanic_id='".$mechanic_id."' ":"";
$sql = "SELECT GROUP_CONCAT(DISTINCT(MBK.mechanic_id)) AS mechanic_ids,BK.booking_id,BK.customer_id,
BK.customer_veh_id,BK.scheduled_date,BK.scheduled_time,BK.cost,BK.status,BK.mileage,
BK.issues_selected,VEH.car_name,BK.custom_issue_data,VEH.car_model,VEH.car_maker,
VEH.car_model_year,VEH.car_vin,VEH.vehicle_data,BK.car_location,BK.car_loc_lat,
BK.car_loc_lng,CUST.first_name AS custFirstName,CUST.last_name AS custLastName,CUST.phone,
CUST.email,CUST.address,CUST.profile_image,CUST.date_of_birth,CUSQTE.custom_id,
MBK.status AS mech_status
FROM bookings AS BK
INNER JOIN mechanic_booking AS MBK ON (MBK.booking_id=BK.booking_id)
INNER JOIN customers AS CUST ON (CUST.customer_id=BK.customer_id)
INNER JOIN admin_users AS ADM ON (ADM.id=MBK.mechanic_id)
INNER JOIN customer_vehicle AS VEH ON (VEH.customer_veh_id=BK.customer_veh_id)
LEFT JOIN custom_quote AS CUSQTE on (CUSQTE.booking_id = BK.booking_id
AND CUSQTE.mechanic_id=MBK.mechanic_id)
WHERE $cond AND ADM.status='1' AND CUST.status='1'
GROUP BY BK.booking_id";
$cond = " BK.status IN (".$status.") "; $bookData = $this->db->query($sql);
$cond .= (!empty($booking_id))?" AND BK.booking_id='".$booking_id."' ":""; if(!empty($bookData)){
$cond .= (!empty($mechanic_id))?" AND BK.mechanic_id='".$mechanic_id."' ":""; if(empty($booking_id)){
return $bookData->result();
$sql = "SELECT BK.booking_id,BK.customer_id,BK.mechanic_id,BK.customer_veh_id,BK.scheduled_date, }
BK.scheduled_time,BK.cost,BK.status,BK.mileage,BK.issues_selected,VEH.car_name, $bookedMechanics = array();
BK.custom_issue_data,MECH.first_name AS mechFirstName,VEH.car_model, $bookData = $bookData->row();
MECH.last_name AS mechLastName,VEH.car_maker,VEH.car_model_year,VEH.car_vin, if(!empty($bookData->mechanic_ids)){
VEH.vehicle_data,VEH.car_location,VEH.car_loc_lat,VEH.car_loc_lng, $mechanics = explode(',',$bookData->mechanic_ids);
CUST.first_name AS custFirstName,CUST.last_name AS custLastName,CUST.phone, foreach ($mechanics AS $mech_id) {
CUST.email,CUST.address,CUST.profile_image,CUST.date_of_birth,CUSQTE.custom_id $mechanic_data = $this->db->query("
FROM bookings AS BK SELECT ROUND(AVG(MR.rate),2) AS rating,MCH.mechanic_id,MCH.first_name,
INNER JOIN mechanic AS MECH ON (MECH.mechanic_id=BK.mechanic_id) MCH.last_name,MCH.phone,CQ.custom_service_quote,MCH.location,
INNER JOIN customers AS CUST ON (CUST.customer_id=BK.customer_id) MCH.email_id,CQ.custom_amount,
INNER JOIN admin_users AS ADM ON (ADM.id=BK.mechanic_id) CASE
INNER JOIN customer_vehicle AS VEH ON (VEH.customer_veh_id=BK.customer_veh_id) WHEN BK.status = '0' THEN 'Pending'
LEFT JOIN custom_quote AS CUSQTE on (CUSQTE.booking_id = BK.booking_id) WHEN BK.status = '1' THEN 'Accept'
WHERE $cond AND ADM.status='1' AND CUST.status='1' ELSE 'Reject' END as status
GROUP BY BK.booking_id"; FROM mechanic_booking AS BK
INNER JOIN mechanic MCH ON BK.mechanic_id=MCH.mechanic_id
$bookData = $this->db->query($sql); INNER JOIN admin_users AU ON AU.id=MCH.mechanic_id
if(!empty($bookData)){ LEFT JOIN custom_quote CQ ON
$bookData = (!empty($booking_id))?$bookData->row():$bookData->result(); CQ.mechanic_id=BK.mechanic_id AND
return $bookData; CQ.booking_id=BK.booking_id AND CQ.status='1'
} LEFT JOIN mechanic_rating MR ON
return 0; MR.mechanic_id=BK.mechanic_id AND MR.status='1'
WHERE AU.status='1' AND BK.mechanic_id='$mech_id' AND BK.booking_id='$booking_id'");
if(!empty($mechanic_data)){
$mechData = $mechanic_data->row();
$mechData->custom_service_quote = json_decode($mechData->custom_service_quote);
$bookedMechanics[] = $mechData;
}
}
$bookData->mechanic_data = $bookedMechanics;
}
// pr($bookData);
return $bookData;
} }
return 0;
}
function changeStatus($booking_id = '', $status = '0'){ function changeStatus($booking_id = '', $status = '0'){
if(empty($booking_id)){ if(empty($booking_id)){
return 0; return 0;
} }
$status=$this->db->update('bookings',array('status'=>$status),array('booking_id'=>$booking_id)); if($this->session->userdata('user_type')==1){
return $status; if($status == '1'){
$status=$this->db->update('bookings',array('status'=>'0'),array('booking_id'=>$booking_id));
}
else if($status == '4'){
$status=$this->db->update('bookings',array('status'=>'4'),array('booking_id'=>$booking_id));
}
else if($status == '2'){
$this->db->update('bookings',array('status'=>'2'),array('booking_id'=>$booking_id));
}
}else{
$id = $this->session->userdata('id');
if($status == '4'){
$this->db->update('mechanic_booking',
array('status'=>'2'),
array('booking_id'=>$booking_id,'mechanic_id'=> $id));
}
else if($status == '1'){
$this->db->update('mechanic_booking',
array('status'=>'1'),
array('booking_id'=>$booking_id,'mechanic_id'=> $id));
}
else if($status == '2'){
$this->db->update('mechanic_booking',
array('status'=>'2'),
array('booking_id'=>$booking_id,'mechanic_id'=> $id));
}
} }
return $status;
}
function insertCustomQuote($data){ function insertCustomQuote($data){
$custData = array();$total=0; $custData = array();$total=0;
$book_id = decode_param($data['booking_id']); $book_id = decode_param($data['booking_id']);
unset($data['booking_id']); $mechanic_id = ($this->session->userdata('user_type')==2)?$this->session->userdata('id'):'';
for($i=0 ; $i < count($data['description']);$i++){
$custData[$i]['issue_id']=$data['issue_id'][$i]; unset($data['booking_id']);
$custData[$i]['sub_issue_id']=$data['sub_issue_id'][$i]; for($i=0 ; $i < count($data['description']);$i++){
$custData[$i]['description']=$data['description'][$i]; $custData[$i]['issue_id']=$data['issue_id'][$i];
$custData[$i]['amount']=$data['amount'][$i]; $custData[$i]['sub_issue_id']=$data['sub_issue_id'][$i];
$total += $data['amount'][$i]; $custData[$i]['issue_category']=$data['issue_category'][$i];
} $custData[$i]['description']=$data['description'][$i];
$book_data = $this->db->get_where('custom_quote',array('booking_id'=>$book_id)); $custData[$i]['amount']=$data['amount'][$i];
$total += $data['amount'][$i];
if(!empty($book_data) && $book_data->num_rows() > 0){ }
$this->db->update('custom_quote',array('custom_service_quote'=>json_encode($custData),'custom_amount'=>$total),array('booking_id'=>$book_id)); $book_data = $this->db->get_where('custom_quote',array('booking_id'=>$book_id));
$res = array('status'=>'success');
}else{ if(!empty($book_data) && $book_data->num_rows() > 0){
if($this->db->insert('custom_quote',array('booking_id'=>$book_id,'custom_service_quote'=>json_encode($custData),'custom_amount'=>$total))){ $this->db->update('custom_quote',array('custom_service_quote'=>json_encode($custData),'mechanic_id'=>$mechanic_id,'custom_amount'=>$total),array('booking_id'=>$book_id));
$last_id = $this->db->insert_id(); $res = array('status'=>'success');
$res = array('status'=>'success','data'=>encode_param($last_id)); }else{
} if($this->db->insert('custom_quote',array('booking_id'=>$book_id,'mechanic_id'=>$mechanic_id,'custom_service_quote'=>json_encode($custData),'custom_amount'=>$total))){
$last_id = $this->db->insert_id();
$res = array('status'=>'success','data'=>encode_param($last_id));
} }
return $res; }
} return $res;
}
public function getCustomData($customid){ public function getCustomData($customid){
$this->db->select('custom_quote.custom_service_quote,custom_quote.custom_amount,bookings.issues_selected'); $this->db->select('custom_quote.custom_service_quote,custom_quote.custom_amount,bookings.issues_selected');
$this->db->join('bookings','bookings.booking_id = custom_quote.booking_id'); $this->db->join('bookings','bookings.booking_id = custom_quote.booking_id');
$this->db->where('custom_quote.custom_id',$customid); $this->db->where('custom_quote.custom_id',$customid);
$custData = $this->db->get('custom_quote'); $custData = $this->db->get('custom_quote');
if(!empty($custData) && $custData->num_rows() > 0){ if(!empty($custData) && $custData->num_rows() > 0){
$custData = $custData->row_array(); $custData = $custData->row_array();
return $custData; return $custData;
}
return 0;
} }
return 0;
}
} }
?> ?>
...@@ -50,6 +50,23 @@ class Customer_model extends CI_Model { ...@@ -50,6 +50,23 @@ class Customer_model extends CI_Model {
$this->db->query("UPDATE customer_vehicle SET status='1',customer_id='$cust_id' $this->db->query("UPDATE customer_vehicle SET status='1',customer_id='$cust_id'
WHERE customer_veh_id IN ($saved_vehicles)"); WHERE customer_veh_id IN ($saved_vehicles)");
} }
$subject = "DcarFixxers,Activation Mail";
$email_id = $customer_data['email'];
//$reset_link = 'https://projects.nuvento.com/admin/Api/verifyMail/'.$unique_id;
$message = "<html>
<body>
Hi,\n\r Welcome to DcarFixxers. \r\n Your account for the Username ".$email_id." is now Activated.
</body>
</html>";
$template = getNotifTemplate();
if(isset($template['customer_registration_mail']) && !empty($template['customer_registration_mail'])){
$message = str_replace(array('{:email}'),array($email_id),$template['customer_registration_mail']);
}
send_mail($subject,$email_id,$message);
$res = array('status'=>1,'data'=>'');
return ($status)?1:0;; return ($status)?1:0;;
} }
......
...@@ -130,8 +130,26 @@ class Mechanic_model extends CI_Model { ...@@ -130,8 +130,26 @@ class Mechanic_model extends CI_Model {
if(empty($mechanic_id)){ if(empty($mechanic_id)){
return 0; return 0;
} }
$status = $this->db->update('admin_users',array('status'=>$status),array('id'=>$mechanic_id)); $resp = $this->db->update('admin_users',array('status'=>$status),array('id'=>$mechanic_id));
return $status; if($status == '1'){
$mechData = $this->db->get_where('mechanic',array(' mechanic_id'=>$mechanic_id))->row();
$subject = "DcarFixxers, Activation Mail";
$email_id = $mechData->email_id;
$message = "<html>
<body>
Hi,\n\r Welcome to DcarFixxers. \r\n Your account for the Username ".$email_id." is now Activated.
</body>
</html>";
$template = getNotifTemplate();
if(isset($template['mechanic_activation_mail']) && !empty($template['mechanic_activation_mail'])){
$message = str_replace(array('{:user_name}'),array($email_id),$template['mechanic_activation_mail']);
}
send_mail($subject,$email_id,$message);
$res = array('status'=>1,'data'=>'');
}
return $resp;
} }
function getNearByMechanics($location_data = array(),$sub_issues = array()){ function getNearByMechanics($location_data = array(),$sub_issues = array()){
...@@ -150,9 +168,9 @@ class Mechanic_model extends CI_Model { ...@@ -150,9 +168,9 @@ class Mechanic_model extends CI_Model {
POWER(SIN(($current_lng-ME.location_lng)*pi()/180/2),2) )) AS distance POWER(SIN(($current_lng-ME.location_lng)*pi()/180/2),2) )) AS distance
FROM mechanic AS ME FROM mechanic AS ME
INNER JOIN admin_users AS AU ON (AU.id=ME.mechanic_id) INNER JOIN admin_users AS AU ON (AU.id=ME.mechanic_id)
LEFT JOIN mechanic_rating AS MR ON (MR.mechanic_id=ME.mechanic_id)
LEFT JOIN mechanic_shop AS MS ON (MS.shop_id=ME.shop_id AND MS.status='1') LEFT JOIN mechanic_shop AS MS ON (MS.shop_id=ME.shop_id AND MS.status='1')
WHERE AU.status='1' WHERE AU.status='1'
-- GROUP BY ME.mechanic_id
-- HAVING distance<30"; -- HAVING distance<30";
$mechData = $this->db->query($sql); $mechData = $this->db->query($sql);
......
...@@ -513,12 +513,74 @@ class Webservice_model extends CI_Model { ...@@ -513,12 +513,74 @@ class Webservice_model extends CI_Model {
$respArr['message'] = 'Sorry, You are already Rated for this mechanic'; $respArr['message'] = 'Sorry, You are already Rated for this mechanic';
return $respArr; return $respArr;
} }
$postData['status'] = '1';
if($this->db->insert('mechanic_rating',$postData)){ if($this->db->insert('mechanic_rating',$postData)){
$respArr['status'] = 'success'; $respArr['status'] = 'success';
$respArr['message'] = 'success'; $respArr['message'] = 'success';
} }
return $respArr; return $respArr;
} }
public function acceptMechanicQuote($postData){
$respArr = array('status'=>'error','message'=>'Something went Wrong.. Try Again');
if(empty($postData['bookingId'])){
$respArr['message'] = 'Booking Id is Required';
return $respArr;
}
if(empty($postData['mechanicId'])){
$respArr['message'] = 'Mechanic Id is Required';
return $respArr;
}
if(empty($postData['amount'])){
$respArr['message'] = 'Amount is Required';
return $respArr;
}
if($this->db->update('mechanic_booking',array('status'=>'1'),array('booking_id'=>$postData['bookingId'],'mechanic_id'=>$postData['mechanicId']))){
$this->db->update('mechanic_booking',array('status'=>'2'),array('booking_id'=>$postData['bookingId'],'mechanic_id !='=>$postData['mechanicId']));
$this->db->update('bookings',array('status'=>'5','cost'=>$postData['amount']),array('booking_id'=>$postData['bookingId']));
}
$book_data = $this->db->get_where('bookings',array('booking_id'=>$postData['bookingId']))->row();
$transaction_array = array(
'customer_id'=>$book_data->customer_id,
'booking_id'=>$postData['bookingId'],
'datetime'=>date('Y-m-d h:i:s'),
'amount'=>$postData['amount']
);
$this->db->insert('transaction',$transaction_array);
$respArr['data'] = $this->db->insert_id();
$respArr['status'] = 'success';
$respArr['message'] = 'Updated Successfully';
return $respArr;
}
public function getMechAmount($transId){
$respArr = array('status'=>'error');
if(empty($transId)){
return $respArr;
}
$result = $this->db->get_where('transaction',array('id'=>$transId));
if(!empty($result) && $result->num_rows() > 0){
$result = $result->row_array();
$respArr['status'] = 'success';
$respArr['data'] = $result;
}
$custData = $this->db->get_where('customers',array('customer_id'=>$result['customer_id']))->row();
$respArr['emailId'] = $custData->email;
return $respArr;
}
public function transactionResp($transId,$result){
$status = 0;
if($result['data']['status'] == 'success'){
$status = 1;
}
$this->db->update('transaction',array('transaction_response'=>json_encode($result),'transaction_reference'=>$result['data']['id'],'status'=>$status),array('id'=>$transId));
$bookData = $this->db->get_where('transaction',array('id'=>$transId))->row();
$this->db->update('bookings',array('status'=>'1'),array('booking_id'=>$bookData->booking_id));
return 1;
}
} }
?> ?>
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
<tr> <tr>
<th class="hidden">ID</th> <th class="hidden">ID</th>
<th width="18%;">Car Name</th> <th width="18%;">Car Name</th>
<th width="12%;">Mechanic</th> <!-- <th width="12%;">Mechanic</th> -->
<th width="12%;">Customer</th> <th width="12%;">Customer</th>
<th width="15%;">Scheduled Date</th> <th width="15%;">Scheduled Date</th>
<th width="11%;">Service Fee</th> <th width="11%;">Service Fee</th>
...@@ -84,7 +84,6 @@ ...@@ -84,7 +84,6 @@
<tr> <tr>
<th class="hidden"><?= $bookData->booking_id ?></th> <th class="hidden"><?= $bookData->booking_id ?></th>
<th class="center"><?= $bookData->car_name ?></th> <th class="center"><?= $bookData->car_name ?></th>
<th class="center"><?= $bookData->mechFirstName.' '.$bookData->mechLastName ?></th>
<th class="center"><?= $bookData->custFirstName.' '.$bookData->custLastName ?></th> <th class="center"><?= $bookData->custFirstName.' '.$bookData->custLastName ?></th>
<th class="center"> <th class="center">
<?= $bookData->scheduled_date.' '.$bookData->scheduled_time ?> <?= $bookData->scheduled_date.' '.$bookData->scheduled_time ?>
...@@ -92,44 +91,65 @@ ...@@ -92,44 +91,65 @@
<th class="center"><?= $bookData->cost ?></th> <th class="center"><?= $bookData->cost ?></th>
<th class="center"> <th class="center">
<?php <?php
switch($bookData->status){ if($this->session->userdata['user_type'] == 1 ){
case 0: echo 'Pending'; break; switch($bookData->status){
case 1: echo 'Accepted'; break; case 0: echo 'Pending'; break;
case 3: echo 'Completed'; break; case 1: echo 'Accepted'; break;
case 4: echo 'Cancelled'; break; case 3: echo 'Completed'; break;
case 4: echo 'Cancelled'; break;
}
} else {
switch($bookData->mech_status){
case 0: echo 'Pending'; break;
case 1: echo 'Accepted'; break;
case 2: echo 'Rejected'; break;
}
} }
?> ?>
</th> </th>
<td class="center float-right"> <td class="center">
<button class="btn btn-sm btn-primary" booking_id="<?= encode_param($bookData->booking_id) ?>" id="showBookinDetails"> <button class="btn btn-sm btn-primary" booking_id="<?= encode_param($bookData->booking_id) ?>" id="showBookinDetails">
<i class="fa fa-fw fa-edit"></i>View Quote <i class="fa fa-fw fa-edit"></i>View Quote
</button> </button>
<?php if($bookData->status == 1){ ?>
<a class="btn btn-sm btn-success" style="background-color:#ac2925" href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/4/".encode_param($mechanic_id)) ?>">
<i class="fa fa-cog"></i> Cancel <?php if($this->session->userdata['user_type'] == 1){
</a> if($bookData->status == 0 || $bookData->status == 1){ ?>
<?php } ?> <a class="btn btn-sm btn-success" style="background-color:#ac2925" href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/4/".encode_param($mechanic_id)) ?>">
<?php if($bookData->status == 0 || $bookData->status == 4){ ?> <i class="fa fa-cog"></i> Cancel
<a class="btn btn-sm btn-success" href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/1/".encode_param($mechanic_id)) ?>"> </a>
<i class="fa fa-cog"></i> Accept <?php } if($bookData->status == 4 ){ ?>
</a> <a class="btn btn-sm btn-success" href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/1/".encode_param($mechanic_id)) ?>">
<?php } ?> <i class="fa fa-cog"></i> Accept
</a>
<?php }
} else {
if($bookData->mech_status == 0 || $bookData->mech_status == 1){ ?>
<a class="btn btn-sm btn-success" style="background-color:#ac2925" href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/4/".encode_param($mechanic_id)) ?>">
<i class="fa fa-cog"></i> Cancel
</a>
<?php } if($bookData->mech_status == 2 || $bookData->mech_status == 0){ ?>
<a class="btn btn-sm btn-success" href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/1/".encode_param($mechanic_id)) ?>">
<i class="fa fa-cog"></i> Accept
</a>
<?php }
} ?>
<a class="btn btn-sm btn-danger" <a class="btn btn-sm btn-danger"
href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/2/".encode_param($mechanic_id))?>" href="<?= base_url("Bookings/changeBookingStatus/".encode_param($bookData->booking_id)."/2/".encode_param($mechanic_id))?>"
onClick="return doconfirm()"> onClick="return doconfirm()">
<i class="fa fa-fw fa-trash"></i>Delete <i class="fa fa-fw fa-trash"></i>Delete
</a> </a>
<?php if($bookData->custom_id == ''){ <?php if($bookData->custom_id == ''){
if($this->session->userdata['user_type'] != 1 ){ if($this->session->userdata['user_type'] != 1 ){ ?>
?> <button class="btn btn-sm btn-primary" style="margin-top:3px;" booking_id="<?= encode_param($bookData->booking_id) ?>" id="customQuote" view="0">
<button class="btn btn-sm btn-primary" style="margin-top:3px;" booking_id="<?= encode_param($bookData->booking_id) ?>" id="customQuote" view="0"> <i class="fa fa-fw fa-edit"></i><span>Generate Custom Quote</span>
<i class="fa fa-fw fa-edit"></i><span>Generate Custom Quote</span> </button>
</button> <?php } ?>
<?php } } else{ ?> <?php } else { ?>
<button class="btn btn-sm btn-primary" style="margin-top:3px;" booking_id="<?= encode_param($bookData->custom_id) ?>" id="customQuote" view="1"> <button class="btn btn-sm btn-primary" style="margin-top:3px;" booking_id="<?= encode_param($bookData->custom_id) ?>" id="customQuote" view="1">
<i class="fa fa-fw fa-edit"></i><span>View Custom Quote</span> <i class="fa fa-fw fa-edit"></i><span>View Custom Quote</span>
</button> </button>
<?php } ?> <?php } ?>
</td> </td>
</tr> </tr>
<?php } } ?> <?php } } ?>
......
...@@ -16,13 +16,22 @@ ...@@ -16,13 +16,22 @@
<script src="<?= base_url('assets/js/app.min.js') ?>"></script> <script src="<?= base_url('assets/js/app.min.js') ?>"></script>
<script src="<?= base_url('assets/js/custom-script.js') ?>"></script> <script src="<?= base_url('assets/js/custom-script.js') ?>"></script>
<script src="<?= base_url('assets/js/parsley.min.js') ?>"></script> <script src="<?= base_url('assets/js/parsley.min.js') ?>"></script>
<script src="<?= base_url('assets/js/ckeditor.js') ?>"></script> <script src="https://cdn.ckeditor.com/4.5.7/standard/ckeditor.js"></script>
<script src="<?= base_url('assets/js/bootstrap-datepicker.js') ?>"></script> <script src="<?= base_url('assets/js/bootstrap-datepicker.js') ?>"></script>
<script src="<?= base_url('assets/js/clockpicker.js') ?>" type="text/javascript"></script> <script src="<?= base_url('assets/js/clockpicker.js') ?>" type="text/javascript"></script>
<script> <script>
jQuery('.clockpicker').clockpicker(); jQuery('.clockpicker').clockpicker();
jQuery( document ).ready(function() {
if(jQuery('#rich_editor').length==1){ CKEDITOR.replace('rich_editor'); }
if(jQuery('#rich_editor1').length==1){CKEDITOR.replace('rich_editor1'); }
if(jQuery('#rich_editor_2').length==1){CKEDITOR.replace('rich_editor_2');}
if(jQuery('#rich_editor_3').length==1){CKEDITOR.replace('rich_editor_3');}
if(jQuery('#rich_editor_4').length==1){CKEDITOR.replace('rich_editor_4');}
if(jQuery('#rich_editor_5').length==1){CKEDITOR.replace('rich_editor_5');}
});
function doconfirm(){ function doconfirm(){
action = confirm("Are you sure to delete permanently?"); action = confirm("Are you sure to delete permanently?");
if(action != true) return false; if(action != true) return false;
...@@ -52,7 +61,7 @@ ...@@ -52,7 +61,7 @@
jQuery(function () { jQuery(function () {
jQuery('.datatable').DataTable({ jQuery('.datatable').DataTable({
"ordering" : jQuery(this).data("ordering"), "ordering" : jQuery(this).data("ordering"),
"order": [[ 0, "asc" ]] "order": [[ 0, "desc" ]]
}); });
}); });
<?php //} ?> <?php //} ?>
......
...@@ -23,5 +23,5 @@ ...@@ -23,5 +23,5 @@
<div class="pull-right hidden-xs"> <div class="pull-right hidden-xs">
<b>Version</b> 1.0 <b>Version</b> 1.0
</div> </div>
<strong>Copyright &copy; 2015-2016 <a href="#">Techware Solution</a>.</strong> All rights reserved. <strong>Copyright &copy; <?= date('Y')?> - <?= date('Y')+1?> <a href="#">CarFixxers</a>.</strong> All rights reserved.
</footer> </footer>
\ No newline at end of file
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<li class="treeview"> <li class="treeview">
<a href="#"> <a href="#">
<i class="fa fa-bars" aria-hidden="true"></i> <i class="fa fa-bars" aria-hidden="true"></i>
<span>Issue Management</span> <span>Service Orders</span>
<i class="fa fa-angle-left pull-right"></i> <i class="fa fa-angle-left pull-right"></i>
</a> </a>
<ul class="treeview-menu"> <ul class="treeview-menu">
...@@ -118,11 +118,58 @@ ...@@ -118,11 +118,58 @@
</li> </li>
</ul> </ul>
</li> </li>
<?php } ?>
<li> <li>
<a href="<?= base_url('Bookings/listBookings') ?>"><i class="fa fa-book" aria-hidden="true"> <a href="<?= base_url('Mailtemplate') ?>"><i class="fa fa-book" aria-hidden="true">
</i><span>Request Management</span></a> </i><span>Mail Template</span></a>
</li> </li>
<?php } ?>
<li>
<a href="<?= base_url('Bookings/listBookings') ?>"><i class="fa fa-book" aria-hidden="true">
</i><span>Request Management</span></a>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-bars" aria-hidden="true"></i>
<span>Product Management</span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
<li>
<a href="<?= base_url('Product/addProduct') ?>">
<i class="fa fa-circle-o text-aqua"></i>
Add New Product
</a>
</li>
<li>
<a href="<?= base_url('Product/viewProduct') ?>">
<i class="fa fa-circle-o text-aqua"></i>
View All Product
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-bars" aria-hidden="true"></i>
<span>Brand Management</span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
<li>
<a href="<?= base_url('Brand/addBrand') ?>">
<i class="fa fa-circle-o text-aqua"></i>
Add New Brand
</a>
</li>
<li>
<a href="<?= base_url('Brand/viewBrand') ?>">
<i class="fa fa-circle-o text-aqua"></i>
View All Brand
</a>
</li>
</ul>
</li>
<?php if($this->session->userdata['user_type'] == 1){ ?> <?php if($this->session->userdata['user_type'] == 1){ ?>
<li><a href="<?= base_url('Settings') ?>"> <li><a href="<?= base_url('Settings') ?>">
<i class="fa fa-wrench" aria-hidden="true"> <i class="fa fa-wrench" aria-hidden="true">
......
...@@ -500,6 +500,70 @@ ...@@ -500,6 +500,70 @@
border: 1px solid red !important; border: 1px solid red !important;
} }
.dropZoneContainer{
position: relative;
display: inline-block;
}
.close_custom{
position: absolute;
width: 17px;
height: 17px;
text-align: center;
background: #000;
font-size: 13px;
top: -5px;
right: -1px;
color: #fff;
border-radius: 50%;
z-index: 99;
}
.dropZoneOverlay, .FileUpload {
width: 250px;
height: 250px;
}
.multiDropZoneOverlay, .multiFileUpload {
width: 50px;
height: 50px;
}
.dropZoneOverlay {
border: dotted 1px;
font-family: cursive;
color: #040404;
text-align: center;
position: absolute;
top:0px;
left:0px;
right:0px;
}
.multiDropZoneOverlay {
border: dotted 1px;
font-family: cursive;
color: #040404;
text-align: center;
position: absolute;
top:0px;
left:0px;
right:0px;
}
.FileUpload {
opacity: 0;
position: relative;
z-index: 1;
}
.multiFileUpload {
opacity: 0;
position: relative;
z-index: 1;
}
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button { input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none; -webkit-appearance: none;
...@@ -507,3 +571,7 @@ ...@@ -507,3 +571,7 @@
appearance: none; appearance: none;
margin: 0; margin: 0;
} }
.errorBorder {
border: 1px solid #ff0000 !important;
}
...@@ -13,6 +13,28 @@ function setImg(input,id) { ...@@ -13,6 +13,28 @@ function setImg(input,id) {
} }
} }
function setMultiImg(input,thisObj){
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
var count = thisObj.attr('count');
thisObj.attr('count',count+1);
jQuery('[id="multipleImageInputCntr"]').append(jQuery('[id="multipleImageInput"]').html().replace(/{:count}/g,count+1));
thisObj.addClass('prevent-click');
jQuery('[id="multiImageClose_'+count+'"]').removeClass('hide');
jQuery('[id="multiImageImg_'+count+'"]').attr('src', e.target.result);
jQuery('[id^="multiImageImg_"]').removeClass('errorBorder');
};
reader.readAsDataURL(input.files[0]);
}
}
function removeImage(count){
jQuery('[id="multiImageCntr_'+count+'"]').remove();
}
function setModal(header_msg,body_msg){ function setModal(header_msg,body_msg){
jQuery('[id="modal_body_msg"]').html(body_msg); jQuery('[id="modal_body_msg"]').html(body_msg);
jQuery('[id="modal_header_msg"]').html(header_msg); jQuery('[id="modal_header_msg"]').html(header_msg);
...@@ -830,7 +852,8 @@ function customQuote(thisObj){ ...@@ -830,7 +852,8 @@ function customQuote(thisObj){
'</div>'+ '</div>'+
'<input type="hidden" name="issue_id[]" value="'+value['issue_id']+'">'+ '<input type="hidden" name="issue_id[]" value="'+value['issue_id']+'">'+
'<input type="hidden" name="sub_issue_id[]" value="'+value['sub_issue_id']+'">'+ '<input type="hidden" name="sub_issue_id[]" value="'+value['sub_issue_id']+'">'+
'</div>'; '</div>'+
'<input type="hidden" name="issue_category[]" value="'+value['issue_category']+'">';
}); });
issueHtml += '<input type="hidden" id="array_count" name="count" value="'+issues_selected.length+'">'+ issueHtml += '<input type="hidden" id="array_count" name="count" value="'+issues_selected.length+'">'+
'</div>'+ '</div>'+
...@@ -1113,11 +1136,6 @@ jQuery('[id="showBookinDetails"]').on('click',function() { ...@@ -1113,11 +1136,6 @@ jQuery('[id="showBookinDetails"]').on('click',function() {
'<div class="col-md-6"><label>'+booking_data['custFirstName']+' '+booking_data['custLastName']+'</label></div>'+ '<div class="col-md-6"><label>'+booking_data['custFirstName']+' '+booking_data['custLastName']+'</label></div>'+
'</div> '+ '</div> '+
'<div class="row">'+ '<div class="row">'+
'<div class="col-md-4">Mechanic</div>'+
'<div class="col-md-1">:</div>'+
'<div class="col-md-6"><label>'+booking_data['mechFirstName']+' '+booking_data['mechLastName']+'</label></div>'+
'</div> '+
'<div class="row">'+
'<div class="col-md-4">Current Milage</div>'+ '<div class="col-md-4">Current Milage</div>'+
'<div class="col-md-1">:</div>'+ '<div class="col-md-1">:</div>'+
'<div class="col-md-6"><label>'+booking_data['mileage']+'</label></div>'+ '<div class="col-md-6"><label>'+booking_data['mileage']+'</label></div>'+
...@@ -1165,7 +1183,26 @@ jQuery('[id="showBookinDetails"]').on('click',function() { ...@@ -1165,7 +1183,26 @@ jQuery('[id="showBookinDetails"]').on('click',function() {
'<div class="col-md-1">:</div>'+ '<div class="col-md-1">:</div>'+
'<div class="col-md-6"><label>'+booking_data['car_location']+'</label></div>'+ '<div class="col-md-6"><label>'+booking_data['car_location']+'</label></div>'+
'</div> '+ '</div> '+
'</div> '+issueHtml+optionalHtml+ '</div> '+issueHtml+
'<div class="col-md-12"> '+
'<div class="row"><label>Mechanic Details</label></div>'+
'<div class="col-md-3"><div class="row"><label>Mechanic Name</label></div></div>'+
'<div class="col-md-3"><div class="row"><label>Amount</label></div></div>'+
'<div class="col-md-2"><div class="row"><label>status</label></div></div>'+
'<div class="row">';
jQuery.each(booking_data['mechanic_data'], function (index1, value1) {
if(value1['custom_amount'] == '' || value1['custom_amount'] == null || value1['custom_amount'] == undefined || value1['custom_amount'] == 'null' || value1['custom_amount'] == 'undefined'){
value1['custom_amount'] = booking_data['cost'];
}
html+= '<div class="col-md-12">'+
'<div class="col-md-3">'+value1['first_name']+' '+value1['last_name']+'</div>'+
'<div class="col-md-3">'+value1['custom_amount']+'</div>'+
'<div class="col-md-2">'+value1['status']+'</div>'+
'</div>';
});
html+= '</div>'+
'</div>'+
optionalHtml+
'</div>'; '</div>';
remModalLoader(); remModalLoader();
...@@ -1184,4 +1221,20 @@ jQuery('[id="showBookinDetails"]').on('click',function() { ...@@ -1184,4 +1221,20 @@ jQuery('[id="showBookinDetails"]').on('click',function() {
jQuery('[id="modal_content"]').html('Something went wrong, please try again later...!'); jQuery('[id="modal_content"]').html('Something went wrong, please try again later...!');
} }
}); });
});
jQuery('[id="addProductButton"]').on('click',function(event) {
event.preventDefault();
var validation = jQuery('[name="productAddForm"]').parsley().validate();
var error = 0;
var count = jQuery('[id="multipleImageInputCntr"]').children().first().attr('count');
if(jQuery('[id="product_image_'+count+'"]').val() == ''){
error = 1;
jQuery('[id="multiImageImg_'+count+'"]').addClass('errorBorder');
}
if(validation && error == 0){
jQuery('[name="productAddForm"]').submit();
}
}); });
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment