Untitled

 avatar
unknown
javascript
2 years ago
9.7 kB
5
Indexable
 public function sendConfirmationMail(array $orderDetails, string $summary, array $finalPrices): void
    {
        $template = (new MailTemplate)->getAll()->first()->template_uuid;
        $allNumbersCost = 0;

        foreach ($orderDetails['order_numbers'] as &$number) {
            $allNumbersCost = $number['is_main'] ? (float)$finalPrices['offer_price'] : $allNumbersCost + (float)$finalPrices['additional_number_offer_price'];
        }

        $GoldenNumbersSum = 0;
        foreach ($finalPrices['final_price_golden_numbers'] as &$number) {
            $GoldenNumbersSum = (float)$GoldenNumbersSum + (float)$number['price_after_discount'];
        }
        $finalGoldenNumbersSum = number_format((float)$GoldenNumbersSum, 2, '.', '');

        $sumToPay = $finalPrices['orders']['offer']['authorization_price'] + $finalGoldenNumbersSum + $orderDetails['delivery']['price'];
        $sumToPay = number_format((float)$sumToPay, 2, '.', '');

        $mailParams = [
            'summary'                         =>  $summary,
            'offer_name'                      =>  $orderDetails['offer']['name'],
            'tariff_plan'                     =>  $orderDetails['offer']['tariff_plan'],
            'offer_duration_name'             =>  $orderDetails['duration']['duration'],
            'invoice_type'                    =>  $this->avaliableFields['customfield_12332']['value'],
            'invoice_cost'                    =>  $this->avaliableFields['customfield_12332']['value'] === 'Faktura papierowa' ? '5,00 zł' : '0,00 zł',
            'delivery_name'                   =>  $orderDetails['delivery']['name'],
            'delivery_cost'                   =>  $orderDetails['delivery']['price'],
            'all_numbers_cost'                =>  $allNumbersCost,
            'main_number_offer_price'         =>  $finalPrices['offer_price'],
            'main_number_activation_price'    =>  $finalPrices['activation_price'],
            'cost_summary_main_number'        =>  $this->prepareCostsSummaryForMainNumber($finalPrices),
            'costs_summary_additional_number' =>  $this->prepareCostsSummaryForAdditionalNumber($finalPrices),
            'golden_numbers_fee'              =>  $finalGoldenNumbersSum,
            'authorization_price'             =>  $finalPrices['orders']['offer']['authorization_price'],
            'to_pay'                          =>  $sumToPay,
            'agreements'                      =>  $this->prepareAgreements($orderDetails, $finalPrices),
        ];

        // var_dump($finalPrices['orders']['terms']);die();
        // var_dump($orderDetails['offer']['terms']);die();

        \LMail::sendMailImmediately($template, $orderDetails['email'], $mailParams);
    }


    /**
     * prepare costs summary for HTML template
     * @return string
     */
    public function prepareCostsSummaryForAdditionalNumber(array $finalPrices): string
    {
        $summary = '';

        $isBussiness = $finalPrices['orders']['offer']['client_type']['name'] === 'business';

        $activationOriginal = (float)$finalPrices['orders']['offer']['additional_numbers_activation_price'] - (float)$finalPrices['orders']['offer']['additional_number_activation_price_reduction'];
        $activationFinal = (float)$finalPrices['additional_number_activation_price'];

        $subscriptionOriginal = $isBussiness ? $finalPrices['orders']['offer']['additional_numbers_price_net'] : $finalPrices['orders']['offer']['additional_numbers_price_gross'];
        $subscriptionFinal = $finalPrices['additional_number_offer_price'];

        foreach ($finalPrices['orders']['order_numbers'] as &$number) {
            if (!$number['is_main']) {

                $summaryItem = '<li style=" display: inline; font-size: 14px; font-weight: 600">
                Kolejny numer
              </li>
              <div  style="margin: 5px 0"/>
              <li style=" display: inline; font-size: 13px; font-weight: 400">
                Opłata za abonament
              </li>
              <div style="font-size: 13px; display: inline; float: right; ">';

                if ($subscriptionOriginal === $subscriptionFinal) {
                    $summaryItem = $summaryItem . ' <li style="font-weight: 600;  display: inline;">' . $subscriptionFinal . 'zł</li></div><div/>';
                } else {
                    $summaryItem = $summaryItem . ' <li style="display: inline; text-decoration-line: line-through; color: #6A6A6A" >' . $subscriptionOriginal .  'zł</li>
                <li style="font-weight: 600;  display: inline; color: #008A00">' . $subscriptionFinal . 'zł</li>
               </div>';
                }

                $summaryItem = $summaryItem . '</div>
            <li style=" display: inline; font-size: 13px; font-weight: 400">
              Jednorazowa opłata aktywacyjna
            </li>
            <div style="font-size: 13px; display: inline; float: right; ">';

                if ($activationOriginal === $activationFinal) {
                    $summaryItem = $summaryItem . '<li style="font-weight: 600;  display: inline;">' . $activationFinal .  'zł</li>
                </div>';
                } else {
                    $summaryItem = $summaryItem .   '
                 <li style="display: inline; text-decoration-line: line-through; color: #6A6A6A" >'  .  number_format($activationOriginal, 2, '.', '') . 'zł</li>
                 <li style="font-weight: 600;  display: inline;  color: #008A00">' . $activationFinal .  'zł</li>
                </div>';
                }
                $summaryItem = $summaryItem . '<div/><div style="font-size: 11px; color: #6A6A6A">Doliczona do pierwszej faktury</div>
              <div style="margin: 8px 0;"></div>';
                $summary = $summary . $summaryItem;
            }
        }
        return $summary;
    }
    public function prepareCostsSummaryForMainNumber(array $finalPrices): string
    {
        $summary = '';

        $isBussiness = $finalPrices['orders']['offer']['client_type']['name'] === 'business';

        $activationOriginal = number_format((float)((float)$finalPrices['orders']['offer']['activation_price'] - (float)$finalPrices['orders']['offer']['activation_price_reduction']), 2, '.', '');
        $activationFinal = $finalPrices['activation_price'];

        $subscriptionOriginal = $isBussiness ?  $finalPrices['orders']['offer']['price_net'] : $finalPrices['orders']['offer']['price_gross'];
        $subscriptionFinal = $finalPrices['offer_price'];

        foreach ($finalPrices['orders']['order_numbers'] as &$number) {
            if ($number['is_main']) {
                $summary = '<li style=" display: inline; font-size: 14px; font-weight: 600">
                Główny numer
              </li>
              <div  style="margin: 5px 0"/>
              <li style=" display: inline; font-size: 13px; font-weight: 400">
                Opłata za abonament
              </li>
              <div style="font-size: 13px; display: inline; float: right; ">';
                if ($subscriptionOriginal !== $subscriptionFinal) {

                    $summary = $summary . '<li style="display: inline; text-decoration-line: line-through; color: #6A6A6A">' .  $subscriptionOriginal . ' zł</li>
               <li style="font-weight: 600;  display: inline;  color: #008A00">' . $subscriptionFinal . ' zł</li>';
                } else {
                    $summary = $summary . '<li style="display: inline; font-weight: 600;  ">' .  $subscriptionOriginal . ' zł</li>';
                }

                $summary = $summary . '</div><div/>
              <li style=" display: inline; font-size: 13px; font-weight: 400">
                Jednorazowa opłata aktywacyjna
              </li>
              <div style="font-size: 13px; display: inline; float: right; ">';
                if ($activationOriginal !==  $activationFinal) {
                    $summary = $summary . '<li style="display: inline; text-decoration-line: line-through; color: #6A6A6A" >' .  $activationOriginal . ' zł</li>
               <li style="font-weight: 600;  display: inline;  color: #008A00">' .  $activationFinal. ' zł</li>';
                } else {
                    $summary = $summary . '<li style="font-weight: 600;  display: inline; ">' .  $activationFinal . ' zł</li>';
                }
                $summary = $summary .  '</div>
              <div style="font-size: 11px; color: #6A6A6A">Doliczona do pierwszej faktury</div>';
            }
        }
        return $summary;
    }
    public function prepareAgreements(array $orderDetails, array $finalPrices): string
    {
        $summary = '';
        foreach ($orderDetails['offer']['terms'] as &$number) {
            $summary = $summary . '<tr><td><br style="display: block; margin-bottom: 2px" /></td></tr>
            <tr><td style="width: 5%">';

            $imgSrc = '<img src="https://staging-v2.lajtmobile.pl/wp-content/uploads/2022/09/Group-5-1.png"/>';

            foreach ($finalPrices['orders']['terms'] as &$term) {
                if ($number['id'] === $term['id']) {
                    $imgSrc = '<img src="https://staging-v2.lajtmobile.pl/wp-content/uploads/2022/09/Group-1.png"/>';
                }
            }

            $summary = $summary . $imgSrc . '</td> <td style="text-align: justify; font-size: 10px; color: #6A6A6A;">' . $number['description'] . '</td> </tr>
             </tr>';
        }
        return $summary;
    }
}

Editor is loading...