/**
  * Возврат средств
  *
  * @param int    $provider_id
  * @param string $bill_id
  * @param int    $refund_id
  *
  * @internal param int $id
  *
  * @return Response
  */
 public function update($provider_id, $bill_id, $refund_id)
 {
     $bill = Bill::getBill($bill_id, $provider_id);
     //Проверяем наличие счёта
     if (!$bill) {
         $data['error'] = Catalog::C_BILL_NOT_FOUND;
         return $this->responseFromGate($data);
     }
     //Проверяем refund_id на уникальность в этом счёте
     if (Refund::isRefundExist($bill_id, $refund_id)) {
         $data['error'] = Catalog::C_BILL_ALREADY_EXIST;
         return $this->responseFromGate($data);
     }
     //Проверяем статус
     if (!$bill->isPaid()) {
         $data['error'] = Catalog::C_BILL_NOT_FOUND;
         return $this->responseFromGate($data);
     }
     //Проверяем запрошенную сумму для отмены
     $amountQuery = Input::get('amount');
     $validator = Validator::make(array('amount' => $amountQuery), Validators::rulesForRefundBill());
     if (!$validator->passes()) {
         $data['error'] = Catalog::C_WRONG_FORMAT;
         return $this->responseFromGate($data);
     }
     //Вычисляем сууму для возврата
     $refundAmount = Refunds::calculateAmount($bill, $amountQuery);
     $data = array('bill_id' => $bill_id, 'refund_id' => $refund_id, 'amount' => $refundAmount, 'status' => 'processing');
     Refunds::NewRefund($data);
     $data['user'] = $bill->user;
     $data['error'] = Catalog::C_WITHOUT_ERRORS;
     return $this->responseFromGate($data);
 }
 /**
  * Создание нового счета
  *
  * @param int    $provider_id
  * @param string $bill_id
  *
  * @return Response
  */
 public function store($provider_id, $bill_id)
 {
     $data = Input::all();
     $data['bill_id'] = $bill_id;
     $validator = Validator::make($data, Validators::rulesForNewBill());
     //Если не пройдена валидация - отдаём ошибку формата
     if (!$validator->passes()) {
         $data['error'] = Catalog::C_WRONG_FORMAT;
         return $this->responseFromGate($data);
     }
     //Если сумма мала - отдаём ошибку маленькой суммы
     if ($data['amount'] < 10) {
         $data['error'] = Catalog::C_SMALL_AMOUNT;
         return $this->responseFromGate($data);
     }
     //Если сумма велика - отдаём ошибку большой суммы
     if ($data['amount'] > 15000) {
         $data['error'] = Catalog::C_BIG_AMOUNT;
         return $this->responseFromGate($data);
     }
     //Отдаём ошибку если счёт уже существует
     if (Bill::getBill($bill_id, $provider_id)) {
         $data = array('error' => Catalog::C_BILL_ALREADY_EXIST);
         return $this->responseFromGate($data);
     }
     //Создаём счёт и возвращаем его
     $bill = Bills::NewBill($data);
     if ($bill) {
         $data = $this->dataFromObj($bill);
         $data['error'] = 0;
         return $this->responseFromGate($data);
     }
     //Если не создан счёт, то отдаём техническую ошибку
     $data = array('error' => Catalog::C_TECHNICAL_ERROR);
     return $this->responseFromGate($data);
 }
 /**
  * Проверка ввода при смене данных
  *
  * @param $data
  *
  * @return null
  */
 private function getErrorFromChangeData($data)
 {
     $data['username'] = e($data['username']);
     $validator = Validator::make($data, Validators::rulesForChangeAccData(), Validators::messagesForErrors());
     $userMessages = $validator->messages();
     if ($validator->fails()) {
         $result['errors'] = array('username' => $userMessages->first('username'), 'callback' => $userMessages->first('callback'), 'email' => $userMessages->first('email'), 'key' => $userMessages->first('key'), 'password' => $userMessages->first('password'), 'confirmPassword' => $userMessages->first('confirmPassword'));
         return $result;
     }
     return null;
 }