partnerji na modal

This commit is contained in:
David Štaleker
2023-07-03 16:23:10 +02:00
parent c23c81e288
commit 7e7fecc59f
9 changed files with 603 additions and 22 deletions

View File

@@ -81,8 +81,10 @@ namespace EveryThing.Models.Vehicle
[Display(Name = "Registrska številka")] [Display(Name = "Registrska številka")]
public string RegistrationNumber { get; set; } public string RegistrationNumber { get; set; }
[NotMapped] public string DisplayName => $"{Title} ({RegistrationNumber})";
//TODO: Manjkajo polja //TODO: Manjkajo polja
//[Required] //[Required]
//[Display(Name = "Datum veljavnosti registracije")] //[Display(Name = "Datum veljavnosti registracije")]
//public DateTime RegistrationExpiry { get; set; } //public DateTime RegistrationExpiry { get; set; }

View File

@@ -0,0 +1,119 @@
@model EveryThing.Pages.CodeTablePartners.IndexModel.AddEditCodeTablePartner
<div class="modal" tabindex="-1" role="dialog" id="divModalAddEditCodeTablePartner">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalAddEditCodeTablePartnerTitle">Dodajanje novega artikla</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<input id="inpModalAddEditCodeTablePartnerIdCodeTablePartner" type="hidden" asp-for="@Model.IdCodeTablePartner" />
<input id="inpModalAddEditCodeTablePartnerEdit" type="hidden" asp-for="@Model.Edit" />
<div class="form-group">
<label asp-for="Partner.Title" class="control-label"></label>
<input id="inpModalAddEditCodeTablePartnerTitle" asp-for="Partner.Title" class="form-control" />
<span asp-validation-for="Partner.Title" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Partner.IdCountryFk" class="form-label"></label>
<select id="selModalAddEditCodeTablePartnerCountry" asp-for="Partner.IdCountryFk" class="form-control select2-partner-add-edit" asp-items="@Model.Countries"></select>
</div>
<div class="form-group">
<label asp-for="Partner.City" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerCity" asp-for="Partner.City" class="form-control" />
<span asp-validation-for="Partner.City" class="text-danger"></span>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="Partner.Street" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerStreet" asp-for="Partner.Street" class="form-control" />
<span asp-validation-for="Partner.Street" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="Partner.HouseNumber" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerHouseNumber" asp-for="Partner.HouseNumber" class="form-control" />
<span asp-validation-for="Partner.HouseNumber" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="Partner.PostNumber" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerPostNumber" asp-for="Partner.PostNumber" class="form-control" />
<span asp-validation-for="Partner.PostNumber" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="Partner.Post" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerPost" asp-for="Partner.Post" class="form-control" />
<span asp-validation-for="Partner.Post" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="Partner.TaxNumber" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerTaxNumber" asp-for="Partner.TaxNumber" class="form-control" />
<span asp-validation-for="Partner.TaxNumber" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="Partner.RegistrationNumber" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerRegistrationNumber" asp-for="Partner.RegistrationNumber" class="form-control" />
<span asp-validation-for="Partner.RegistrationNumber" class="text-danger"></span>
</div>
</div>
</div>
<div class="form-group">
<label asp-for="Partner.Email" class="form-label"></label>
<input id="inpModalAddEditCodeTablePartnerEmail" asp-for="Partner.Email" class="form-control" />
<span asp-validation-for="Partner.Email" class="text-danger"></span>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input id="inpModalAddEditCodeTablePartnerBuyer" class="form-check-input" asp-for="Partner.Buyer" /> @Html.DisplayNameFor(model => model.Partner.Buyer)
</label>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input id="inpModalAddEditCodeTablePartnerSupplier" class="form-check-input" asp-for="Partner.Supplier" /> @Html.DisplayNameFor(model => model.Partner.Supplier)
</label>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input id="inpModalAddEditCodeTablePartnerActive" class="form-check-input" asp-for="Partner.Active" /> @Html.DisplayNameFor(model => model.Partner.Active)
</label>
</div>
@* @if (Model.Files != null && Model.Files.Count > 0)
{
<div class="form-group">
@foreach (var file in Model.Files)
{
<div data-idfile="@file.IdFile">
<a download href="@Url.Page("/Files/Upload", "DownloadFile", new { idFile = file.IdFile, idReferenceFk = file.IdReferenceFk, fileTypeInt = (int)file.FileType})" class="btn btn-xs icon-btn btn-outline-secondary borderless" data-toggle="tooltip" data-placement="top" title="Prenos" data-state="secondary"><i class="fas fa-download"></i></a>
@Html.DisplayFor(modelPartner => file.Title)
<a class="btn btn-xs icon-btn btn-outline-danger borderless" data-state="danger" href='javascript:;' onclick="codeTablePartnerDeleteFile(this)"><i class="fas fa-times"></i></a>
</div>
}
</div>
}*@
</div>
<div class="modal-footer">
@*<a id="btnModalAddEditCodeTablePartnerAddFile" asp-page="/Files/Upload" asp-route-idReferenceFk="@Model.IdCodeTablePartner" asp-route-fileType="@Models.FileType.CodeTablePartner" class="btn btn-primary pull-right">Priloži datoteko</a>*@
<button id="btnModalAddEditCodeTablePartnerConfirm" type="button" class="btn btn-primary">Shrani</button>
<button id="btnModalAddEditCodeTablePartnerCancel" type="button" class="btn btn-secondary">Prekliči</button>
</div>
</div>
</div>
</div>

View File

@@ -5,6 +5,7 @@
ViewData["Title"] = "Partnerji"; ViewData["Title"] = "Partnerji";
Layout = "~/Pages/Layouts/_Layout.cshtml"; Layout = "~/Pages/Layouts/_Layout.cshtml";
} }
<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"> <h4 class="d-flex justify-content-between align-items-center w-100 font-weight-bold py-1 mb-4">
<span> <span>
@@ -69,7 +70,7 @@
<tbody> <tbody>
@foreach (var item in Model.Partner) @foreach (var item in Model.Partner)
{ {
<tr> <tr data-idCodeTablePartner="@item.IdPartner">
<td> <td>
@Html.DisplayFor(modelItem => item.Title) @Html.DisplayFor(modelItem => item.Title)
@if (!item.Active) @if (!item.Active)
@@ -91,7 +92,8 @@
@Html.DisplayFor(modelItem => item.Email) @Html.DisplayFor(modelItem => item.Email)
</td> </td>
<td class="text-right"> <td class="text-right">
<a class="btn btn-xs icon-btn btn-outline-secondary borderless" asp-page="Edit" asp-route-id="@item.IdPartner" data-toggle="tooltip" data-placement="top" title="Urejanje" data-state="secondary"><i class="fas fa-pencil-alt"></i></a> <a class="btn btn-xs icon-btn btn-outline-secondary borderless" href="javascript:;" onclick="editCodeTablePartner(this);" data-toggle="tooltip" data-placement="top" title="Urejanje" data-state="secondary"><i class="fas fa-pencil-alt"></i></a>
<a class="btn btn-xs icon-btn btn-outline-danger borderless" data-state="danger" href='javascript:;' onclick="deleteCodeTablePartner(this)" data-toggle="tooltip" data-placement="top" title="Izbriši"><i class="fas fa-times"></i></a>
</td> </td>
</tr> </tr>
} }
@@ -99,12 +101,40 @@
</table> </table>
<div class="card-footer py-3 text-right"> <div class="card-footer py-3 text-right">
<a asp-page="Create" class="btn btn-primary">Vnos partnerja</a> <button id="btnSubmit" type="button" class="btn btn-primary" onclick="addNewCodeTablePartner();">Vnos partnerja</button>
</div> </div>
<div id="divModalCodetablePartnerAddEditPlaceholder"></div>
</div> </div>
@Html.AntiForgeryToken()
@section Scripts { @section Scripts {
<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> <script>
$('[data-toggle="tooltip"]').tooltip({container: 'table'}); $('[data-toggle="tooltip"]').tooltip({container: 'table'});
function addNewCodeTablePartner() {
codeTablePartnerAddEdit('#divModalCodetablePartnerAddEditPlaceholder', false, null, (idCodeTableItem) => {
document.getElementById('btnSubmit').click();
});
}
function editCodeTablePartner(element) {
let idCodeTablePartner= parseInt($(element).parent().parent().attr('data-idCodeTablePartner'));
codeTablePartnerAddEdit('#divModalCodetablePartnerAddEditPlaceholder', true, idCodeTablePartner, (idCodeTablePartner) => {
document.getElementById('btnSubmit').click();
});
}
function deleteCodeTablePartner(element) {
let row = $(element).parent().parent();
let idCodeTablePartner= parseInt(row.attr('data-idCodeTablePartner'));
codeTablePartnerDelete(idCodeTablePartner, (idCodeTablePartner) => {
row.remove();
});
}
</script> </script>
} }

View File

@@ -11,12 +11,24 @@ using EveryThing.Data;
using EveryThing.Models; using EveryThing.Models;
using EveryThing.Models.CodeTable; using EveryThing.Models.CodeTable;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using System.Globalization;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace EveryThing.Pages.CodeTablePartners namespace EveryThing.Pages.CodeTablePartners
{ {
[Authorize(Roles = "Administrator,InvoicingUser,ProjecThingUser,TransportThingUser")] [Authorize(Roles = "Administrator,InvoicingUser,ProjecThingUser,TransportThingUser")]
public class IndexModel : PageModel public class IndexModel : PageModel
{ {
public class AddEditCodeTablePartner
{
public CodeTablePartner Partner { get; set; }
public bool Edit { get; set; }
public int IdCodeTablePartner { get; set; }
public SelectList Countries { get; set; }
//public IList<File> Files { get; set; }
}
private readonly EveryThing.Data.ApplicationDbContext _context; private readonly EveryThing.Data.ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager; private readonly UserManager<IdentityApplicationUser> _userManager;
@@ -49,5 +61,165 @@ namespace EveryThing.Pages.CodeTablePartners
.ToList(); .ToList();
} }
} }
public IActionResult OnGetCodeTablePartnerModal(bool edit, int idCodeTablePartner)
{
//TODO input izbrane
var user = _userManager.GetUserAsync(User).Result;
var countries = new SelectList(_context.CodeTableCountries, "IdCountry", "TranslationSlovenian");
CodeTablePartner partner = null;
if (edit)
{
partner = _context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdPartner == idCodeTablePartner);
//files = _context.Files
// .Where(x => x.IdCompanyFk == user.IdCompanyFk
// && x.IdReferenceFk == item.IdItem
// && x.FileType == FileType.CodeTableItem)
// .ToList();
}
if (partner == null)
{
var sloCountry = _context.CodeTableCountries.FirstOrDefault(x => x.Code == "SI");
partner = new CodeTablePartner();
if (sloCountry != null)
partner.IdCountryFk = sloCountry.IdCountry;
partner.Active = true;
//TODO kljukice
//partner.CodeTableItemType = (CodeTableItemType)codeTableItemType;
}
return Partial("AddEditPartnerModal", new AddEditCodeTablePartner
{
Partner = partner,
Edit = edit,
IdCodeTablePartner = idCodeTablePartner,
Countries = countries
//Files = files,
});
}
public IActionResult OnPostCodeTablePartner(bool edit, CodeTablePartner partnerData)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
if (edit)
{
var partner = _context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdPartner == partnerData.IdPartner);
if (partner != null)
{
partner.Title = partnerData.Title;
partner.IdCountryFk = partnerData.IdCountryFk;
partner.City = partnerData.City;
partner.PostNumber = partnerData.PostNumber;
partner.Post = partnerData.Post;
partner.Street = partnerData.Street;
partner.TaxNumber = partnerData.TaxNumber;
partner.RegistrationNumber = partnerData.RegistrationNumber;
partner.Buyer = partnerData.Buyer;
partner.Supplier = partnerData.Supplier;
partner.Active = partnerData.Active;
partner.Email = partnerData.Email;
_context.SaveChanges();
}
else
{
successful = false;
error = $"Codetable partner with ID: {partnerData.IdPartner} not found";
}
}
else
{
var partner = new CodeTablePartner
{
Title = partnerData.Title,
IdCountryFk = partnerData.IdCountryFk,
City = partnerData.City,
PostNumber = partnerData.PostNumber,
Post = partnerData.Post,
Street = partnerData.Street,
Buyer = partnerData.Buyer,
Supplier = partnerData.Supplier,
Active = partnerData.Active,
TaxNumber = partnerData.TaxNumber,
RegistrationNumber = partnerData.RegistrationNumber,
Email = partnerData.Email
};
_context.CodeTablePartners.Add(partner);
_context.SaveChanges();
partnerData.IdPartner = partner.IdPartner;
}
return new JsonResult(new { idCodeTablePartner = partnerData.IdPartner, error = error, successful = successful });
}
public IActionResult OnDeleteCodeTableItem(int idCodeTablePartner)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
var partner = _context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdPartner == idCodeTablePartner);
if (partner != null)
{
_context.CodeTablePartners.Remove(partner);
_context.SaveChanges();
}
else
{
successful = false;
error = $"Codetable partner with ID: {idCodeTablePartner} not found";
}
return new JsonResult(new { idCodeTableItem = idCodeTablePartner, error = error, successful = successful });
}
public IActionResult OnGetCodeTablePartner(int idCodeTablePartner)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
var partnerInUse = false;
var partner = _context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.Include(x => x.PartnerTransportLoadingOrder)
.Include(x => x.PartnerTransportLoadingOrderLoad)
.Include(x => x.PartnerTransportLoadingOrderUnload)
.Include(x => x.Invoice)
.FirstOrDefault(x => x.IdPartner == idCodeTablePartner);
if (partner == null)
{
successful = false;
error = $"Codetable partner with ID: {idCodeTablePartner} not found";
}
else
{
partnerInUse = partner.PartnerTransportLoadingOrder.Count > 0
|| partner.PartnerTransportLoadingOrderLoad.Count > 0
|| partner.PartnerTransportLoadingOrderUnload.Count > 0
|| partner.Invoice.Count > 0;
partner.PartnerTransportLoadingOrder = null;
partner.PartnerTransportLoadingOrderLoad = null;
partner.PartnerTransportLoadingOrderUnload = null;
partner.Invoice = null;
}
return new JsonResult(new { partner, error, successful, partnerInUse });
}
} }
} }

View File

@@ -30,6 +30,7 @@
<div class="col-4"> <div class="col-4">
<div asp-validation-summary="ModelOnly" class="text-danger"></div> <div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="@ViewData["Edit"]" name="type"/> <input type="hidden" asp-for="@ViewData["Edit"]" name="type"/>
<input type="hidden" asp-for="Vehicle.IdVehicle"/>
<input type="hidden" asp-for="Vehicle.IdCompanyFk"/> <input type="hidden" asp-for="Vehicle.IdCompanyFk"/>
<div class="form-group"> <div class="form-group">
<label asp-for="Vehicle.Title" class="control-label"></label> <label asp-for="Vehicle.Title" class="control-label"></label>

View File

@@ -69,7 +69,7 @@
@Html.DisplayFor(modelItem => item.Active) @Html.DisplayFor(modelItem => item.Active)
</td> </td>
<td> <td>
<a class="btn btn-xs icon-btn btn-outline-secondary borderless" asp-page="Edit" asp-route-id="true" asp-route-id="@item.IdVehicle" data-toggle="tooltip" data-placement="top" title="Urejanje" data-state="secondary"><i class="fas fa-pencil-alt"></i></a> <a class="btn btn-xs icon-btn btn-outline-secondary borderless" asp-page="CreateEdit" asp-route-edit="true" asp-route-id="@item.IdVehicle" data-toggle="tooltip" data-placement="top" title="Urejanje" data-state="secondary"><i class="fas fa-pencil-alt"></i></a>
<a class="btn btn-xs icon-btn btn-outline-danger borderless" data-state="danger" href='javascript:;' onclick="deleteVehicle(this)"><i class="fas fa-times"></i></a> <a class="btn btn-xs icon-btn btn-outline-danger borderless" data-state="danger" href='javascript:;' onclick="deleteVehicle(this)"><i class="fas fa-times"></i></a>
</td> </td>
</tr> </tr>

View File

@@ -41,7 +41,7 @@
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane fade show active" id="item-basic"> <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="handleEditors()"> <form method="post" data-ajax="true" data-ajax-method="post" asp-page-handler="order" data-ajax-complete="orderPostCompleted" onsubmit="beforeOrderPost()">
<div class="card-body"> <div class="card-body">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder"/> <input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder"/>
<input type="hidden" asp-for="TransportLoadingOrder.IdCompanyFk"/> <input type="hidden" asp-for="TransportLoadingOrder.IdCompanyFk"/>
@@ -51,10 +51,15 @@
<div class="col-6"> <div class="col-6">
<div class="form-group"> <div class="form-group">
<label asp-for="TransportLoadingOrder.IdPartnerFk" class="form-label"></label> <label asp-for="TransportLoadingOrder.IdPartnerFk" class="form-label"></label>
<select asp-for="TransportLoadingOrder.IdPartnerFk" class="form-control select2" asp-items="ViewBag.IdPartnerFk"></select> <select asp-for="TransportLoadingOrder.IdPartnerFk" class="form-control select2" asp-items="ViewBag.IdPartnerFk"></select>
</div> </div>
</div> </div>
<div class="col-6 text-right"> <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> <label class="form-label">Nakladalni nalog</label>
<br/> <br/>
<h4> <h4>
@@ -89,12 +94,8 @@
</div> </div>
<div class="col-4"> <div class="col-4">
<div class="form-group"> <div class="form-group">
<label asp-for="TransportLoadingOrder.IdVehicleFk" class="form-label"></label>
<select asp-for="TransportLoadingOrder.IdVehicleFk" class="form-control select2" asp-items="ViewBag.IdVehicleFk"></select>
<span asp-validation-for="TransportLoadingOrder.IdVehicleFk" class="text-danger"></span>
<label asp-for="TransportLoadingOrder.VehicleText" class="form-label"></label> <label asp-for="TransportLoadingOrder.VehicleText" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.VehicleText" class="form-control"/> <input autocomplete="off" asp-for="TransportLoadingOrder.VehicleText" class="form-control vehicle-text" />
<span asp-validation-for="TransportLoadingOrder.VehicleText" class="text-danger"></span> <span asp-validation-for="TransportLoadingOrder.VehicleText" class="text-danger"></span>
</div> </div>
</div> </div>
@@ -321,15 +322,39 @@
$(document).ready(function () { $(document).ready(function () {
$('.select2').select2(); $('.select2').select2();
$('.select2-vehicle').select2({
allowClear: true,
placeholder: "Izberi vozilo"
}).on('change', function() {
if ($(".select2-vehicle").val() !== '') {
$('.vehicle-text').val('');
}
});
if ($('.select2-vehicle').val() === '') {
$('.select2-vehicle').val(null);
}
editorPreText = new Quill('#editor-pretext', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' }); 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' }); 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' }); editorCargoDescription = new Quill('#editor-cargodescription', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' });
loadPosition(); loadPosition();
}); });
function beforeOrderPost() {
if ($('.select2-vehicle').val() === '') {
$('.select2-vehicle').val(null);
}
handleEditors();
}
orderPostCompleted = function (xhr) { orderPostCompleted = function (xhr) {
laddaSaveOrder.stop(); laddaSaveOrder.stop();
location.replace('AddEdit?Id=' + xhr.responseJSON.id); if (xhr.responseJSON.successful) {
location.replace('AddEdit?Id=' + xhr.responseJSON.id);
} else {
alert(xhr.responseJSON.error);
}
}; };
</script> </script>
} }

View File

@@ -15,6 +15,7 @@ using EveryThing.Models;
using EveryThing.Models.Transport; using EveryThing.Models.Transport;
using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml.Spreadsheet;
using EveryThing.Models.CodeTable; using EveryThing.Models.CodeTable;
using NuGet.Packaging;
namespace EveryThing.Pages.TransportLoadingOrder namespace EveryThing.Pages.TransportLoadingOrder
{ {
@@ -36,12 +37,15 @@ namespace EveryThing.Pages.TransportLoadingOrder
[BindProperty] [BindProperty]
public TransportLoadingOrderLoadUnload TransportLoadingOrderLoadUnload { get; set; } public TransportLoadingOrderLoadUnload TransportLoadingOrderLoadUnload { get; set; }
[BindProperty]
public List<SelectListItem> Vehicles { get; set; }
public async Task<IActionResult> OnGetAsync(int? id) public async Task<IActionResult> OnGetAsync(int? id)
{ {
var user = _userManager.GetUserAsync(User).Result; var user = _userManager.GetUserAsync(User).Result;
ViewData["IdPartnerFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title"); ViewData["IdPartnerFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title");
ViewData["IdVehicleFk"] = new SelectList(_context.Vehicles.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdVehicle", "RegistrationNumber"); SetVehiclesBag(user.IdCompanyFk);
ViewData["IdLoadingFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title"); ViewData["IdLoadingFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title");
ViewData["IdUnloadingFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title"); ViewData["IdUnloadingFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title");
ViewData["States"] = new SelectList(Enum.GetValues(typeof(Models.Transport.TransportLoadingOrder.TransportLoadingOrderState)) ViewData["States"] = new SelectList(Enum.GetValues(typeof(Models.Transport.TransportLoadingOrder.TransportLoadingOrderState))
@@ -85,15 +89,19 @@ namespace EveryThing.Pages.TransportLoadingOrder
public async Task<IActionResult> OnPostOrderAsync() public async Task<IActionResult> OnPostOrderAsync()
{ {
System.Diagnostics.Debug.WriteLine("OnPostOrderAsync");
var user = _userManager.GetUserAsync(User).Result; var user = _userManager.GetUserAsync(User).Result;
if (!ModelState.IsValid) if (!ModelState.IsValid)
{ {
ViewData["IdPartnerFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title"); System.Diagnostics.Debug.WriteLine("OnPostOrderAsync:Invalid");
ViewData["IdVehicleFk"] = new SelectList(_context.Vehicles.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdVehicle", "RegistrationNumber"); //ViewData["IdPartnerFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title");
return Page(); //SetVehiclesBag(user.IdCompanyFk);
return new JsonResult(new { successful = false, error = string.Join(", ", ModelState.Values.Where(x => x.Errors.Any()).Select(x=> string.Join(", ", x.Errors.Select(y => y.ErrorMessage)))) });
}
if (TransportLoadingOrder.IdVehicleFk != null)
{
TransportLoadingOrder.VehicleText = "";
} }
TransportLoadingOrder.PostText = TransportLoadingOrder.PostText.Replace("<div><br></div>", ""); TransportLoadingOrder.PostText = TransportLoadingOrder.PostText.Replace("<div><br></div>", "");
@@ -121,7 +129,7 @@ namespace EveryThing.Pages.TransportLoadingOrder
TransportLoadingOrderLoadUnload = new TransportLoadingOrderLoadUnload(); TransportLoadingOrderLoadUnload = new TransportLoadingOrderLoadUnload();
return Page(); return new JsonResult(new { successful = true, id = TransportLoadingOrder.IdTransportLoadingOrder });
} }
// OrderNumber and OrderYear // OrderNumber and OrderYear
@@ -136,7 +144,7 @@ namespace EveryThing.Pages.TransportLoadingOrder
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
return new JsonResult(new { id = TransportLoadingOrder .IdTransportLoadingOrder}); return new JsonResult(new { successful = true, id = TransportLoadingOrder .IdTransportLoadingOrder});
} }
public async Task<IActionResult> OnPostPositionAddAsync() public async Task<IActionResult> OnPostPositionAddAsync()
@@ -200,5 +208,15 @@ namespace EveryThing.Pages.TransportLoadingOrder
{ {
return _context.TransportLoadingOrders.Any(e => e.IdTransportLoadingOrder == id); return _context.TransportLoadingOrders.Any(e => e.IdTransportLoadingOrder == id);
} }
private void SetVehiclesBag(int idCompany)
{
Vehicles = new List<SelectListItem>
{
new ("Izberi vozilo", "")
};
Vehicles.AddRange(_context.Vehicles.Where(x => x.IdCompanyFk == idCompany).Select(x => new SelectListItem(x.DisplayName, x.IdVehicle.ToString())));
//Vehicles = new SelectList(tmpList, "Text", "Value");
}
} }
} }

View File

@@ -0,0 +1,214 @@
//ce jamra da ne najde post je treba dati @Html.AntiForgeryToken() v page
function codeTablePartnerAddEdit(placeholderSelector, edit, idCodeTablePartner, onAddEdit, onCancel, codeTablePartnerType){
if (isNaN(codeTablePartnerType)) {
codeTablePartnerType = 0;
}
$.blockUI();
$.ajax({
type: "GET",
// beforeSend: function(xhr) {
// xhr.setRequestHeader("XSRF-TOKEN",
// $('input:hidden[name="__RequestVerificationToken"]').val());
// },
url: "/CodeTablePartners/Index/?handler=CodeTablePartnerModal",
data: { edit: edit, idCodeTablePartner: edit ? idCodeTablePartner : -1, codeTablePartnerType },
success: function(data) {
$.unblockUI();
$(placeholderSelector).html(data);
if (edit){
$('#modalAddEditCodeTablePartnerTitle').html(`Urejanje partnerja: ${$('#inpModalAddEditCodeTablePartnerTitle').val()}`);
//$('#btnModalAddEditCodeTablePartnerAddFile').css('display', '');
$('#btnModalAddEditCodeTablePartnerConfirm').html('Shrani');
} else {
$('#modalAddEditCodeTablePartnerTitle').html('Dodajanje novega partnerja');
//$('#btnModalAddEditCodeTablePartnerAddFile').css('display', 'none');
$('#btnModalAddEditCodeTablePartnerConfirm').html('Dodaj');
}
$('#btnModalAddEditCodeTablePartnerConfirm').off();
$('#btnModalAddEditCodeTablePartnerCancel').off();
//Save to db
$('#btnModalAddEditCodeTablePartnerConfirm').on('click', () =>{
let title = $('#inpModalAddEditCodeTablePartnerTitle').val();
let country = parseInt($('#selModalAddEditCodeTablePartnerCountry').val());
let city = $('#inpModalAddEditCodeTablePartnerCity').val();
let street = $('#inpModalAddEditCodeTablePartnerStreet').val();
let houseNumber = $('#inpModalAddEditCodeTablePartnerHouseNumber').val();
let postNumber = $('#inpModalAddEditCodeTablePartnerPostNumber').val();
let post = $('#inpModalAddEditCodeTablePartnerPost').val();
let taxNumber = $('#inpModalAddEditCodeTablePartnerTaxNumber').val();
let registrationNumber = $('#inpModalAddEditCodeTablePartnerRegistrationNumber').val();
let email = $('#inpModalAddEditCodeTablePartnerEmail').val();
let buyer = $('#inpModalAddEditCodeTablePartnerBuyer').is(':checked');
let supplier = $('#inpModalAddEditCodeTablePartnerSupplier').is(':checked');
let active = $('#inpModalAddEditCodeTablePartnerActive').is(':checked');
let edit = $('#inpModalAddEditCodeTablePartnerEdit').val() === 'true';
let idCodeTablePartner = parseInt($('#inpModalAddEditCodeTablePartnerIdCodeTablePartner').val());
if (title === '' || title === null){
Swal.fire('Zahtevano polje naziv!');
return;
}
// if (description === '' || description === null){
// Swal.fire('Zahtevano polje naziv!');
// return;
// }
$.blockUI();
$.ajax({
type: "POST",
beforeSend: function(xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
url: "/CodeTablePartners/Index/?handler=CodeTablePartner",
data: {
edit,
partnerData : {
title,
IdCountryFk: country,
city,
street,
houseNumber,
postNumber,
post,
taxNumber,
registrationNumber,
email,
buyer,
supplier,
active,
idPartner: idCodeTablePartner
}
},
success: function(data) {
$.unblockUI();
if (data.successful){
$("#divModalAddEditCodeTablePartner").modal('hide');
if (onAddEdit != null){
onAddEdit(data.idCodeTablePartner);
}
} else {
Swal.fire('Napaka pri dodajanju/posodabljanju',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
});
//Cancel
$('#btnModalAddEditCodeTablePartnerCancel').on('click', () =>{
$("#divModalAddEditCodeTablePartner").modal('hide');
if (onCancel != null){
onCancel();
}
});
$("#divModalAddEditCodeTablePartner").modal('show');
$('.select2-partner-add-edit').select2({
dropdownParent: $("#divModalAddEditCodeTablePartner")
});
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.responseText);
$.unblockUI();
}
});
}
function codeTablePartnerDelete(idCodeTablePartner, onDelete, onCancel){
$.blockUI();
$.ajax({
type: "GET",
url: "/CodeTablePartners/Index/?handler=CodeTablePartner",
data: {
idCodeTablePartner
},
success: function(data) {
$.unblockUI();
if (data.successful){
if (data.partnerInUse){
Swal.fire('Partner je v uporabi!',
'Brisanje ni možno!',
'warning');
return;
}
Swal.fire({
title: `Izbrišem partnerja ${data.partner.title}?`,
text: "Tega dejanja ni možno razveljaviti!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Da, izbriši!',
cancelButtonText: 'Prekliči!'
}).then((result) => {
if (result.isConfirmed) {
$.blockUI();
$.ajax({
type: "DELETE",
beforeSend: function(xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
url: "/CodeTablePartners/Index/?handler=CodeTablePartner",
data: {
idCodeTablePartner
},
success: function(data) {
$.unblockUI();
if (data.successful){
if (onDelete != null){
onDelete(data.idCodeTablePartner);
}
} else {
Swal.fire('Napaka pri brisanju partnerja',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
} else{
if (onCancel != null){
onCancel();
}
}
});
} else {
Swal.fire('Napaka pri branju partnerja',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
}
function codeTablePartnerDeleteFile(element) {
let row = $(element).parent();
let idFile = parseInt(row.attr('data-idfile'));
fileDelete(idFile, (idFile) => {
row.remove();
});
}