PluginProbe
Packeta / trunk
Packeta vtrunk
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / Labels / LabelPrintParametersService.php

LabelPrintParametersService.php in Packeta trunk, at src/Packetery/Module/Labels/LabelPrintParametersService.php

139 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare( strict_types=1 );
4
5 namespace Packetery\Module\Labels;
6
7 use Packetery\Core\Entity\Order;
8 use Packetery\Module\FormFactory;
9 use Packetery\Module\Framework\WpAdapter;
10 use Packetery\Module\Options\OptionsProvider;
11 use Packetery\Module\Order\LabelPrint;
12 use Packetery\Module\Order\Repository;
13 use Packetery\Nette\Forms\Form;
14 use Packetery\Nette\Http;
15
16 class LabelPrintParametersService {
17
18 /**
19 * @var WpAdapter
20 */
21 private $wpAdapter;
22
23 /**
24 * @var OptionsProvider
25 */
26 private $optionsProvider;
27
28 /**
29 * @var FormFactory
30 */
31 private $formFactory;
32
33 /**
34 * @var Http\Request
35 */
36 private $httpRequest;
37
38 /**
39 * @var Repository
40 */
41 private $orderRepository;
42
43 public function __construct(
44 WpAdapter $wpAdapter,
45 OptionsProvider $optionsProvider,
46 FormFactory $formFactory,
47 Http\Request $httpRequest,
48 Repository $orderRepository
49 ) {
50 $this->wpAdapter = $wpAdapter;
51 $this->optionsProvider = $optionsProvider;
52 $this->formFactory = $formFactory;
53 $this->httpRequest = $httpRequest;
54 $this->orderRepository = $orderRepository;
55 }
56
57 /**
58 * Creates offset setting form.
59 *
60 * @param int $maxOffset Maximal offset.
61 * @param string|null $name Form name.
62 *
63 * @return Form
64 */
65 public function createForm( int $maxOffset, ?string $name = null ): Form {
66 $form = $this->formFactory->create( $name );
67
68 $availableOffsets = [];
69 for ( $i = 0; $i <= $maxOffset; $i++ ) {
70 $availableOffsets[ $i ] = ( $i === 0 ?
71 $this->wpAdapter->__( "don't skip any field on a print sheet", 'packeta' ) :
72 // translators: %s is offset.
73 sprintf( $this->wpAdapter->__( 'skip %s fields on first sheet', 'packeta' ), $i )
74 );
75 }
76 $form->addSelect(
77 'offset',
78 $this->wpAdapter->__( 'Skip fields', 'packeta' ),
79 $availableOffsets
80 )->checkDefaultValue( false );
81
82 return $form;
83 }
84
85 public function getOffset(): ?int {
86 $maxOffset = $this->optionsProvider->getLabelMaxOffset( $this->getLabelFormat() );
87 $form = $this->createForm( $maxOffset );
88 $offsetParam = $this->httpRequest->getQuery( 'offset' );
89 if ( $maxOffset === 0 ) {
90 return 0;
91 }
92 if ( $offsetParam !== null ) {
93 return (int) $offsetParam;
94 }
95 if ( $form->isSubmitted() ) {
96 $data = $form->getValues( 'array' );
97
98 return (int) $data['offset'];
99 }
100
101 return null;
102 }
103
104 public function removeExternalCarrierPacketIds( array $packetIds, bool $isCarrierLabels, bool $fallbackToPacketaLabel ): array {
105 if ( $isCarrierLabels === true || $fallbackToPacketaLabel === true ) {
106 return $packetIds;
107 }
108
109 foreach ( $packetIds as $orderId => $packetId ) {
110 $order = $this->orderRepository->getByIdWithValidCarrier( $orderId );
111 if ( $order !== null && $order->isExternalCarrier() ) {
112 unset( $packetIds[ $orderId ] );
113 }
114 }
115
116 return $packetIds;
117 }
118
119 /**
120 * Gets label format for current job.
121 *
122 * @return string
123 */
124 public function getLabelFormat(): string {
125 $packetaLabelFormat = $this->optionsProvider->get_packeta_label_format();
126 $carrierLabelFormat = $this->optionsProvider->get_carrier_label_format();
127
128 return ( $this->httpRequest->getQuery( LabelPrint::LABEL_TYPE_PARAM ) === LabelPrint::ACTION_CARRIER_LABELS ? $carrierLabelFormat : $packetaLabelFormat );
129 }
130
131 public function getLabelFormatByOrder( Order $order ): string {
132 if ( $order->isExternalCarrier() ) {
133 return $this->optionsProvider->get_carrier_label_format();
134 }
135
136 return $this->optionsProvider->get_packeta_label_format();
137 }
138 }
139