예제 #1
0
 public function editAction()
 {
     $id = $this->getRequest()->getParam('id');
     $service = new Application_Model_DbTable_Service();
     $service_data = $service->getService($id);
     //вырезаем лишнюю информацию о запчастях
     $service_data['spares'] = substr($service_data['spares'], 0, strpos($service_data['spares'], '||'));
     //вырезаем лишнюю информацию о услугах
     $service_data['work'] = substr($service_data['work'], 0, strpos($service_data['work'], '||'));
     //загружаем текущее состояние склада запчастей
     $warehouse = new Application_Model_DbTable_Warehouse();
     $warehouse_data = $warehouse->fetchAll();
     //добавляем к текущему состоянию значения которые редактируются
     if ($service_data['serialize_data'] != 'N;') {
         //проверяем не является ли запись пустой
         foreach (unserialize($service_data['serialize_data']) as $spares_id => $spares_value) {
             foreach ($warehouse_data as $rows) {
                 if ($rows['id'] == $spares_id) {
                     $rows['remain'] += $spares_value;
                     //создаем массив нажатых галочек
                     $checked["{$spares_id}"] = 'checked';
                 }
             }
         }
     }
     //загружаем список услуг
     $prices_obj = new Application_Model_DbTable_Prices();
     $prices_data = $prices_obj->fetchAll();
     // Если к нам идёт Post запрос
     if ($this->getRequest()->isPost()) {
         // Принимаем данные
         $check = $this->getRequest()->getPost('check');
         $data = $this->getRequest()->getPost('data');
         $prices = $this->getRequest()->getPost('prices');
         //создаем массив данных из пунктов где нажаты галочки
         //если есть нажатые галочки с запчастями, формируем массив данных "id-количество"
         if ($check) {
             foreach ($check as $check_id => $value) {
                 $check_data[$value] = $data[$value];
                 //создаем массив данных
                 //для передачи во view
                 $checked["{$value}"] = "checked";
                 //запись в массив нажатых галочек
                 if (!preg_match("/^[0-9]{0,10}\$/i", $check_data[$value])) {
                     //проверка регулярных выражений
                     $error["{$value}"] = 'error';
                     //записываем несовпадение правилам
                 }
                 //проверка на количество запчастей в базе
                 foreach ($warehouse_data as $rows) {
                     if ($rows['id'] == $value) {
                         $spare_count = $rows['remain'];
                         //записываем количество запчастей в момент редактирования
                     }
                 }
                 if ($spare_count - $check_data["{$value}"] < 0) {
                     //делаем проверку
                     $error["{$value}"] = 'error';
                     //записываем несовпадение правилам
                 }
             }
         }
         //создаем массив данных из пунктов где нажаты галочки
         //если есть нажатые галочки с запчастями, формируем массив данных "id-количество"
         if ($prices) {
             foreach ($prices as $id => $price) {
                 $checked_price["{$id}"] = "checked";
                 //запись в массив нажатых галочек
                 if (!preg_match("/^[0-9]{0,10}\$/i", $prices[$id])) {
                     //проверка регулярных выражений
                     $error_price["{$id}"] = 'error';
                     //записываем несовпадение правилам
                 }
             }
         }
         //принимаем данные с input
         $client = $this->getRequest()->getPost('client');
         $number = $this->getRequest()->getPost('number');
         $claim = $this->getRequest()->getPost('claim');
         $diagnos = $this->getRequest()->getPost('diagnos');
         $work = $this->getRequest()->getPost('work');
         $status = $this->getRequest()->getPost('status');
         $name = $this->getRequest()->getPost('name');
         $spares = $this->getRequest()->getPost('spares');
         $comments = $this->getRequest()->getPost('comments');
         $counter = $this->getRequest()->getPost('counter');
         //проверка регулярных выражений
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $client)) {
             $error['client'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $number)) {
             $error['number'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $claim)) {
             $error['claim'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $status)) {
             $error['status'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $name)) {
             $error['name'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $diagnos)) {
             $error['diagnos'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $spares)) {
             $error['spares'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $work)) {
             $error['work'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $comments)) {
             $error['comments'] = 'error';
         }
         if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{0,300}\$/i", $counter)) {
             $error['counter'] = 'error';
         }
         //если нет ошибкок
         if (!$error) {
             //сохраняем данные для последующего редактирования (если нужно)
             $serialize_price = serialize($checked_price);
             $serialize_data = serialize($check_data);
             //записываем выполненные работы и цены на них
             if ($prices) {
                 foreach ($prices as $id => $value) {
                     //получаем из базы название услуги по "id"
                     $description = $prices_obj->getPrice($id);
                     //составляем текстовую строку со всеми выполнеными работами
                     $work .= " || {$description['name']} - {$value} грн";
                 }
             }
             $warehistory = new Application_Model_DbTable_Warehistory();
             //записываем использованые запчасти и цены на них
             if ($check_data) {
                 foreach ($check_data as $idw => $value) {
                     //получаем из базы название услуги по "id"
                     $spare_data = $warehouse->getWarehouse($idw);
                     //составляем текстовую строку со всеми выполнеными работами
                     $spares .= "|| {$spare_data['serial']}-{$spare_data['name']}-{$value}шт ";
                     //вносим изменения по расходу запчастей в склад
                     foreach ($warehouse_data as $rows) {
                         if ($rows['id'] == $idw) {
                             $remain = $rows['remain'];
                         }
                     }
                     $wh_remain = $remain - $value;
                     $wh_serial = $spare_data['serial'];
                     $wh_name = $spare_data['name'];
                     $wh_type = $spare_data['type'];
                     $wh_path = $spare_data['path'];
                     //имя картинки для запчасти
                     // Вызываем метод модели для редактрования записи
                     $warehouse->editWarehouse($idw, $wh_serial, $wh_name, $wh_type, $wh_remain, 'unload', $wh_path);
                     //формируем строку для истории расхода запчастей по конкретной запчасти
                     $warehistory->addWarehistory($wh_serial, $wh_name, "{$number}-{$name} || платный ремонт редактирование", $spare_data['remain'], $value, $wh_remain);
                 }
             }
             //сохраняем данные в базу
             $service = new Application_Model_DbTable_Service();
             $id = $this->getRequest()->getParam('id');
             $service->editService($id, $client, $number, $claim, $diagnos, $spares, $work, $status, $name, $comments, $counter, $serialize_price, $serialize_data);
             $this->_helper->redirector->gotoUrl("service/index");
             //если есть ошибки
         } else {
             $this->view->client = $client;
             $this->view->number = $number;
             $this->view->claim = $claim;
             $this->view->diagnos = $diagnos;
             $this->view->status = $status;
             $this->view->name = $name;
             $this->view->spares = $spares;
             $this->view->work = $work;
             $this->view->comments = $comments;
             $this->view->counter = $counter;
             $this->view->warehouse = $warehouse_data;
             $this->view->prices = $prices_data;
             $this->view->error_message = 'error_message';
             $this->view->error = $error;
             $this->view->checked_price = $checked_price;
             $this->view->check_data = $check_data;
             $this->view->checked = $checked;
         }
         //
         //        //если запроса ПОСТ нету, заполняем поля редактирования из базы
     } else {
         $this->view->client = $service_data['client'];
         $this->view->number = $service_data['number'];
         $this->view->claim = $service_data['claim'];
         $this->view->diagnos = $service_data['diagnos'];
         $this->view->status = $service_data['status'];
         $this->view->name = $service_data['name'];
         $this->view->spares = $service_data['spares'];
         $this->view->work = $service_data['work'];
         $this->view->comments = $service_data['comments'];
         $this->view->counter = $service_data['counter'];
         $this->view->warehouse = $warehouse_data;
         $this->view->prices = $prices_data;
         $this->view->checked_price = unserialize($service_data['serialize_price']);
         $this->view->check_data = unserialize($service_data['serialize_data']);
         $this->view->checked = $checked;
     }
 }
예제 #2
0
 public function editAction()
 {
     // Создаём форму
     $form = new Application_Form_Warehouse();
     // Указываем текст для submit
     $form->submit->setLabel('Редактировать');
     // Передаём форму в view
     $this->view->form = $form;
     $warehouse = new Application_Model_DbTable_Warehouse();
     $id = $this->_getParam('id', 0);
     $data = $warehouse->getWarehouse($id);
     // Если к нам идёт Post запрос
     if ($this->getRequest()->isPost()) {
         // Принимаем его
         $formData = $this->getRequest()->getPost();
         // Если форма заполнена верно
         if ($form->isValid($formData)) {
             // Извлекаем данные
             $id = (int) $form->getValue('id');
             $serial = $form->getValue('serial');
             $name = $form->getValue('name');
             $type = $form->getValue('type');
             $remain = $form->getValue('remain');
             $price = $form->getValue('price');
             $image = $form->getValue('image');
             // загрузить картинку
             //
             if ($image) {
                 $imagename = $form->image->getFileName();
                 $needle = '/public/img';
                 $pos = strripos($imagename, $needle);
                 $filename = substr($imagename, $pos + 12);
             } else {
                 $path = $form->getValue('path');
                 if ($path) {
                     $filename = $path;
                 } else {
                     $filename = 'nophoto.png';
                 }
             }
             // Вызываем метод модели addMovie для вставки новой записи
             $warehouse->editWarehouse($id, $serial, $name, $type, $remain, $price, $filename);
             $warehistory = new Application_Model_DbTable_Warehistory();
             $warehistory->addWarehistory($serial, $name, "редактирование", $data['remain'], $remain - $data['remain'], $remain);
             // Используем библиотечный helper для редиректа на action = index
             $this->_helper->redirector('index');
         } else {
             // Если форма заполнена неверно,
             // используем метод populate для заполнения всех полей
             // той информацией, которую ввёл пользователь
             $form->populate($formData);
         }
     } else {
         if ($id > 0) {
             // Создаём объект модели
             $form->populate($data);
             $this->view->path = $data['path'];
         }
     }
 }
예제 #3
0
파일: Repaire.php 프로젝트: vitaliy5118/ss1
 public function editRepair($id, $number, $device)
 {
     // вносим изменения в склад запчастей
     $this->id = $id;
     $this->number = $number;
     if ($this->spares != '') {
         $this->spares .= ' ';
     }
     if ($this->check_data) {
         $warehouse = new Application_Model_DbTable_Warehouse();
         $warehouse_data = $warehouse->fetchAll();
         $warehistory = new Application_Model_DbTable_Warehistory();
         foreach ($this->check_data as $id => $value) {
             $spare_data = $warehouse->getWarehouse($id);
             $this->spares .= "|| {$spare_data['serial']}-{$spare_data['name']}-{$value}шт ";
             $row = $warehouse->getWarehouse($id);
             foreach ($warehouse_data as $rows) {
                 if ($rows['id'] == $id) {
                     $this->remain = $rows['remain'];
                 }
             }
             $this->remain -= $value;
             $this->serial = $row['serial'];
             $this->name = $row['name'];
             $this->type = $row['type'];
             $this->price = 'unload';
             $this->path = $row['path'];
             //имя картинки для запчасти
             // Вызываем метод модели addMovie для вставки новой записи
             $warehouse->editWarehouse($id, $this->serial, $this->name, $this->type, $this->remain, $this->price, $this->path);
             $warehistory->addWarehistory($this->serial, $this->name, "редактирование ремонта -{$this->number}-{$device['name']}", $row['remain'], $value, $this->remain);
         }
     }
     //редактируем запись о ремонте
     $editRepaire = new Application_Model_DbTable_Repairs();
     $editRepaire->editRepaire($this);
     //сохраняем статус ремонта
     $devices = new Application_Model_DbTable_Devices();
     $devices->editDeviceStatus($this);
     //сохраняем историю
     $history = new Application_Model_DbTable_History();
     $history->addRepairHistory($this);
 }