Javascript l oop через отношения Laravel - PullRequest
0 голосов
/ 25 мая 2020

У меня есть 2 корабля отношений в Laravel для Products, это Price и User. У каждого User много Product, а у каждого Product много User и Price. Вот список клиентов:

<select name="client" id="client" class="form-control client">
   <option value="">-- Zgjidh Klientin --</option>
      @foreach ($clients as $client)
   <option data-preferencial ="{{ $client->preferencial }}" value="{{ $client->id }}" class = "user klient">{{ $client->name }}</option>
      @endforeach
</select>

Мои отношения работают нормально. Я получаю Продукты Пользователя с объектами pivot и prices. Я прохожу через них oop и получаю массив prices. Вот код моей таблицы:

<table class="table table-bordered" id="products_table">
  <tbody>
   <tr>
    <td>
     <select name="products[]" id="products" class="form-control products">
       <option value="">Choose product</option>
         @foreach ($products as $product)
         <option data-price="{{ $product->sell_price }}" value="{{ $product->id }}" class = "product">{{ $product->name }} (USD {{ number_format($product->sell_price, 2) }})</option>
         @endforeach
      </select>
    </td>
      <td>
    <input type="number" id="quantity" name="quantities[]" class="form-control qty" value="1" />
      </td>
       <td>
         <input type="text" id="prices" name="prices[]" class="form-control prices" value="" step="0.00" min="0" readonly />
        </td>
         <td><input type="number" name='total[]' placeholder='0.00' class="form-control total" readonly /></td>
        <td>
        <button type="button" class="d-none btn btn-danger btn-sm" onclick="deleteRow(this)"><i class="fas fa-times"></i></button>
        </td>
       </tr>
      </tbody>
<tfoot>
 <tr>
  <th colspan="4" class="text-right" id="total_price">0.00</th>
   <input type="hidden" class="total_invoice" name="total_invoice" value="" />
     </tr>
        </tfoot>
          </table>

И вот мой Javascript взаимодействует с таблицей:

var id = [];
var min = [];
var max = [];
var prefPrice = [];

$(document).on('change', '.client', function () {
     var clients = $('option:selected', this).data("preferencial");
     if (clients === 1) {
             for(var i=0; i<products.length; i++){
                 var prods = products[i].prices;
                    for(var p=0; p<prods.length; p++){
                        cmimet.push([prods[p].product_id, prods[p].min,  prods[p].max, prods[p].price]);
                    }

                }
                cmimet.filter(function(entry) {
                    id = entry[0];
                    min = entry[1];
                    max = entry[2];
                    prefPrice = entry[3];
                    mix.push({id:entry[0], min:entry[1], max:entry[2], prefPrice:[entry[3]]});
                });
            }
        });

У меня проблема с атрибутом цены, поскольку я не возможность передать его для расчета на основе продукта id.

function calc2($tr)
        {
            var prodId = $tr.find("td:nth-child(1) select option:selected").val();
            var price = $tr.find("td:nth-child(1) select option:selected").data("price");
            var size = $tr.find("td:nth-child(2) input").val();
            var all =[];
            for (var j=0; j<mix.length; j++) {
                if (mix[j].id == prodId) {
                    var min = mix[j].min;
                    var max = mix[j].max;
                    var prefPrice = [mix[j].prefPrice];
                    all.push([min, max, prefPrice]);
                }
            }
            var total = price * size;
            $tr.find("td:nth-child(3) input").attr('value', price);
            $tr.find("td:nth-child(4) input").attr('value', total);
            calcTotal();
        }

Как видите, я получил цену по умолчанию из таблицы Products. Но если клиент предпочитает, у него есть цена, основанная на заказанном количестве.

Вот возврат от Controller

0:
buy_price: 200
category: "test category"
code: "GMC_0321"
created_at: "2020-05-18T18:24:52.000000Z"
id: 1
name: "test product"
dettails: "test dettails"
pivot: {user_id: 3, product_id: 1, qty: 25, created_at: "2020-05-22T11:38:46.000000Z", updated_at: "2020-05-22T11:41:54.000000Z"}
prices: Array(3)
0: {id: 1, product_id: 1, min: 1, max: 10, price: 300, …}
1: {id: 2, product_id: 1, min: 11, max: 25, price: 250, …}
2: {id: 3, product_id: 1, min: 25, max: 9999, price: 230, …}
length: 3
__proto__: Array(0)
sell_price: 300
updated_at: "2020-05-18T18:24:52.000000Z"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...