readMoney(); $this->readStartDate(); $this->readEndDate(); $this->mkTicket(); $this->mkTransfer(); $this->addToCustomerCart(); } protected function mkTicket( ) { $this->ticket = new Ticket (); $this->ticket->id_user = \Yii::$app->user->id; $this->ticket->id_ticket_type = $this->ticketType->id_ticket_type; // save to contract $this->ticket->id_account = $this->account->id_account; $this->ticket->id_discount = isset($this->discount) ? $this->discount->id_discount : null; // contract.id_discount $this->ticket->start = $this->start; $this->ticket->end = $this->end; $this->ticket->max_usage_count = $this->ticketType->max_usage_count; $this->ticket->usage_count = 0; $this->ticket->status = Ticket::STATUS_ACTIVE; $this->ticket->price_brutto = $this->money; $this->ticket->id_card = $this->card->id_card; if ( isset( $this->ticketInstallmentRequest ) ){ $this->ticket->part = $this->ticketInstallmentRequest->priority; } if (isset($this->contract)){ $this->ticket->id_contract = $this->contract->id_contract; } if ( !$this->ticket->save ( false ) ){ \Yii::error("Nem sikerült menteni a bérletet!"); throw new \Exception("Bérlet mentése nem sikerült"); } \Yii::info("Bérlet elmentve: id=" . $this->ticket->id_ticket); } protected function mkTransfer( ) { $this->transfer = new Transfer (); $this->transfer->status = $this->transferStatus; $this->transfer->type = Transfer::TYPE_TICKET; $this->transfer->direction = Transfer::DIRECTION_IN; $this->transfer->id_object = $this->ticket->id_ticket; $this->transfer->item_price = $this->ticketType->price_brutto; $this->transfer->money = $this->money; $this->transfer->id_account = $this->account->id_account; $this->transfer->count = 1; if ($this->transferStatus == Transfer::STATUS_PAID) { $this->transfer->paid_at = date ( 'Y-m-d H:i:s' ); $this->transfer->paid_by = \Yii::$app->user->id; } $this->transfer->payment_method = $this->paymentMethod; $this->transfer->comment = ""; if ( isset($this->ticketInstallmentRequest)){ $this->transfer->comment = "Csoportos megbízással"; } $this->transfer->id_user = \Yii::$app->user->id; $this->transfer->id_customer = $this->customer->id_customer; if ( !$this->transfer->save (false) ){ \Yii::error("Nem sikerült menteni a tranzakciót!"); throw new \Exception("Tranzakció mentése nem sikerült"); } \Yii::info("tranzakció elmentve: id=" . $this->transfer->id_transfer); } protected function addToCustomerCart( ) { } protected function readMoney(){ if ( !isset($this->money)){ $this->money = $this->ticketType->price_brutto; if (isset($this->discount)){ $this->money = Discount::applyDiscount($this->money, $this->discount); } if ( isset($this->ticketInstallmentRequest)){ $this->money = $this->ticketInstallmentRequest->money; } } } protected function readStartDate(){ if ( !isset($this->start)){ $this->start = Helper::getDateString(); if ( isset($this->ticketInstallmentRequest)){ $this->start = $this->ticketInstallmentRequest->request_target_time_at; } } } protected function readEndDate(){ if ( !isset($this->end)){ $unit = "month"; if ( $this->ticketType->time_unit_type == TicketType::TIME_UNIT_DAY ) { $unit = "day"; } $count = $this->ticketType->time_unit_count; $this->end = date( 'Y-m-d', strtotime( $this->start . " +$count $unit -1 day")); if ( isset($this->ticketInstallmentRequest)){ $this->end = date( 'Y-m-d', strtotime( $this->ticketInstallmentRequest->request_target_time_at . " +1 month -1 day")); } } } }