/// <reference path="../typings/jquery/jquery.d.ts" />
"use strict";
namespace AutomatizovanySklad.VytvorDodaciList {
    var tlacitkoUloz = ".save-button";
    var polozkyTabulky = "#product-items";

    class DodaciListModel {
        public KodDodacihoListu: string;
        public VybranySubjektId: number;
        public Zaznamy: Array<DodaciListZaznamModel> = new Array<DodaciListZaznamModel>();
        public TypTransakce: number;
    }

    class DodaciListZaznamModel {
        public ProduktModel: ProduktModel = new ProduktModel();
        public VybranaKartaId: number;
        public KartaNazev: string;
    }

    class ProduktModel {
        public Kod: string;
        public Cena?: number;
        public Pocet?: number;
    }

    class VytvorDodaciListViewModel {
        public apply = () => {
            $(tlacitkoUloz).click(this.ulozDodaciList);
        }

        ulozDodaciList = () => {
            var model = new DodaciListModel();
            model.KodDodacihoListu = $("#KodDodacihoListu").val();
            model.TypTransakce = $("#TypTransakce").val();
            model.VybranySubjektId = $("#VybranySubjektId").val();

            $(polozkyTabulky + ' tbody')
                .find('tr')
                .each((index, row) => {
                    var produkt = new DodaciListZaznamModel();
                    produkt.VybranaKartaId = +$(row).find("td.karta-id").text();
                    produkt.ProduktModel.Cena = +$(row).find("td.produkt-cena").text();
                    produkt.ProduktModel.Pocet = +$(row).find("td.produkt-mnozstvi").text();
                    produkt.ProduktModel.Kod = $(row).find("td.nazev-produktu").text();
                    model.Zaznamy.push(produkt);
                });

            var token = $('input[name="__RequestVerificationToken"]').val();
            var headers = {};
            headers['__RequestVerificationToken'] = token;

            var json = JSON.stringify(model);
            function ajax() {
                return $.ajax({
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    type: "POST",
                    headers: headers,
                    data: json,
                    async: false,
                    url: "/DodaciList/UlozDodaciList",
                    cache: false,
                    success: function (result) {
                        return result;
                    }
                });
            }

            ajax().then(function (result) {
                if (result.zprava === "provedeno") {
                    window.location.href = result.url;
                }
                else if (result.zprava === "nedostatek") {
                    $("#KodDodacihoListu").val(result.model.KodDodacihoListu);
                    $("VybranySubjektId").val(result.model.VybranySubjektId);
                    $("TypTransakce").val(result.model.TypTransakce);
                    result.model.Zaznamy.forEach(function (item) {
                        $("product-items tbody").append("<tr><td class='karta-id'>" +
                            item.ProduktModel.VybranaKartaId +
                            "</td><td class='karta-nazev'>" +
                            item.ProduktModel.KartaNazev +
                            "</td><td class='nazev-produktu'>" +
                            item.ProduktModel.nazevLine +
                            "</td><td class='produkt-cena'>" +
                            item.ProduktModel.Cena +
                            "</td><td class='produkt-mnozstvi'>" +
                            item.ProduktModel.Pocet +
                            "</td><td><button type='submit' onclick='smazatRadek(this)'>Smazat</button></div></td>");
                    });
                    alert("Nemůžeš prodat víc než máš nebo nakoupit víc než je kapacita skladu!");
                }
                else if (result.zprava === "chyba") {
                    $("#KodDodacihoListu").val(result.model.KodDodacihoListu);
                    $("VybranySubjektId").val(result.model.VybranySubjektId);
                    $("TypTransakce").val(result.model.TypTransakce);
                    result.model.Zaznamy.forEach(function (item) {
                        $("product-items tbody").append("<tr><td class='karta-id'>" +
                            item.ProduktModel.VybranaKartaId +
                            "</td><td class='karta-nazev'>" +
                            item.ProduktModel.KartaNazev +
                            "</td><td class='nazev-produktu'>" +
                            item.ProduktModel.nazevLine +
                            "</td><td class='produkt-cena'>" +
                            item.ProduktModel.Cena +
                            "</td><td class='produkt-mnozstvi'>" +
                            item.ProduktModel.Pocet +
                            "</td><td><button type='submit' onclick='smazatRadek(this)'>Smazat</button></div></td>");
                    });
                   
                    alert("Zkontroluj si, zda jsou vyplněna všechna potřebná políčka!");
                } else if (result.zprava === "neplatnyNazev") {
                    $("#KodDodacihoListu").val(result.model.KodDodacihoListu);
                    $("VybranySubjektId").val(result.model.VybranySubjektId);
                    $("TypTransakce").val(result.model.TypTransakce);
                    result.model.Zaznamy.forEach(function (item) {
                        $("product-items tbody").append("<tr><td class='karta-id'>" +
                            item.ProduktModel.VybranaKartaId +
                            "</td><td class='karta-nazev'>" +
                            item.ProduktModel.KartaNazev +
                            "</td><td class='nazev-produktu'>" +
                            item.ProduktModel.nazevLine +
                            "</td><td class='produkt-cena'>" +
                            item.ProduktModel.Cena +
                            "</td><td class='produkt-mnozstvi'>" +
                            item.ProduktModel.Pocet +
                            "</td><td><button type='submit' onclick='smazatRadek(this)'>Smazat</button></div></td>");
                    });

                    alert("Neplatný název!");
                } else {
                    alert("Neznámá chyba!");
                }
            }
            );
        };
    }
    $(() => {
        var viewModel = new VytvorDodaciListViewModel();
        viewModel.apply();
    });
}

var smazatRadek = (e) => {
    $(e).closest("tr").remove();
}

