public function scheduleAction() { $session = new Container('bookingData'); $request = $this->getRequest(); if ($request->isPost() || isset($session->bookingData)) { $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { return $this->redirect()->toRoute('practitioner', array('action' => 'list')); } $bookingModel = new Bookings(); $model = new Practitioners(); $slots = $errors = array(); $address = array(); $work_address = array(); /* Validation for booking form start here */ $filter = new InputFilter(); $filter->add(array('name' => 'service_location', 'required' => true)); $filter->add(array('name' => 'service_id', 'required' => true)); $filter->add(array('name' => 'duration', 'required' => true)); $filter->add(array('name' => 'service_date', 'required' => true)); /* Validation for booking form end here */ $api = new Api(); $api_url = $this->getServiceLocator()->get('config')['api_url']['value']; $res = $api->curl($api_url . "/api/spusers/" . $id . "/", array(), "GET"); if ($res->getStatusCode() != 200) { return $this->redirect()->toRoute('practitioner', array('action' => 'list')); } $content = json_decode($res->getBody(), true); // retrieving work_address foreach ($content['work_address'] as $wadd) { $work_address[] = json_decode($wadd, true); } // retrieving services foreach ($content['service'] as $service) { $service_list[] = $temp = json_decode($service, true); $services[$temp['id']] = $temp['duration']; } $form = new BookingForm($work_address, $service_list); $auth = new FrontEndAuth(); if (!$auth->hasIdentity(4)) { if ($request->isPost()) { $form->setInputFilter($filter); $form->setData($request->getPost()); if ($form->isValid()) { $session->bookingData = $request->getPost(); } else { $errors = $form->getMessages(); isset($errors['service_location']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service location') : ''; isset($errors['service_id']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service.') : ''; isset($errors['duration']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service duration.') : ''; isset($errors['service_date']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service date.') : ''; return $this->redirect()->toRoute('practitioner', array('action' => 'view', 'id' => $id)); } } $session->sp = $id; return $this->redirect()->toRoute('login', array('action' => 'index')); } if (isset($session->bookingData)) { $bookingData = $session->bookingData; $form->bind($session->bookingData); //$session->offsetUnset('bookingData'); } if ($request->isPost() || isset($session->bookingData)) { $form->setInputFilter($filter); $request->isPost() ? $form->setData($request->getPost()) : $form->setData($session->bookingData); if ($form->isValid()) { // Create a session $bookingsession = new Container('bookingsession'); $bookingsession->locationid = $request->isPost() ? $request->getPost('service_location') : $session->bookingData->service_location; $bookingsession->serviceid = $request->isPost() ? $request->getPost('service_id') : $session->bookingData->service_id; $bookingsession->durationid = $request->isPost() ? $request->getPost('duration') : $session->bookingData->duration; $bookingsession->servicedate = $request->isPost() ? $request->getPost('service_date') : $session->bookingData->service_date; $bookingsession->serviceprice = $model->getServicePrice($api_url, $request->isPost() ? $request->getPost('duration') : $session->bookingData->duration); $bookingsession->sp_id = $id; return $this->redirect()->toRoute('booking', array('action' => 'checkout')); } else { $errors = $form->getMessages(); isset($errors['service_location']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service location') : ''; isset($errors['service_id']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service.') : ''; isset($errors['duration']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service duration.') : ''; isset($errors['service_date']['isEmpty']) ? $this->flashMessenger()->addErrorMessage('Please select service date.') : ''; return $this->redirect()->toRoute('practitioner', array('action' => 'view', 'id' => $id)); } } } else { return $this->redirect()->toRoute('practitioner', array('action' => 'list')); } exit; }