public function newuserAction()
 {
     $oNewBorrowerForm = $this->getServiceLocator()->get('NewBorrowerFormService');
     $oUserSessionContainer = new UserSessionContainer();
     $nUserId = $oUserSessionContainer->getUserId();
     if ($nUserId) {
         $nCartId = $this->getCartTable()->findRow(array('user_id' => $nUserId));
         if ($nCartId) {
             $this->getCartItemTable()->deleteRow(array('cart_id' => $nCartId));
         }
         $oUserSessionContainer->clear();
     }
     $bSuccess = false;
     if ($this->getRequest()->isPost()) {
         $oNewBorrowerForm->setData($this->getRequest()->getPost());
         if ($oNewBorrowerForm->isValid()) {
             try {
                 $this->getUserTable()->beginTransaction();
                 $oUserEntity = new UserEntity();
                 $oUserParamEntity = new UserParamEntity();
                 $oCartEntity = new CartEntity();
                 $oCartItemEntity = new CartItemEntity();
                 $aValidatedData = $oNewBorrowerForm->getData();
                 if ($oUserSessionContainer->getPreIsInit() === $aValidatedData['key'] && ((int) $aValidatedData['is_student'] === 1 || (int) $aValidatedData['is_employee'] === 1)) {
                     $oUserSessionContainer->setFirstName($aValidatedData['first_name']);
                     $oUserSessionContainer->setLastName($aValidatedData['last_name']);
                     $oUserSessionContainer->setPostCode($aValidatedData['post_code']);
                     $oUserSessionContainer->setEmailAddress($aValidatedData['email_address']);
                     $oUserSessionContainer->setPhoneNumber($aValidatedData['phone_number']);
                     $oUserSessionContainer->setStreet($aValidatedData['street']);
                     $oUserSessionContainer->setCity($aValidatedData['city']);
                     $oUserSessionContainer->setPostCode($aValidatedData['post_code']);
                     $oUserSessionContainer->setEmailAddress($aValidatedData['email_address']);
                     $oUserSessionContainer->setPhoneNumber($aValidatedData['phone_number']);
                     $oUserSessionContainer->setBbarcode($aValidatedData['email_address']);
                     $sTempBtype = $this->getBtypeTable()->getRow(array('id' => $aValidatedData['btype']))->btype;
                     if ($sTempBtype) {
                         $aOrganizationBtype = $oUserSessionContainer->getOrganizationBtype();
                         $bIsRealBtype = false;
                         foreach ($aOrganizationBtype as $oValue) {
                             if ($oValue->btype == $sTempBtype) {
                                 $bIsRealBtype = true;
                             }
                         }
                         if ($bIsRealBtype) {
                             $oUserSessionContainer->setBtype($sTempBtype);
                         } else {
                             $oUserSessionContainer->setBtype('ZA');
                         }
                     } else {
                         $oUserSessionContainer->setBtype('ZA');
                     }
                 } else {
                     if ((int) $aValidatedData['is_borrower'] === 1) {
                         $oUserSessionContainer->setNewBorrowerData($aValidatedData);
                         $oUserSessionContainer->setBtype('ZA');
                         $oUserSessionContainer->setBorrowerNote('Osoba z zewnÄ…trz');
                     }
                 }
                 if ($oUserSessionContainer->getIsInit()) {
                     $oTempUserData = new \ArrayObject($oUserSessionContainer->getArrayCopy());
                     $oTempUserData->offsetSet('user_category_id', $this->getUserCategoryTable()->findRow(array('name' => $oUserSessionContainer->getWho())));
                     $oTempUserData->offsetSet('active', 0);
                     $oTempUserData->offsetSet('user_id', $this->getUserTable()->addRow($oUserEntity->setOptions($oTempUserData)));
                     if ($oTempUserData->offsetGet('user_id')) {
                         $oTempUserData->offsetSet('user_param_id', $this->getUserParamTable()->addRow($oUserParamEntity->setOptions($oTempUserData)));
                     }
                     if ($oTempUserData->offsetGet('user_id') && $oTempUserData->offsetGet('user_param_id')) {
                         $oUserSessionContainer->setUserId($oTempUserData->offsetGet('user_id'));
                     } else {
                         throw new \Exception();
                     }
                     $nItemId = 2;
                     $oData = new \ArrayObject(array('item_id' => $nItemId, 'user_id' => $oUserSessionContainer->getUserId()));
                     $oData->offsetSet('cart_id', $this->getCartTable()->findRow(array('user_id' => $oUserSessionContainer->getUserId())));
                     if ($oData->offsetGet('cart_id')) {
                         $oData->offsetSet('cart_item_id', $this->getCartItemTable()->addRow($oCartItemEntity->setOptions($oData)));
                     } else {
                         $oData->offsetSet('cart_id', $this->getCartTable()->addRow($oCartEntity->setOptions($oData)));
                         $oData->offsetSet('cart_item_id', $this->getCartItemTable()->addRow($oCartItemEntity->setOptions($oData)));
                     }
                     if ($oData->offsetGet('cart_id') && $oData->offsetGet('cart_item_id')) {
                         $bSuccess = true;
                     } else {
                         throw new \Exception();
                     }
                 }
                 if ($bSuccess) {
                     $this->getUserTable()->commit();
                     $this->redirect()->toRoute('shop_cart/shop_cart_process', array('action' => 'items'), array());
                 }
             } catch (\Exception $e) {
                 $this->getUserTable()->rollBack();
             }
         }
     }
     return new ViewModel(array('form' => $oNewBorrowerForm));
 }
 public function getfineAction()
 {
     $oUserSessionContainer = new UserSessionContainer();
     $oBorrowerForm = $this->getServiceLocator()->get('BorrowerFormService');
     $aExpirationItem = null;
     $aBorrowerFine = null;
     $bSuccess = false;
     $sIsBorrower = $oUserSessionContainer->getIsBorrower();
     $sBorrowerId = $oUserSessionContainer->getBorrowerId();
     if ($sIsBorrower === 1 && $sBorrowerId) {
         if ($this->getRequest()->isPost()) {
             $oBorrowerForm->setData($this->getRequest()->getPost());
             if ($oBorrowerForm->isValid()) {
                 try {
                     $this->getUserTable()->beginTransaction();
                     $oUserEntity = new UserEntity();
                     $oUserParamEntity = new UserParamEntity();
                     $oCartEntity = new CartEntity();
                     $oCartItemEntity = new CartItemEntity();
                     $oItemEntity = new ItemEntity();
                     $aValidatedData = $oBorrowerForm->getData();
                     \Zend\Debug\Debug::dump($oUserSessionContainer->getPreIsInit() === $aValidatedData['key']);
                     if ($oUserSessionContainer->getPreIsInit() === $aValidatedData['key']) {
                         $oTempUserData = new \ArrayObject($oUserSessionContainer->getArrayCopy());
                         $oTempUserData->offsetSet('user_category_id', $this->getUserCategoryTable()->findRow(array('name' => 'borrower')));
                         $oTempUserData->offsetSet('active', 0);
                         $oTempUserData->offsetSet('user_id', $this->getUserTable()->addRow($oUserEntity->setOptions($oTempUserData)));
                         if ($oTempUserData->offsetGet('user_id')) {
                             $oTempUserData->offsetSet('user_param_id', $this->getUserParamTable()->addRow($oUserParamEntity->setOptions($oTempUserData)));
                         }
                         if ($oTempUserData->offsetGet('user_id') && $oTempUserData->offsetGet('user_param_id')) {
                             $oUserSessionContainer->setUserId($oTempUserData->offsetGet('user_id'));
                         } else {
                             throw new \Exception();
                         }
                         $nUserId = $oUserSessionContainer->getUserId();
                         $nCartId = $this->getCartTable()->findRow(array('user_id' => $nUserId));
                         if (!$nCartId) {
                             $nCartId = $this->getCartTable()->addRow($oCartEntity->setOptions(new \ArrayObject(array('user_id' => $nUserId))));
                         }
                         if ($oUserSessionContainer->getExpirationItemSum()) {
                             $sName = 'expiration_item';
                             foreach ($oUserSessionContainer->getExpirationItem() as $nKey => $aItem) {
                                 if (is_numeric($nKey)) {
                                     $oItemData = new \ArrayObject(array('name' => $sName, 'fine_id' => $aItem['loan_id'], 'fine_sequence' => '-- brak danych --', 'item_sequence' => '-- brak danych --', 'doc_number' => '-- brak danych --', 'call_no' => '-- brak danych --', 'item_barcode' => $aItem['barcode'], 'title' => $aItem['title'], 'price_net' => $aItem['loan_fine'], 'price_gross' => $aItem['loan_fine'], 'due_date' => $aItem['due_date']));
                                     $nItemId = $this->getItemTable()->addRow($oItemEntity->setOptions($oItemData));
                                     $oCartItemData = new \ArrayObject(array('cart_id' => $nCartId, 'item_id' => $nItemId, 'user_id' => $nUserId));
                                     $this->getCartItemTable()->addRow($oCartItemEntity->setOptions($oCartItemData));
                                 }
                             }
                         }
                         if ($oUserSessionContainer->getBorrowerFineSum()) {
                             $sName = 'borrower_fine';
                             foreach ($oUserSessionContainer->getBorrowerFine() as $nKey => $aFine) {
                                 if (is_numeric($nKey)) {
                                     $oItemData = new \ArrayObject(array('name' => $sName, 'fine_id' => $aFine['fee_id'], 'fine_sequence' => '-- brak danych --', 'item_sequence' => '-- brak danych --', 'doc_number' => '-- brak danych --', 'call_no' => '-- brak danych --', 'item_barcode' => $aFine['barcode'], 'title' => $aFine['comment'], 'price_net' => $aFine['balance'], 'price_gross' => $aFine['balance'], 'due_date' => null));
                                     $nItemId = $this->getItemTable()->addRow($oItemEntity->setOptions($oItemData));
                                     $oCartItemData = new \ArrayObject(array('cart_id' => $nCartId, 'item_id' => $nItemId, 'user_id' => $nUserId));
                                     $this->getCartItemTable()->addRow($oCartItemEntity->setOptions($oCartItemData));
                                 }
                             }
                         }
                         $this->getUserTable()->commit();
                         $this->redirect()->toRoute('shop_cart/shop_cart_process', array('action' => 'items'), array());
                     }
                 } catch (\Exception $e) {
                     $this->getUserTable()->rollBack();
                     \Zend\Debug\Debug::dump($e->getMessage());
                     exit;
                 }
             }
         } else {
             $oXServer = new XServer($sBorrowerId);
             $aBorrowerData = $oXServer->getBorrowerData();
             if (!isset($aBorrowerData['error'])) {
                 $aBorrower['key'] = $oUserSessionContainer->getPreIsInit();
                 $aBorrower['email_address'] = $oUserSessionContainer->getEmailAddress();
                 $aBorrower['is_borrower'] = 1;
                 $oBorrowerForm->setData($aBorrower);
                 $aExpirationItem = $oUserSessionContainer->getExpirationItem();
                 $aBorrowerFine = $oUserSessionContainer->getBorrowerFine();
                 $nCredit = $oUserSessionContainer->getCredit();
                 $bSuccess = true;
             } else {
                 $sErrorMessage = 'getfine - XServer response: ' . $aBorrowerData['error'];
             }
         }
     } else {
         $sErrorMessage = 'getfine - podaj identyfikator czytelnika';
         $oUserSessionContainer->clear();
     }
     return new ViewModel(array('form' => $oBorrowerForm, 'expiration_item' => $aExpirationItem, 'borrower_fine' => $aBorrowerFine, 'credit' => $nCredit, 'success' => $bSuccess, 'error_message' => $sErrorMessage));
 }
 public function editcartitemajaxAction()
 {
     $oResponse = $this->getResponse();
     $bSuccess = false;
     if ($this->getRequest()->isPost()) {
         $oEditCartItemForm = $this->getServiceLocator()->get('EditCartItemFormService');
         $oEditCartItemForm->setData($this->getRequest()->getPost());
         if ($oEditCartItemForm->isValid()) {
             $oCartItemEntity = new CartItemEntity();
             $oData = new \ArrayObject($oEditCartItemForm->getData());
             $this->getCartItemTable()->editRow($oCartItemEntity->setOptions($oData));
             $bSuccess = true;
         }
     }
     $oResponse->setContent(\Zend\Json\Json::encode($bSuccess));
     return $oResponse;
 }