Files
everything2/EveryThing/Pages/TransportLoadingOrder/AddEdit.cshtml
2023-07-24 09:11:14 +02:00

539 lines
29 KiB
Plaintext

@page "{handler?}"
@model EveryThing.Pages.TransportLoadingOrder.AddEditModel
@{
ViewData["Title"] = "Urejanje naloga";
Layout = "~/Pages/Layouts/_Layout.cshtml";
}
<!-- Editor -->
<link rel="stylesheet" href="~/vendor/libs/quill/typography.css" asp-append-version="true" />
<link rel="stylesheet" href="~/vendor/libs/quill/editor.css" asp-append-version="true" />
<link rel="stylesheet" href="~/vendor/libs/select2/select2.css" asp-append-version="true" />
<h4 class="d-flex justify-content-between align-items-center w-100 font-weight-bold py-1 mb-4">
<span>
<span class="text-muted font-weight-light">Nalog /</span>
@if (Model.TransportLoadingOrder.IdTransportLoadingOrder > 0)
{
<span>Urejanje</span>
}
else
{
<span>Vnos</span>
}
</span>
</h4>
<div class="nav-tabs-top nav-responsive-sm">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#item-basic">Osnovni podatki</a>
</li>
@if (Model.TransportLoadingOrder.IdTransportLoadingOrder > 0)
{
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#item-positions">Pozicije</a>
</li>
}
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="item-basic">
<form method="post" data-ajax="true" data-ajax-method="post" asp-page-handler="order" data-ajax-complete="orderPostCompleted" onsubmit="beforeOrderPost()">
<div class="card-body">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder"/>
<input type="hidden" asp-for="TransportLoadingOrder.IdCompanyFk"/>
<input type="hidden" asp-for="TransportLoadingOrder.OrderNumber"/>
<input type="hidden" asp-for="TransportLoadingOrder.OrderYear"/>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrder.IdPartnerFk" class="form-label"></label>
<div class="input-group">
<select id="selTransporter" asp-for="TransportLoadingOrder.IdPartnerFk" class="form-control select2-transporter" asp-items="ViewBag.IdPartnerFk"></select>
</div>
</div>
</div>
<div class="col-4">
<label asp-for="TransportLoadingOrder.IdVehicleFk" class="form-label"></label>
<select asp-for="TransportLoadingOrder.IdVehicleFk" class="form-control select2-vehicle" asp-items="Model.Vehicles">
</select>
</div>
<div class="col-2 text-right">
<label class="form-label">Nakladalni nalog</label>
<br/>
<h4>
@if (Model.TransportLoadingOrder.IdTransportLoadingOrder > 0)
{
@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.OrderNumberDisplay)
}
</h4>
</div>
</div>
<div class="row">
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.OrderCity" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.OrderCity" class="form-control"/>
<span asp-validation-for="TransportLoadingOrder.OrderCity" class="text-danger"></span>
</div>
</div>
<div class="col-2">
<div class="form-group">
<label asp-for="TransportLoadingOrder.OrderDate" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.OrderDate" class="form-control" />
<span asp-validation-for="TransportLoadingOrder.OrderDate" class="text-danger"></span>
</div>
</div>
<div class="col-1">
<div class="form-group">
<label asp-for="TransportLoadingOrder.State" class="form-label"></label>
<select asp-for="TransportLoadingOrder.State" class="form-control" asp-items="ViewBag.States"></select>
<span asp-validation-for="TransportLoadingOrder.State" class="text-danger"></span>
</div>
</div>
<div class="col-4">
<div class="form-group">
<label asp-for="TransportLoadingOrder.VehicleText" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.VehicleText" class="form-control vehicle-text" />
<span asp-validation-for="TransportLoadingOrder.VehicleText" class="text-danger"></span>
</div>
</div>
<div class="col-2">
<div class="form-group">
<label asp-for="TransportLoadingOrder.Total" class="form-label"></label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">€</div>
</div>
<input autocomplete="off" asp-for="TransportLoadingOrder.Total" class="form-control">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group mb-0">
<label asp-for="TransportLoadingOrder.PreText" class="form-label"></label>
<input type="hidden" id="value-pretext" asp-for="@Model.TransportLoadingOrder.PreText"/>
<div id="editor-pretext" style="height: 250px">
@Html.Raw(Model.TransportLoadingOrder.PreText)
</div>
<span asp-validation-for="TransportLoadingOrder.PreText" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group mb-0">
<label asp-for="TransportLoadingOrder.PostText" class="form-label"></label>
<input type="hidden" id="value-posttext" asp-for="@Model.TransportLoadingOrder.PostText"/>
<div id="editor-posttext" style="height: 250px">
@Html.Raw(Model.TransportLoadingOrder.PostText)
</div>
<span asp-validation-for="TransportLoadingOrder.PostText" class="text-danger"></span>
</div>
</div>
</div>
</div>
<div class="card-footer py-3 text-right">
<button id="saveOrder" type="submit" class="btn btn-primary">Shrani nalog</button>
<a asp-page="Index" class="btn btn-default">Nazaj</a>
</div>
</form>
</div>
<div class="tab-pane fade" id="item-positions">
<div class="card-body">
<form method="post" data-ajax="true" data-ajax-method="post" asp-page-handler="positionadd" data-ajax-complete="laddaAddPosition.stop(); loadPosition();" data-ajax-begin="laddaAddPosition.start();" onsubmit="handleEditors()">
<div class="row">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder" />
<div class="col-4">
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="form-label">Naklad</label>
<select id="selLoading" asp-for="TransportLoadingOrderLoadUnload.IdLoadingFk" class="form-control select2-loading" asp-items="ViewBag.IdLoadingFk">
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingText" class="form-label"></label>
<textarea id="taLoadingText" rows="3" asp-for="TransportLoadingOrderLoadUnload.LoadingText" class="form-control"></textarea>
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingText" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingDateFrom" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingDateFrom" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingDateFrom" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingDateTo" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingDateTo" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingDateTo" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingReference" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingReference" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingReference" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingNote" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingNote" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingNote" class="text-danger"></span>
</div>
</div>
</div>
</div>
<div class="col-4">
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="form-label">Razklad</label>
<select id="selUnloading" asp-for="TransportLoadingOrderLoadUnload.IdUnloadingFk" class="form-control select2-unloading" asp-items="ViewBag.IdUnloadingFk">
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingText" class="form-label"></label>
<textarea id="taUnloadingText" rows="3" asp-for="TransportLoadingOrderLoadUnload.UnloadingText" class="form-control"></textarea>
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingText" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingDateFrom" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingDateFrom" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingDateFrom" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingDateTo" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingDateTo" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingDateTo" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingReference" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingReference" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingReference" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingNote" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingNote" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingNote" class="text-danger"></span>
</div>
</div>
</div>
</div>
<div class="col-4">
<div class="row">
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.CargoDescription" class="form-label"></label>
<input type="hidden" id="value-cargodescription" asp-for="@Model.TransportLoadingOrderLoadUnload.CargoDescription" />
<div id="editor-cargodescription" style="height: 277px">
@Html.Raw(Model.TransportLoadingOrderLoadUnload?.CargoDescription)
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 text-right">
<button type="submit" id="addPosition" class="btn btn-primary ladda-button" data-style="zoom-out">Dodaj naklad/razklad</button>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="card-footer py-3" id="loadPositions">
<div id="positionsTable"></div>
</div>
</div>
</div>
</div>
<div id="divModalCodetablePartnerAddEditPlaceholder"></div>
<div id="divModalCodetableVehicleAddEditPlaceholder"></div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
@Html.AntiForgeryToken()
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<!-- Editor -->
<script src="~/vendor/libs/quill/quill.js" asp-append-version="true"></script>
<script src="~/vendor/libs/select2/select2.js" asp-append-version="true"></script>
<script src="~/js/codeTablePartnerHelper.js?v=1" asp-append-version="true"></script>
<script src="~/js/codeTableVehicleHelper.js?v=1" asp-append-version="true"></script>
<script>
var Block = Quill.import('blots/block');
Block.tagName = 'DIV';
Quill.register(Block, true);
var laddaAddPosition = Ladda.create(document.querySelector('#addPosition'));
var laddaSaveOrder = Ladda.create(document.querySelector('#saveOrder'));
let editorPreText;
let editorPostText;
let editorCargoDescription;
function handleEditors() {
document.getElementById('value-pretext').value = editorPreText.root.innerHTML;
document.getElementById('value-posttext').value = editorPostText.root.innerHTML;
document.getElementById('value-cargodescription').value = editorCargoDescription.root.innerHTML;
}
function loadPosition() {
let idOrder = '@Request.Query["id"]';
if (idOrder === '') {
return;
}
loadStartElement('#loadPositions');
$('#positionsTable').load('/TransportLoadingOrder/AddEdit?id=' + idOrder + '&handler=indexloadunload', function() {
$('[data-toggle="tooltip"]').tooltip({ container: 'table' });
loadEndElement('#loadPositions');
});
}
$(document).ready(function () {
$('.select2-transporter').select2({
placeholder: 'Izberite prevoznika',
language: {
noResults: function () {
return `<button style="width: 100%" type="button"
class="btn btn-primary"
onClick='addNewCodeTablePartnerTransporter()'>Dodaj novega</button>
</li>`;
}
},
escapeMarkup: function (markup) {
return markup;
}
});
$('.select2-loading').select2({
allowClear: true,
placeholder: 'Izberite naklad ali vnesite naslov naklada',
language: {
noResults: function () {
return `<button style="width: 100%" type="button"
class="btn btn-primary"
onClick='addNewCodeTablePartnerLoading()'>Dodaj novega</button>
</li>`;
}
},
escapeMarkup: function (markup) {
return markup;
}
}).on('change', function () {
if ($(".select2-loading").val() !== '') {
loadLoadingUnloadingText('#taLoadingText', parseInt($(".select2-loading").val()));
} else {
$('#taLoadingText').text('');
}
});;
$('.select2-unloading').select2({
allowClear: true,
placeholder: 'Izberite razklad ali vnesite naslov razklada',
language: {
noResults: function () {
return `<button style="width: 100%" type="button"
class="btn btn-primary"
onClick='addNewCodeTablePartnerUnloading()'>Dodaj novega</button>
</li>`;
}
},
escapeMarkup: function (markup) {
return markup;
}
}).on('change', function() {
if ($(".select2-unloading").val() !== '') {
loadLoadingUnloadingText('#taUnloadingText', parseInt($(".select2-unloading").val()));
} else {
$('#taUnloadingText').text('');
}
});
$('.select2-vehicle').select2({
allowClear: true,
placeholder: "Izberi vozilo",
language: {
noResults: function () {
return `<button style="width: 100%" type="button"
class="btn btn-primary"
onClick='addNewCodeTableVehicle()'>Dodaj novega</button>
</li>`;
}
},
escapeMarkup: function (markup) {
return markup;
}
}).on('change', function() {
if ($(".select2-vehicle").val() !== '') {
$('.vehicle-text').val('');
}
});
if ($('.select2-vehicle').val() === '') {
$('.select2-vehicle').val(null);
}
//Ker tako gre za dodajanje in je lahko prazno
$('.select2-loading').val(null).trigger('change');
$('.select2-unloading').val(null).trigger('change');
editorPreText = new Quill('#editor-pretext', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' });
editorPostText = new Quill('#editor-posttext', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' });
editorCargoDescription = new Quill('#editor-cargodescription', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' });
loadPosition();
});
function beforeOrderPost() {
if ($('.select2-vehicle').val() === '') {
$('.select2-vehicle').val(null);
}
handleEditors();
}
orderPostCompleted = function (xhr) {
laddaSaveOrder.stop();
if (xhr.responseJSON.successful) {
location.replace('AddEdit?Id=' + xhr.responseJSON.id);
} else {
alert(xhr.responseJSON.error);
}
};
function addNewCodeTablePartnerTransporter(){
let title = $(".select2-transporter").data("select2").dropdown.$search.val();
codeTablePartnerAddEdit('#divModalCodetablePartnerAddEditPlaceholder', false, null, (idCodeTablePartner) => {
refreshCodeTablePartners('#selTransporter', idCodeTablePartner, true);
}, null, title, null, null, true);
}
function addNewCodeTablePartnerLoading() {
let title = $(".select2-loading").data("select2").dropdown.$search.val();
codeTablePartnerAddEdit('#divModalCodetablePartnerAddEditPlaceholder', false, null, (idCodeTablePartner) => {
refreshCodeTablePartners('#selLoading', idCodeTablePartner, null, true);
}, null, title, null, null, null, true);
}
function addNewCodeTablePartnerUnloading() {
let title = $(".select2-unloading").data("select2").dropdown.$search.val();
codeTablePartnerAddEdit('#divModalCodetablePartnerAddEditPlaceholder', false, null, (idCodeTablePartner) => {
refreshCodeTablePartners('#selUnloading', idCodeTablePartner, null, true);
}, null, title, null, null, null, true);
}
function refreshCodeTablePartners(selector, idToSelect, transporters, loadingUnloadings) {
$.ajax({
type: "GET",
url: "/CodeTablePartners/Index/?handler=CodeTablePartnersSelect",
data: {
transporters,
loadingUnloadings
},
success: function (data) {
$(selector).empty();
$(data.partners).each(function () {
$(selector).append($("<option></option>").val(this.value).html(this.text));
});
$(selector).val(idToSelect).trigger('change');
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
}
function loadLoadingUnloadingText(selector, idPartner) {
if (isNaN(idPartner) || idPartner <= 0) {
return;
}
$.ajax({
type: "GET",
url: "AddEdit/?handler=LoadingUnloadingText",
data: {
idPartner
},
success: function (data) {
console.log(data);
if (data.successful) {
$(selector).text(data.text);
} else {
Swal.fire('Napaka pri pridobivanju podatkov',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
}
function addNewCodeTableVehicle() {
let title = $(".select2-vehicle").data("select2").dropdown.$search.val();
codeTableVehicleAddEdit('#divModalCodetableVehicleAddEditPlaceholder', false, null, (idCodeTableVehicle) => {
refreshCodeTableVehicle('.select2-vehicle', idCodeTableVehicle, null, true);
}, null, title);
}
function refreshCodeTableVehicle(selector, idToSelect) {
$.ajax({
type: "GET",
url: "/CodeTableVehicles/Index/?handler=CodeTableVehiclesSelect",
data: {
},
success: function (data) {
$(selector).empty();
$(data.vehicles).each(function () {
$(selector).append($("<option></option>").val(this.value).html(this.text));
});
$(selector).val(idToSelect).trigger('change');
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
}
</script>
}