Compare commits

..

7 Commits

Author SHA1 Message Date
David Štaleker
0772f64fae Gumb tiskanje
Popravljeno brisanje pozicij
2023-07-24 09:30:12 +02:00
David Štaleker
dcc0fde1ba hitro dodajanje vozila 2023-07-24 09:11:14 +02:00
David Štaleker
facfb3a726 modal partnerji in dodajanje pri transport plan 2023-07-23 21:20:29 +02:00
David Štaleker
41639b3354 partnerji na modal 2023-07-03 16:23:30 +02:00
David Štaleker
7e7fecc59f partnerji na modal 2023-07-03 16:23:10 +02:00
David Štaleker
c23c81e288 a 2023-07-02 20:53:16 +02:00
David Štaleker
625b013b67 transport loading order status in brisanje 2023-06-26 08:12:25 +02:00
28 changed files with 6223 additions and 208 deletions

View File

@@ -3,7 +3,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
namespace EveryThing.Classess
namespace EveryThing.Classes
{
public static class Global
{
@@ -29,5 +29,13 @@ namespace EveryThing.Classess
return titleValue.ToList();
}
public static TAttribute GetAttribute<TAttribute>(Enum value)
where TAttribute : Attribute
{
var enumType = value.GetType();
var name = Enum.GetName(enumType, value);
return enumType.GetField(name)?.GetCustomAttributes(false).OfType<TAttribute>().SingleOrDefault();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EveryThing.Migrations
{
public partial class _3 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
name: "State",
table: "TransportLoadingOrders",
type: "int",
nullable: false,
defaultValue: 0);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "State",
table: "TransportLoadingOrders");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,37 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EveryThing.Migrations
{
public partial class _4 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "LoadingOrderLoadUnload",
table: "CodeTablePartners",
type: "tinyint(1)",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "Transporter",
table: "CodeTablePartners",
type: "tinyint(1)",
nullable: false,
defaultValue: false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "LoadingOrderLoadUnload",
table: "CodeTablePartners");
migrationBuilder.DropColumn(
name: "Transporter",
table: "CodeTablePartners");
}
}
}

View File

@@ -347,6 +347,9 @@ namespace EveryThing.Migrations
b.Property<int>("IdCountryFk")
.HasColumnType("int");
b.Property<bool>("LoadingOrderLoadUnload")
.HasColumnType("tinyint(1)");
b.Property<string>("Post")
.IsRequired()
.HasColumnType("longtext");
@@ -371,6 +374,9 @@ namespace EveryThing.Migrations
.IsRequired()
.HasColumnType("longtext");
b.Property<bool>("Transporter")
.HasColumnType("tinyint(1)");
b.HasKey("IdPartner");
b.HasIndex("IdCompanyFk");
@@ -833,6 +839,9 @@ namespace EveryThing.Migrations
b.Property<string>("PreText")
.HasColumnType("longtext");
b.Property<int>("State")
.HasColumnType("int");
b.Property<float>("Total")
.HasColumnType("float");

View File

@@ -68,6 +68,15 @@ namespace EveryThing.Models.CodeTable
[Display(Name = "Dobavitelj")]
public bool Supplier { get; set; } = false;
[Required]
[Display(Name = "Prevoznik")]
public bool Transporter { get; set; } = false;
[Required]
[Display(Name = "Naklad/Razklad")]
public bool LoadingOrderLoadUnload { get; set; } = false;
// ForeingKey
public CodeTableCountry Country { get; set; }
public CodeTableCompany Company { get; set; }

View File

@@ -11,6 +11,15 @@ namespace EveryThing.Models.Transport
{
public class TransportLoadingOrder
{
public enum TransportLoadingOrderState
{
[Display(Name = "Nov")]
New = 0,
[Display(Name = "Potrjen")]
Confirmed = 10,
[Display(Name = "Zaprt")]
Closed = 20
}
[System.ComponentModel.DataAnnotations.Key]
public int IdTransportLoadingOrder { get; set; }
@@ -61,6 +70,10 @@ namespace EveryThing.Models.Transport
[Display(Name = "Opomba")]
public string Note { get; set; }
[Required]
[Display(Name = "Status")]
public TransportLoadingOrderState State { get; set; } = TransportLoadingOrderState.New;
// ForeignKey
public CodeTableCompany Company { get; set; }
public Vehicle.Vehicle Vehicle { get; set; }

View File

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

View File

@@ -0,0 +1,129 @@
@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="inpModalAddEditCodeTablePartnerTransporter" class="form-check-input" asp-for="Partner.Transporter" /> @Html.DisplayNameFor(model => model.Partner.Transporter)
</label>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input id="inpModalAddEditCodeTablePartnerLoadingOrderLoadUnload" class="form-check-input" asp-for="Partner.LoadingOrderLoadUnload" /> @Html.DisplayNameFor(model => model.Partner.LoadingOrderLoadUnload)
</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";
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">
<span>
@@ -17,7 +18,7 @@
<form method="get">
<div class="btn-group">
<input class="form-control" type="text" name="searchString" value="@ViewData["SearchString"]" placeholder="Iskanje..." autocomplete="off">
<button type="submit" class="btn btn-secondary" aria-label="Osveži" title="Osveži">
<button id="btnSubmit" type="submit" class="btn btn-secondary" aria-label="Osveži" title="Osveži">
<i class="opacity-75 ion ion-md-refresh"></i>
</button>
<div class="btn-group" title="Columns">
@@ -69,7 +70,7 @@
<tbody>
@foreach (var item in Model.Partner)
{
<tr>
<tr data-idCodeTablePartner="@item.IdPartner">
<td>
@Html.DisplayFor(modelItem => item.Title)
@if (!item.Active)
@@ -91,7 +92,8 @@
@Html.DisplayFor(modelItem => item.Email)
</td>
<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>
</tr>
}
@@ -99,12 +101,40 @@
</table>
<div class="card-footer py-3 text-right">
<a asp-page="Create" class="btn btn-primary">Vnos partnerja</a>
<button type="button" class="btn btn-primary" onclick="addNewCodeTablePartner();">Vnos partnerja</button>
</div>
<div id="divModalCodetablePartnerAddEditPlaceholder"></div>
</div>
@Html.AntiForgeryToken()
@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>
$('[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>
}

View File

@@ -11,12 +11,26 @@ using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.CodeTable;
using Microsoft.AspNetCore.Authorization;
using System.Globalization;
using Microsoft.AspNetCore.Mvc.Rendering;
using DocumentFormat.OpenXml.Spreadsheet;
using JetBrains.Annotations;
namespace EveryThing.Pages.CodeTablePartners
{
[Authorize(Roles = "Administrator,InvoicingUser,ProjecThingUser,TransportThingUser")]
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 UserManager<IdentityApplicationUser> _userManager;
@@ -49,5 +63,202 @@ namespace EveryThing.Pages.CodeTablePartners
.ToList();
}
}
public IActionResult OnGetCodeTablePartnerModal([CanBeNull]string title, bool edit, int idCodeTablePartner, bool? buyer, bool? supplier, bool? transporter, bool? loadingUnloading)
{
//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;
if (title != null)
partner.Title = title;
if (buyer != null)
partner.Buyer = (bool)buyer;
if (supplier != null)
partner.Supplier = (bool)supplier;
if (transporter != null)
partner.Transporter = (bool)transporter;
if (loadingUnloading != null)
partner.LoadingOrderLoadUnload = (bool)loadingUnloading;
partner.Active = true;
}
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.Transporter = partnerData.Transporter;
partner.LoadingOrderLoadUnload = partnerData.LoadingOrderLoadUnload;
partner.Active = partnerData.Active;
partner.Email = partnerData.Email;
partner.HouseNumber = partnerData.HouseNumber;
_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,
Transporter = partnerData.Transporter,
LoadingOrderLoadUnload = partnerData.LoadingOrderLoadUnload,
Active = partnerData.Active,
TaxNumber = partnerData.TaxNumber,
RegistrationNumber = partnerData.RegistrationNumber,
Email = partnerData.Email,
HouseNumber = partnerData.HouseNumber,
IdCompanyFk = user.IdCompanyFk
};
_context.CodeTablePartners.Add(partner);
_context.SaveChanges();
partnerData.IdPartner = partner.IdPartner;
}
return new JsonResult(new { idCodeTablePartner = partnerData.IdPartner, error = error, successful = successful });
}
public IActionResult OnDeleteCodeTablePartner(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 });
}
public IActionResult OnGetCodeTablePartnersSelect(bool? buyers, bool? suppliers, bool? transporters, bool? loadingUnloadings)
{
var user = _userManager.GetUserAsync(User).Result;
var partners = _context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk
&& x.Active
&& (buyers == null || x.Buyer == buyers)
&& (suppliers == null || x.Supplier == suppliers)
&& (transporters == null || x.Transporter == transporters)
&& (loadingUnloadings == null || x.LoadingOrderLoadUnload == loadingUnloadings))
.OrderBy(x => x.Title);
return new JsonResult(new { partners = new SelectList(partners, "IdPartner", "Title") });
}
}
}

View File

@@ -15,7 +15,7 @@ using EveryThing.Data;
using EveryThing.Models;
using DocumentFormat.OpenXml.Spreadsheet;
using EveryThing.Models.CodeTable;
using EveryThing.Classess;
using EveryThing.Classes;
namespace EveryThing.Pages.CodeTablePrePostText

View File

@@ -0,0 +1,90 @@
@model EveryThing.Pages.CodeTableVehicles.IndexModel.AddEditCodeTableVehicle
<div class="modal" tabindex="-1" role="dialog" id="divModalAddEditCodeTableVehicle">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalAddEditCodeTableVehicleTitle">Dodajanje novega vozila</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="inpModalAddEditCodeTableVehicleIdCodeTableVehicle" type="hidden" asp-for="@Model.IdCodeTableVehicle" />
<input id="inpModalAddEditCodeTableVehicleEdit" type="hidden" asp-for="@Model.Edit" />
<div class="row">
<div class="col-4">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Vehicle.Title" class="control-label"></label>
<input id="inpModalAddEditCodeTableVehicleTitle" asp-for="Vehicle.Title" class="form-control" />
<span asp-validation-for="Vehicle.Title" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Vehicle.IdMakeFk" class="control-label"></label>
<select id="selModalAddEditCodeTableVehicleMake" asp-for="Vehicle.IdMakeFk" class="form-control" asp-items="Model.VehicleMakes"></select>
</div>
<div class="form-group">
<label asp-for="Vehicle.Model" class="control-label"></label>
<input id="inpModalAddEditCodeTableVehicleModel" asp-for="Vehicle.Model" class="form-control" />
</div>
<div class="form-group">
<label asp-for="Vehicle.RegistrationNumber" class="control-label"></label>
<input id="inpModalAddEditCodeTableVehicleRegistrationNumber" asp-for="Vehicle.RegistrationNumber" class="form-control" />
<span asp-validation-for="Vehicle.RegistrationNumber" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Vehicle.IdVehicleTypeFk" class="control-label"></label>
<select id="selModalAddEditCodeTableVehicleVehicleType" asp-for="Vehicle.IdVehicleTypeFk" class="form-control" asp-items="Model.VehicleTypes"></select>
<span asp-validation-for="Vehicle.IdVehicleTypeFk" class="text-danger"></span>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input id="inpModalAddEditCodeTableVehicleActive" class="form-check-input" asp-for="Vehicle.Active" /> @Html.DisplayNameFor(model => model.Vehicle.Active)
</label>
</div>
</div>
<div class="col-4">
<div class="form-group">
<label asp-for="Vehicle.Year" class="control-label"></label>
<input id="inpModalAddEditCodeTableVehicleYear" asp-for="Vehicle.Year" class="form-control" />
<span asp-validation-for="Vehicle.Year" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Vehicle.VinNumber" class="control-label"></label>
<input id="inpModalAddEditCodeTableVehicleVinNumber" asp-for="Vehicle.VinNumber" class="form-control" />
<span asp-validation-for="Vehicle.VinNumber" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Vehicle.EngineNumber" class="control-label"></label>
<input id="inpModalAddEditCodeTableVehicleEngineNumber" asp-for="Vehicle.EngineNumber" class="form-control" />
</div>
<div class="form-group">
<label asp-for="Vehicle.IdFuelTypeFk" class="control-label"></label>
<select id="selModalAddEditCodeTableVehicleFuelType" asp-for="Vehicle.IdFuelTypeFk" class="form-control" asp-items="Model.FuelTypes"></select>
</div>
<div class="form-group">
<label asp-for="Vehicle.VehicleMeterType" class="control-label"></label>
<select id="selModalAddEditCodeTableVehicleVehicleMeterType" asp-for="Vehicle.VehicleMeterType" class="form-control" asp-items="Html.GetEnumSelectList<Models.Vehicle.VehicleMeterType>()"></select>
<span asp-validation-for="Vehicle.VehicleMeterType" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Vehicle.IdDepartementFk" class="control-label"></label>
<select id="selModalAddEditCodeTableVehicleDepartment" asp-for="Vehicle.IdDepartementFk" class="form-control" asp-items="Model.Departments"></select>
</div>
</div>
<div class="col-4">
<label asp-for="Vehicle.Note" class="control-label"></label>
<textarea id="taModalAddEditCodeTableVehicleNote" asp-for="Vehicle.Note" class="form-control" style="resize:none; height: 455px;"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
@*<a id="btnModalAddEditCodeTableVehicleAddFile" asp-page="/Files/Upload" asp-route-idReferenceFk="@Model.IdCodeTableVehicle" asp-route-fileType="@Models.FileType.CodeTableVehicle" class="btn btn-primary pull-right">Priloži datoteko</a>*@
<button id="btnModalAddEditCodeTableVehicleConfirm" type="button" class="btn btn-primary">Shrani</button>
<button id="btnModalAddEditCodeTableVehicleCancel" type="button" class="btn btn-secondary">Prekliči</button>
</div>
</div>
</div>
</div>

View File

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

View File

@@ -50,6 +50,13 @@ namespace EveryThing.Pages.CodeTableVehicles
return NotFound();
}
}
else
{
Vehicle = new Vehicle
{
IdCompanyFk = user.IdCompanyFk
};
}
ViewData["VehicleType"] = new SelectList(_context.VehicleTypes
.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleType", "Title");

View File

@@ -17,7 +17,7 @@
<form method="get">
<div class="btn-group">
<input class="form-control" type="text" name="searchString" value="@ViewData["SearchString"]" placeholder="Iskanje..." autocomplete="off">
<button type="submit" class="btn btn-secondary" aria-label="Osveži" title="Osveži" asp-route-type="@ViewData["Type"]">
<button id="btnSubmit" type="submit" class="btn btn-secondary" aria-label="Osveži" title="Osveži" asp-route-type="@ViewData["Type"]">
<i class="opacity-75 ion ion-md-refresh"></i>
</button>
<div class="btn-group" title="Columns">
@@ -69,8 +69,8 @@
@Html.DisplayFor(modelItem => item.Active)
</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-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-secondary borderless" href="Javascript:;" onclick="editCodeTableVehicle(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="deleteCodeTableVehicle(this)"><i class="fas fa-times"></i></a>
</td>
</tr>
}
@@ -78,61 +78,39 @@
</table>
<div class="card-footer py-3 text-right">
<a asp-page="CreateEdit" asp-route-edit="false" class="btn btn-primary">Vnos novega</a>
<a href="Javascript:;" onclick="addNewCodeTableVehicle();" class="btn btn-primary">Vnos novega</a>
</div>
</div>
<div id="divModalCodetableVehicleAddEditPlaceholder"></div>
@Html.AntiForgeryToken()
@section Scripts {
<script src="~/vendor/libs/select2/select2.js" asp-append-version="true"></script>
<script src="~/js/codeTableVehicleHelper.js?v=1" asp-append-version="true"></script>
<script>
$('[data-toggle="tooltip"]').tooltip({ container: 'table' });
function deleteVehicle(element) {
let row = $(element).parent().parent();
let idInvoice = $(row).attr('data-idinvoice');
let invoiceNumber = $(row).attr('data-number');
Swal.fire({
title: `Izbrišem dokument ${invoiceNumber}?`,
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: "/Invoices/Index/?handler=Invoice",
data: {
idInvoice
},
success: function (data) {
$.unblockUI();
if (data.successful) {
$(row).remove();
} else {
console.log(data);
Swal.fire('Napaka pri brisanju dokumenta',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
function addNewCodeTableVehicle() {
codeTableVehicleAddEdit('#divModalCodetableVehicleAddEditPlaceholder', false, null, (idCodeTableItem) => {
document.getElementById('btnSubmit').click();
});
}
function editCodeTableVehicle(element) {
let idVehicle = parseInt($(element).parent().parent().attr('data-idvehicle'));
codeTableVehicleAddEdit('#divModalCodetableVehicleAddEditPlaceholder', true, idVehicle, (idVehicle) => {
document.getElementById('btnSubmit').click();
});
}
function deleteCodeTableVehicle(element) {
let row = $(element).parent().parent();
let idVehicle = parseInt(row.attr('data-idvehicle'));
codeTableVehicleDelete(idVehicle, (idVehicle) => {
row.remove();
});
}
</script>

View File

@@ -7,10 +7,13 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.CodeTable;
using EveryThing.Models.Vehicle;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using EveryThing.Models.Invoice;
using JetBrains.Annotations;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace EveryThing.Pages.CodeTableVehicles
{
@@ -20,6 +23,19 @@ namespace EveryThing.Pages.CodeTableVehicles
private readonly ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager;
public class AddEditCodeTableVehicle
{
public Vehicle Vehicle { get; set; }
public bool Edit { get; set; }
public int IdCodeTableVehicle { get; set; }
public SelectList FuelTypes { get; set; }
public SelectList Departments { get; set; }
public SelectList VehicleGroups { get; set; }
public SelectList VehicleMakes{ get; set; }
public SelectList VehicleTypes { get; set; }
//public IList<File> Files { get; set; }
}
public IndexModel(ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
{
_context = context;
@@ -47,5 +63,201 @@ namespace EveryThing.Pages.CodeTableVehicles
Vehicles = Vehicles.Where(s => s.Title.Contains(searchString)).ToList();
}
}
public IActionResult OnGetCodeTableVehicleModal([CanBeNull] string title, bool edit, int idCodeTableVehicle)
{
var user = _userManager.GetUserAsync(User).Result;
Vehicle vehicle = null;
if (edit)
{
vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
//files = _context.Files
// .Where(x => x.IdCompanyFk == user.IdCompanyFk
// && x.IdReferenceFk == item.IdItem
// && x.FileType == FileType.CodeTableItem)
// .ToList();
}
if (vehicle == null)
{
vehicle = new Vehicle();
if (title != null)
vehicle.Title = title;
vehicle.Active = true;
}
var departments = new SelectList(_context.CodeTableDepartements.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdDepartement", "Title");
var fuelTypes = new SelectList(_context.VehicleFuelTypes.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdVehicleFuelType", "Title");
var groups = new SelectList(_context.VehicleGroups.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleGroup", "Title");
var makes = new SelectList(_context.VehicleMakes.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleMake", "Title");
var types = new SelectList(_context.VehicleTypes.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleType", "Title");
return Partial("AddEditVehicleModal", new CodeTableVehicles.IndexModel.AddEditCodeTableVehicle
{
Vehicle = vehicle,
Edit = edit,
IdCodeTableVehicle = idCodeTableVehicle,
Departments = departments,
FuelTypes = fuelTypes,
VehicleGroups = groups,
VehicleMakes = makes,
VehicleTypes = types
//Files = files,
});
}
public IActionResult OnPostCodeTableVehicle(bool edit, Vehicle vehicleData)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
if (edit)
{
var vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdVehicle == vehicleData.IdVehicle);
if (vehicle != null)
{
vehicle.Title = vehicleData.Title;
vehicle.IdVehicleTypeFk = vehicleData.IdVehicleTypeFk;
vehicle.IdMakeFk = vehicleData.IdMakeFk;
vehicle.Model = vehicleData.Model;
vehicle.Year = vehicleData.Year;
vehicle.VinNumber = vehicleData.VinNumber;
vehicle.EngineNumber = vehicleData.EngineNumber;
vehicle.IdFuelTypeFk = vehicleData.IdFuelTypeFk;
vehicle.IdDepartementFk = vehicleData.IdDepartementFk;
vehicle.IdVehicleGroupFk = vehicleData.IdVehicleGroupFk;
vehicle.VehicleMeterType = vehicleData.VehicleMeterType;
vehicle.Note = vehicleData.Note;
vehicle.RegistrationNumber = vehicleData.RegistrationNumber;
vehicle.Active = vehicleData.Active;
_context.SaveChanges();
}
else
{
successful = false;
error = $"Codetable vehicle with ID: {vehicleData.IdVehicle} not found";
}
}
else
{
var vehicle = new Vehicle
{
IdCompanyFk = user.IdCompanyFk,
Title = vehicleData.Title,
IdVehicleTypeFk = vehicleData.IdVehicleTypeFk,
IdMakeFk = vehicleData.IdMakeFk,
Model = vehicleData.Model,
Year = vehicleData.Year,
VinNumber = vehicleData.VinNumber,
EngineNumber = vehicleData.EngineNumber,
IdFuelTypeFk = vehicleData.IdFuelTypeFk,
IdDepartementFk = vehicleData.IdDepartementFk,
IdVehicleGroupFk = vehicleData.IdVehicleGroupFk,
VehicleMeterType = vehicleData.VehicleMeterType,
Note = vehicleData.Note,
RegistrationNumber = vehicleData.RegistrationNumber,
Active = vehicleData.Active
};
_context.Vehicles.Add(vehicle);
_context.SaveChanges();
vehicleData.IdVehicle = vehicle.IdVehicle;
}
return new JsonResult(new { idCodeTableVehicle = vehicleData.IdVehicle, error = error, successful = successful });
}
public IActionResult OnDeleteCodeTableVehicle(int idCodeTableVehicle)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
var vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
if (vehicle != null)
{
_context.Vehicles.Remove(vehicle);
_context.SaveChanges();
}
else
{
successful = false;
error = $"Codetable vehicle with ID: {idCodeTableVehicle} not found";
}
return new JsonResult(new { idCodeTableItem = idCodeTableVehicle, error = error, successful = successful });
}
public IActionResult OnGetCodeTableVehicle(int idCodeTableVehicle)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
var vehicleInUse = false;
var vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.Include(x => x.VehicleVehicleFueling)
.Include(x => x.VehicleVehicleIncident)
.Include(x => x.VehicleVehicleIssue)
.Include(x => x.VehicleNote)
.Include(x => x.VehicleVehicleDriver)
.Include(x => x.VehicleVehicleMeterReading)
.Include(x => x.VehicleVehicleDrive)
.Include(x => x.VehicleTransportLoadingOrder)
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
if (vehicle == null)
{
successful = false;
error = $"Codetable vehicle with ID: {idCodeTableVehicle} not found";
}
else
{
vehicleInUse = vehicle.VehicleVehicleFueling.Count > 0
|| vehicle.VehicleVehicleIncident.Count > 0
|| vehicle.VehicleVehicleIssue.Count > 0
|| vehicle.VehicleVehicleDriver.Count > 0
|| vehicle.VehicleVehicleMeterReading.Count > 0
|| vehicle.VehicleVehicleDrive.Count > 0
|| vehicle.VehicleTransportLoadingOrder.Count > 0
|| vehicle.VehicleNote.Count > 0;
vehicle.VehicleVehicleFueling = null;
vehicle.VehicleVehicleIncident = null;
vehicle.VehicleVehicleIssue = null;
vehicle.VehicleNote = null;
vehicle.VehicleVehicleDriver = null;
vehicle.VehicleVehicleMeterReading = null;
vehicle.VehicleVehicleDrive = null;
vehicle.VehicleTransportLoadingOrder = null;
}
return new JsonResult(new { vehicle, error, successful, vehicleInUse });
}
public IActionResult OnGetCodeTableVehiclesSelect()
{
var user = _userManager.GetUserAsync(User).Result;
var vehicles = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk
&& x.Active)
.OrderBy(x => x.Title);
return new JsonResult(new { vehicles = new SelectList(vehicles, "IdVehicle", "Title") });
}
}
}

View File

@@ -75,8 +75,8 @@ namespace EveryThing.Pages.Invoices
ViewData["States"] = new SelectList(Enum.GetValues(typeof(Models.Invoice.Invoice.InvoiceState))
.Cast<Models.Invoice.Invoice.InvoiceState>()
.Where(x => GetAttribute<Models.Invoice.Invoice.InvoiceStateAttribute>(x).AllowedTypes.Split(',').Contains(((int)Invoice.Type).ToString()))
.Select(x => new { Name = GetAttribute<DisplayAttribute>(x).Name, Value = x.ToString()})
.Where(x => Classes.Global.GetAttribute<Models.Invoice.Invoice.InvoiceStateAttribute>(x).AllowedTypes.Split(',').Contains(((int)Invoice.Type).ToString()))
.Select(x => new { Name = Classes.Global.GetAttribute<DisplayAttribute>(x).Name, Value = x.ToString()})
.ToList(), "Value", "Name");
if (!string.IsNullOrEmpty(Request.Headers["Referer"]))
@@ -87,13 +87,7 @@ namespace EveryThing.Pages.Invoices
return Page();
}
public static TAttribute GetAttribute<TAttribute>(Enum value)
where TAttribute : Attribute
{
var enumType = value.GetType();
var name = Enum.GetName(enumType, value);
return enumType.GetField(name).GetCustomAttributes(false).OfType<TAttribute>().SingleOrDefault();
}
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://aka.ms/RazorPagesCRUD.

View File

@@ -41,7 +41,7 @@
<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="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">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder"/>
<input type="hidden" asp-for="TransportLoadingOrder.IdCompanyFk"/>
@@ -51,10 +51,17 @@
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrder.IdPartnerFk" class="form-label"></label>
<select asp-for="TransportLoadingOrder.IdPartnerFk" class="form-control select2" asp-items="ViewBag.IdPartnerFk"></select>
<div class="input-group">
<select id="selTransporter" asp-for="TransportLoadingOrder.IdPartnerFk" class="form-control select2-transporter" asp-items="ViewBag.IdPartnerFk"></select>
</div>
</div>
<div class="col-6 text-right">
</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>
@@ -73,22 +80,28 @@
<span asp-validation-for="TransportLoadingOrder.OrderCity" class="text-danger"></span>
</div>
</div>
<div class="col-3">
<div class="col-2">
<div class="form-group">
<label asp-for="TransportLoadingOrder.OrderDate" class="form-label"></label>
@*@Html.TextBoxFor(m => m.TransportLoadingOrder.OrderDate, "{0:yyyy-MM-dd}", new { @class = "form-control", type = "date" })*@
<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-3">
<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"/>
<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-3">
<div class="col-2">
<div class="form-group">
<label asp-for="TransportLoadingOrder.Total" class="form-label"></label>
<div class="input-group">
@@ -124,8 +137,12 @@
</div>
</div>
<div class="card-footer py-3 text-right">
@if (Model.TransportLoadingOrder.IdTransportLoadingOrder > 0)
{
<a class="btn icon-btn btn-secondary" asp-page="Print" asp-route-id="@Model.TransportLoadingOrder.IdTransportLoadingOrder" data-toggle="tooltip" data-placement="top" title="Tiskanje" data-state="primary"><i class="ion ion-md-print"></i></a>
}
<button id="saveOrder" type="submit" class="btn btn-primary">Shrani nalog</button>
<a asp-page="Index" class="btn btn-default">Prekliči</a>
<a asp-page="Index" class="btn btn-default">Nazaj</a>
</div>
</form>
</div>
@@ -140,8 +157,7 @@
<div class="col-12">
<div class="form-group">
<label class="form-label">Naklad</label>
<select asp-for="TransportLoadingOrderLoadUnload.IdLoadingFk" class="form-control select2" asp-items="ViewBag.IdLoadingFk">
<option value="">Izberite naklad ali vnesite naslov naklada</option>
<select id="selLoading" asp-for="TransportLoadingOrderLoadUnload.IdLoadingFk" class="form-control select2-loading" asp-items="ViewBag.IdLoadingFk">
</select>
</div>
</div>
@@ -150,7 +166,7 @@
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingText" class="form-label"></label>
<textarea rows="3" asp-for="TransportLoadingOrderLoadUnload.LoadingText" class="form-control"></textarea>
<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>
@@ -193,8 +209,7 @@
<div class="col-12">
<div class="form-group">
<label class="form-label">Razklad</label>
<select asp-for="TransportLoadingOrderLoadUnload.IdUnloadingFk" class="form-control select2" asp-items="ViewBag.IdUnloadingFk">
<option value="">Izberite razklad ali vnesite naslov razklada</option>
<select id="selUnloading" asp-for="TransportLoadingOrderLoadUnload.IdUnloadingFk" class="form-control select2-unloading" asp-items="ViewBag.IdUnloadingFk">
</select>
</div>
</div>
@@ -203,7 +218,7 @@
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingText" class="form-label"></label>
<textarea rows="3" asp-for="TransportLoadingOrderLoadUnload.UnloadingText" class="form-control"></textarea>
<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>
@@ -268,15 +283,20 @@
</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');
@@ -310,16 +330,214 @@
}
$(document).ready(function () {
$('.select2').select2();
$('.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>
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -14,6 +15,7 @@ using EveryThing.Models;
using EveryThing.Models.Transport;
using DocumentFormat.OpenXml.Spreadsheet;
using EveryThing.Models.CodeTable;
using NuGet.Packaging;
namespace EveryThing.Pages.TransportLoadingOrder
{
@@ -35,14 +37,25 @@ namespace EveryThing.Pages.TransportLoadingOrder
[BindProperty]
public TransportLoadingOrderLoadUnload TransportLoadingOrderLoadUnload { get; set; }
[BindProperty]
public List<SelectListItem> Vehicles { get; set; }
public async Task<IActionResult> OnGetAsync(int? id)
{
var user = _userManager.GetUserAsync(User).Result;
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");
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["IdPartnerFk"] = new SelectList(_context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active && x.Transporter), "IdPartner", "Title");
SetVehiclesBag(user.IdCompanyFk);
ViewData["IdLoadingFk"] = new SelectList(_context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active && x.LoadingOrderLoadUnload), "IdPartner", "Title");
ViewData["IdUnloadingFk"] = new SelectList(_context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active && x.LoadingOrderLoadUnload), "IdPartner", "Title");
ViewData["States"] = new SelectList(Enum.GetValues(typeof(Models.Transport.TransportLoadingOrder.TransportLoadingOrderState))
.Cast<Models.Transport.TransportLoadingOrder.TransportLoadingOrderState>()
.Select(x => new { Name = Classes.Global.GetAttribute<DisplayAttribute>(x).Name, Value = x.ToString() })
.ToList(), "Value", "Name");
if (id == null)
{
@@ -54,7 +67,7 @@ namespace EveryThing.Pages.TransportLoadingOrder
TransportLoadingOrder = new Models.Transport.TransportLoadingOrder
{
OrderCity = _context.CodeTableCompanies.Single(x => x.IdCompany == user.IdCompanyFk).City,
OrderDate = DateTime.Now,
OrderDate = DateTime.Now.Date,
PreText = string.Join("<br/>", prePostTexts.Where(x => x.Type == CodeTablePrePostTextLink.TypeEnum.PreText).Select(x => x.CodeTablePrePostText.Content)),
PostText = string.Join("<br/>", prePostTexts.Where(x => x.Type == CodeTablePrePostTextLink.TypeEnum.PostText).Select(x => x.CodeTablePrePostText.Content))
};
@@ -80,15 +93,19 @@ namespace EveryThing.Pages.TransportLoadingOrder
public async Task<IActionResult> OnPostOrderAsync()
{
System.Diagnostics.Debug.WriteLine("OnPostOrderAsync");
var user = _userManager.GetUserAsync(User).Result;
if (!ModelState.IsValid)
{
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");
return Page();
System.Diagnostics.Debug.WriteLine("OnPostOrderAsync:Invalid");
//ViewData["IdPartnerFk"] = new SelectList(_context.CodeTablePartners.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdPartner", "Title");
//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>", "");
@@ -116,12 +133,12 @@ namespace EveryThing.Pages.TransportLoadingOrder
TransportLoadingOrderLoadUnload = new TransportLoadingOrderLoadUnload();
return Page();
return new JsonResult(new { successful = true, id = TransportLoadingOrder.IdTransportLoadingOrder });
}
// OrderNumber and OrderYear
var orderNumber = _context.TransportLoadingOrders.Count(x => x.IdCompanyFk == user.IdCompanyFk && x.OrderYear == DateTime.Now.Year) + 1;
var orderNumber = _context.TransportLoadingOrders.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.OrderYear == DateTime.Now.Year).Max(x => x.OrderNumber) + 1;
TransportLoadingOrder.IdCompanyFk = user.IdCompanyFk;
TransportLoadingOrder.OrderYear = DateTime.Now.Year;
@@ -131,7 +148,7 @@ namespace EveryThing.Pages.TransportLoadingOrder
await _context.SaveChangesAsync();
return new JsonResult(new { id = TransportLoadingOrder .IdTransportLoadingOrder});
return new JsonResult(new { successful = true, id = TransportLoadingOrder .IdTransportLoadingOrder});
}
public async Task<IActionResult> OnPostPositionAddAsync()
@@ -195,5 +212,29 @@ namespace EveryThing.Pages.TransportLoadingOrder
{
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");
}
public IActionResult OnGetLoadingUnloadingText(int idPartner)
{
var user = _userManager.GetUserAsync(User).Result;
var partner = _context.CodeTablePartners
.Include(x => x.Country)
.FirstOrDefault(x => x.IdCompanyFk == user.IdCompanyFk
&& x.IdPartner == idPartner);
return partner == null
? new JsonResult(new { successful = false, error = $"Partner with ID: {idPartner} not exists!" })
: new JsonResult(new { successful = true, text = $"{partner.Street} {partner.HouseNumber}\n{partner.PostNumber} {partner.Post}\n{partner.Country.Title}" });
}
}
}

View File

@@ -41,17 +41,20 @@
Datum naloga
</th>
<th>
Partner
Prevoznik
</th>
<th style="width: 80px;"></th>
<th style="width: 100px">
Status
</th>
<th style="width: 110px;"></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.TransportLoadingOrder)
{
<tr>
<tr data-idloadingorder="@item.IdTransportLoadingOrder" data-number="@item.OrderNumberDisplay">
<td>
@Html.DisplayFor(modelItem => item.OrderYear)-@Html.DisplayFor(modelItem => item.OrderNumber)
@Html.DisplayFor(modelItem => item.OrderNumberDisplay)
</td>
<td>
@Html.DisplayFor(modelItem => item.OrderDate)
@@ -59,9 +62,13 @@
<td>
@Html.DisplayFor(modelItem => item.Partner.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.State)
</td>
<td class="text-right">
<a class="btn btn-xs icon-btn btn-outline-primary borderless" asp-page="Print" asp-route-id="@item.IdTransportLoadingOrder" data-toggle="tooltip" data-placement="top" title="Tiskanje" data-state="primary"><i class="ion ion-md-print"></i></a>
<a class="btn btn-xs icon-btn btn-outline-secondary borderless" asp-page="AddEdit" asp-route-id="@item.IdTransportLoadingOrder" 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="deleteTransportLoadingOrder(this)"><i class="fas fa-times"></i></a>
</td>
</tr>
}
@@ -72,9 +79,59 @@
<a asp-page="AddEdit" class="btn btn-primary">Vnos naloga</a>
</div>
</div>
@Html.AntiForgeryToken()
@section Scripts {
<script>
$('[data-toggle="tooltip"]').tooltip({container: 'table'});
function deleteTransportLoadingOrder(element) {
let row = $(element).parent().parent();
let idLoadingOrder = $(row).attr('data-idloadingorder');
let loadingOrderNumber = $(row).attr('data-number');
Swal.fire({
title: `Izbrišem dokument ${loadingOrderNumber}?`,
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: "/TransportLoadingOrder/Index/?handler=TransportLoadingOrder",
data: {
idLoadingOrder
},
success: function (data) {
$.unblockUI();
if (data.successful) {
$(row).remove();
} else {
console.log(data);
Swal.fire('Napaka pri brisanju dokumenta',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
}
});
}
</script>
}

View File

@@ -44,5 +44,34 @@ namespace EveryThing.Pages.TransportLoadingOrder
TransportLoadingOrder = TransportLoadingOrder.Where(x => x.Company.Title.Contains(searchString) || x.OrderYear + "-" + x.OrderNumber == searchString).ToList();
}
}
public IActionResult OnDeleteTransportLoadingOrder(int idLoadingOrder)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
var transportLoadingOrder = _context.TransportLoadingOrders
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdTransportLoadingOrder == idLoadingOrder);
if (transportLoadingOrder != null)
{
var items = _context.TransportLoadingOrderLoadUnloads.Where(x => x.IdTransportLoadingOrderFk == idLoadingOrder).ToList();
for (var i = 0; i < items.Count(); i++)
{
_context.TransportLoadingOrderLoadUnloads.Remove(items[i]);
}
_context.TransportLoadingOrders.Remove(transportLoadingOrder);
_context.SaveChanges();
}
else
{
successful = false;
error = $"Transport loading order with ID: {idLoadingOrder} not found";
}
return new JsonResult(new { idLoadingOrder = idLoadingOrder, error = error, successful = successful });
}
}
}

View File

@@ -112,7 +112,7 @@
@Html.Raw(HttpUtility.HtmlDecode(item.CargoDescription))
</td>
<td class="text-right">@*data-ajax-url="/index/partial"*@
<a class="btn btn-xs icon-btn btn-outline-danger borderless" data-ajax="true" data-ajax-begin="loadStartElement('#loadPositions');" data-ajax-complete="loadPosition()" asp-page="Edit" asp-page-handler="positionremove" asp-route-idTransportLoadingOrder="@item.IdTransportLoadingOrderFk" asp-route-id="@item.IdTransportLoadingOrderLoadUnload" data-toggle="tooltip" data-placement="top" title="Odstrani" data-state="danger"><i class="fas fa-times"></i></a>
<a class="btn btn-xs icon-btn btn-outline-danger borderless" data-ajax="true" data-ajax-begin="loadStartElement('#loadPositions');" data-ajax-complete="$(this).parent().parent().remove();loadEndElement('#loadPositions');" asp-page="AddEdit" asp-page-handler="positionremove" asp-route-idTransportLoadingOrder="@item.IdTransportLoadingOrderFk" asp-route-id="@item.IdTransportLoadingOrderLoadUnload" data-toggle="tooltip" data-placement="top" title="Odstrani" data-state="danger"><i class="fas fa-times"></i></a>
</td>
</tr>
}

View File

@@ -16,10 +16,15 @@ namespace EveryThing
{
public class Program
{
public static IConfiguration AppSetting { get; set; }
public static void Main(string[] args)
{
//var logger = NLog.LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
//logger.Debug("INIT");
AppSetting = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
CreateHostBuilder(args).Build().Run();
}
@@ -41,12 +46,13 @@ namespace EveryThing
//opts.Listen(IPAddress.Parse("192.168.1.150"), 443, o => o.UseHttps(h => { h.UseLettuceEncrypt(appServices); }));
//opts.Listen(IPAddress.Parse("192.168.111.77"), 5005);
opts.Listen(IPAddress.Parse("192.168.178.205"), 5005);//novi server
opts.Listen(IPAddress.Loopback, port: 8081);
//opts.Listen(IPAddress.Parse("192.168.178.205"), 5005);//novi server
//opts.Listen(IPAddress.Loopback, port: 8081);
//opts.ListenLocalhost(4433, opts => opts.UseHttps());
opts.ListenLocalhost(5005);
//opts.ListenLocalhost(5005);
//opts.ListenLocalhost(5005, opts => opts.UseHttps());
});
webBuilder.UseUrls(AppSetting["Kst:Url"]);
#endif
webBuilder.UseContentRoot(Directory.GetCurrentDirectory());
webBuilder.UseStartup<Startup>();

View File

@@ -10,6 +10,9 @@
}
},
"AllowedHosts": "*",
"Kst": {
"Url": "http://192.168.111.77:5050"
}
//"LettuceEncrypt": {
// "AcceptTermsOfService": true,
// "DomainNames": [ "allstar.si", "www.allstar.si" ],

View File

@@ -0,0 +1,219 @@
//ce jamra da ne najde post je treba dati @Html.AntiForgeryToken() v page
function codeTablePartnerAddEdit(placeholderSelector, edit, idCodeTablePartner, onAddEdit, onCancel, title, buyer, supplier, transporter, loadingUnloading){
$.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, title, buyer, supplier, transporter, loadingUnloading },
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 transporter = $('#inpModalAddEditCodeTablePartnerTransporter').is(':checked');
let loadingOrderLoadUnload = $('#inpModalAddEditCodeTablePartnerLoadingOrderLoadUnload').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 (city === '' || city === null) {
Swal.fire('Zahtevano polje mesto!');
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,
transporter,
loadingOrderLoadUnload,
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();
});
}

View File

@@ -0,0 +1,221 @@
//ce jamra da ne najde post je treba dati @Html.AntiForgeryToken() v page
function codeTableVehicleAddEdit(placeholderSelector, edit, idCodeTableVehicle, onAddEdit, onCancel, title){
$.blockUI();
$.ajax({
type: "GET",
// beforeSend: function(xhr) {
// xhr.setRequestHeader("XSRF-TOKEN",
// $('input:hidden[name="__RequestVerificationToken"]').val());
// },
url: "/CodeTableVehicles/Index/?handler=CodeTableVehicleModal",
data: { edit: edit, idCodeTableVehicle: edit ? idCodeTableVehicle : -1, title },
success: function(data) {
$.unblockUI();
$(placeholderSelector).html(data);
if (edit){
$('#modalAddEditCodeTableVehicleTitle').html(`Urejanje vozila: ${$('#inpModalAddEditCodeTableVehicleTitle').val()}`);
//$('#btnModalAddEditCodeTableVehicleAddFile').css('display', '');
$('#btnModalAddEditCodeTableVehicleConfirm').html('Shrani');
} else {
$('#modalAddEditCodeTableVehicleTitle').html('Dodajanje novega vozila');
//$('#btnModalAddEditCodeTableVehicleAddFile').css('display', 'none');
$('#btnModalAddEditCodeTableVehicleConfirm').html('Dodaj');
}
$('#btnModalAddEditCodeTableVehicleConfirm').off();
$('#btnModalAddEditCodeTableVehicleCancel').off();
//Save to db
$('#btnModalAddEditCodeTableVehicleConfirm').on('click', () =>{
let title = $('#inpModalAddEditCodeTableVehicleTitle').val();
let model = $('#inpModalAddEditCodeTableVehicleModel').val();
let registrationNumber = $('#inpModalAddEditCodeTableVehicleRegistrationNumber').val();
let vinNumber = $('#inpModalAddEditCodeTableVehicleVinNumber').val();
let engineNumber = $('#inpModalAddEditCodeTableVehicleEngineNumber').val();
let note = $('#taModalAddEditCodeTableVehicleNote').text();
let idMakeFk = parseInt($('#selModalAddEditCodeTableVehicleMake').val());
let idVehicleTypeFk = parseInt($('#selModalAddEditCodeTableVehicleVehicleType').val());
let year = parseInt($('#inpModalAddEditCodeTableVehicleYear').val());
let idFuelTypeFk = parseInt($('#selModalAddEditCodeTableVehicleFuelType').val());
let vehicleMeterType = parseInt($('#selModalAddEditCodeTableVehicleVehicleMeterType').val());
let idDepartementFk = parseInt($('#selModalAddEditCodeTableVehicleDepartment').val());
let active = $('#inpModalAddEditCodeTableVehicleActive').is(':checked');
let edit = $('#inpModalAddEditCodeTableVehicleEdit').val() === 'true';
let idVehicle = parseInt($('#inpModalAddEditCodeTableVehicleIdCodeTableVehicle').val());
if (title === '' || title === null){
Swal.fire('Zahtevano polje naziv!');
return;
}
if (registrationNumber === '' || registrationNumber === null) {
Swal.fire('Zahtevano registrska številka!');
return;
}
if (vinNumber === '' || vinNumber === null) {
Swal.fire('Zahtevano številka VIN!');
return;
}
$.blockUI();
$.ajax({
type: "POST",
beforeSend: function(xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
url: "/CodeTableVehicles/Index/?handler=CodeTableVehicle",
data: {
edit,
vehicleData : {
title,
model,
registrationNumber,
vinNumber,
engineNumber,
note,
idMakeFk,
idVehicleTypeFk,
year,
idFuelTypeFk,
vehicleMeterType,
idDepartementFk,
active,
idVehicle,
}
},
success: function(data) {
$.unblockUI();
if (data.successful){
$("#divModalAddEditCodeTableVehicle").modal('hide');
if (onAddEdit != null){
onAddEdit(data.idCodeTableVehicle);
}
} else {
Swal.fire('Napaka pri dodajanju/posodabljanju',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
});
//Cancel
$('#btnModalAddEditCodeTableVehicleCancel').on('click', () =>{
$("#divModalAddEditCodeTableVehicle").modal('hide');
if (onCancel != null){
onCancel();
}
});
$("#divModalAddEditCodeTableVehicle").modal('show');
$('.select2-vehicle-add-edit').select2({
dropdownParent: $("#divModalAddEditCodeTableVehicle")
});
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.responseText);
$.unblockUI();
}
});
}
function codeTableVehicleDelete(idCodeTableVehicle, onDelete, onCancel){
$.blockUI();
$.ajax({
type: "GET",
url: "/CodeTableVehicles/Index/?handler=CodeTableVehicle",
data: {
idCodeTableVehicle
},
success: function(data) {
$.unblockUI();
if (data.successful){
if (data.vehicleInUse){
Swal.fire('Vozilo je v uporabi!',
'Brisanje ni možno!',
'warning');
return;
}
Swal.fire({
title: `Izbrišem vozilo ${data.vehicle.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: "/CodeTableVehicles/Index/?handler=CodeTableVehicle",
data: {
idCodeTableVehicle
},
success: function(data) {
$.unblockUI();
if (data.successful){
if (onDelete != null){
onDelete(data.idCodeTableVehicle);
}
} else {
Swal.fire('Napaka pri brisanju vozila',
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 vozila',
data.error,
'error');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
alert(xhr.responseText);
$.unblockUI();
}
});
}
function codeTableVehicleDeleteFile(element) {
let row = $(element).parent();
let idFile = parseInt(row.attr('data-idfile'));
fileDelete(idFile, (idFile) => {
row.remove();
});
}