Prvi commit

This commit is contained in:
David Štaleker
2023-05-12 09:00:07 +02:00
parent d3ffe93e42
commit 03b92525d7
14757 changed files with 9251133 additions and 53 deletions

View File

@@ -0,0 +1,129 @@
@page
@model EveryThing.Pages.TransportLoadingOrder.CreateModel
@{
ViewData["Title"] = "Vnos naloga";
Layout = "~/Pages/Layouts/_Layout.cshtml";
}
<!-- Editor -->
<link rel="stylesheet" href="~/vendor/libs/quill/typography.css" asp-append-version="true" />
<link rel="stylesheet" href="~/vendor/libs/quill/editor.css" asp-append-version="true" />
<h4 class="d-flex justify-content-between align-items-center w-100 font-weight-bold py-1 mb-4">
<span>
<span class="text-muted font-weight-light">Nalog /</span> Nov
</span>
</h4>
<div class="nav-tabs-top nav-responsive-sm">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#item-basic">Osnovni podatki</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="item-basic">
<form method="post" onsubmit="handleEditors()">
<div class="card-body">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder" />
<input type="hidden" asp-for="TransportLoadingOrder.IdCompanyFk" />
<input type="hidden" asp-for="TransportLoadingOrder.OrderNumber" />
<input type="hidden" asp-for="TransportLoadingOrder.OrderYear" />
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrder.IdPartnerFk" class="form-label"></label>
<select asp-for="TransportLoadingOrder.IdPartnerFk" class="form-control" asp-items="ViewBag.IdPartnerFk">
<option value="">Izberite partnerja</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.OrderCity" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.OrderCity" class="form-control" />
<span asp-validation-for="TransportLoadingOrder.OrderCity" class="text-danger"></span>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.OrderDate" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.OrderDate" type="date" class="form-control" />
<span asp-validation-for="TransportLoadingOrder.OrderDate" class="text-danger"></span>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.VehicleText" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.VehicleText" class="form-control" />
<span asp-validation-for="TransportLoadingOrder.VehicleText" class="text-danger"></span>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.Total" class="form-label"></label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">€</div>
</div>
<input autocomplete="off" asp-for="TransportLoadingOrder.Total" class="form-control">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group mb-0">
<label asp-for="TransportLoadingOrder.PreText" class="form-label"></label>
<input type="hidden" id="value-pretext" asp-for="@Model.TransportLoadingOrder.PreText" />
<div id="editor-pretext" style="height: 250px">
@Html.Raw(Model.TransportLoadingOrder.PreText)
</div>
</div>
</div>
<div class="col-6">
<div class="form-group mb-0">
<label asp-for="TransportLoadingOrder.PostText" class="form-label"></label>
<input type="hidden" id="value-posttext" asp-for="@Model.TransportLoadingOrder.PostText" />
<div id="editor-posttext" style="height: 250px">
@Html.Raw(Model.TransportLoadingOrder.PostText)
</div>
</div>
</div>
</div>
</div>
<div class="card-footer py-3 text-right">
<button type="submit" class="btn btn-primary">Shrani nalog</button>
<a asp-page="Index" class="btn btn-default">Prekliči</a>
</div>
</form>
</div>
</div>
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<!-- Editor -->
<script src="~/vendor/libs/quill/quill.js" asp-append-version="true"></script>
<script>
var Block = Quill.import('blots/block');
Block.tagName = 'DIV';
Quill.register(Block, true);
let editorPreText = new Quill('#editor-pretext', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' });
let editorPostText = new Quill('#editor-posttext', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' });
function handleEditors() {
document.getElementById('value-pretext').value = editorPreText.root.innerHTML;
document.getElementById('value-posttext').value = editorPostText.root.innerHTML;
}
</script>
}

View File

@@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.Transport;
namespace EveryThing.Pages.TransportLoadingOrder
{
[Authorize(Roles = "Administrator,TransportThingUser")]
public class CreateModel : PageModel
{
private readonly ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager;
public CreateModel(ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
{
_context = context;
_userManager = userManager;
}
public IActionResult OnGet()
{
var user = _userManager.GetUserAsync(User).Result;
TransportLoadingOrder = new Models.Transport.TransportLoadingOrder
{
OrderCity = _context.CodeTableCompanies.Single(x => x.IdCompany == user.IdCompanyFk).City,
OrderDate = DateTime.Now,
PostText = "<div>Prejemnik se obvezuje izvršiti prevoz po navodilih iz naročila. Prevoz se mora izvršiti v skladu z določili CRM konvencije. " +
"Prevoznik zagotavlja zavarovano prevozniško odgovornost. V primeru, da naročenega prevoza ne opravite po navodilih, Vas bomo bremenili za " +
"vse nastale stroške. Vse morebitne spore v zvezi s tem naročilom rešuje Okrožno sodišče v Slovenj Gradcu.</div><br/>" +
"Plačilo: <b>60 dni</b> po prejemu računana e-mail: <b>eracuni@trans-fer.si</b><br/>" +
"Original račun pošljite po pošti, poleg računa priložite 2 (dva) izvoda ožigosanega CMR " +
"z datumom in podpisom prejemnika.<br/>" +
"Direkten kontakt s stranko brez našega soglasja je PREPOVEDAN!<br/>" +
"<div>Račun</div>"
};
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();
}
[BindProperty]
public Models.Transport.TransportLoadingOrder TransportLoadingOrder { get; set; }
public async Task<IActionResult> OnPostAsync()
{
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();
}
// OrderNumber and OrderYear
int orderNumber = _context.TransportLoadingOrders.Count(x => x.IdCompanyFk == user.IdCompanyFk && x.OrderYear == DateTime.Now.Year) + 1;
TransportLoadingOrder.IdCompanyFk = user.IdCompanyFk;
TransportLoadingOrder.OrderYear = DateTime.Now.Year;
TransportLoadingOrder.OrderNumber = orderNumber;
TransportLoadingOrder.PostText = TransportLoadingOrder.PostText.Replace("<div><br></div>", "");
TransportLoadingOrder.PreText = TransportLoadingOrder.PreText.Replace("<div><br></div>", "");
_context.TransportLoadingOrders.Add(TransportLoadingOrder);
await _context.SaveChangesAsync();
return RedirectToPage("./Edit", new {id = TransportLoadingOrder.IdTransportLoadingOrder});
}
}
}

View File

@@ -0,0 +1,89 @@
@page
@model EveryThing.Pages.TransportLoadingOrder.DeleteModel
@{
ViewData["Title"] = "Delete";
Layout = "~/Pages/Layouts/_Layout.cshtml";
}
<h1>Delete</h1>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>TransportLoadingOrder</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderNumber)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderNumber)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderYear)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderYear)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderCity)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderCity)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderDate)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderDate)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.PreText)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.PreText)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.PostText)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.PostText)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.VehicleText)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.VehicleText)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Total)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Total)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Company)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Company.Ceo)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Vehicle)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Vehicle.RegistrationNumber)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Partner)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Partner.City)
</dd>
</dl>
<form method="post">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder" />
<input type="submit" value="Delete" class="btn btn-danger" /> |
<a asp-page="./Index">Back to List</a>
</form>
</div>

View File

@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models.Transport;
using Microsoft.AspNetCore.Authorization;
namespace EveryThing.Pages.TransportLoadingOrder
{
[Authorize(Roles = "Administrator,TransportThingUser")]
public class DeleteModel : PageModel
{
private readonly EveryThing.Data.ApplicationDbContext _context;
public DeleteModel(EveryThing.Data.ApplicationDbContext context)
{
_context = context;
}
[BindProperty]
public Models.Transport.TransportLoadingOrder TransportLoadingOrder { get; set; }
public async Task<IActionResult> OnGetAsync(int? id)
{
if (id == null)
{
return NotFound();
}
TransportLoadingOrder = await _context.TransportLoadingOrders
.Include(t => t.Company)
.Include(t => t.Partner)
.Include(t => t.Vehicle).FirstOrDefaultAsync(m => m.IdTransportLoadingOrder == id);
if (TransportLoadingOrder == null)
{
return NotFound();
}
return Page();
}
public async Task<IActionResult> OnPostAsync(int? id)
{
if (id == null)
{
return NotFound();
}
TransportLoadingOrder = await _context.TransportLoadingOrders.FindAsync(id);
if (TransportLoadingOrder != null)
{
_context.TransportLoadingOrders.Remove(TransportLoadingOrder);
await _context.SaveChangesAsync();
}
return RedirectToPage("./Index");
}
}
}

View File

@@ -0,0 +1,86 @@
@page
@model EveryThing.Pages.TransportLoadingOrder.DetailsModel
@{
ViewData["Title"] = "Details";
Layout = "~/Pages/Layouts/_Layout.cshtml";
}
<h1>Details</h1>
<div>
<h4>TransportLoadingOrder</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderNumber)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderNumber)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderYear)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderYear)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderCity)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderCity)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.OrderDate)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.OrderDate)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.PreText)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.PreText)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.PostText)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.PostText)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.VehicleText)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.VehicleText)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Total)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Total)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Company)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Company.Ceo)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Vehicle)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Vehicle.RegistrationNumber)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TransportLoadingOrder.Partner)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TransportLoadingOrder.Partner.City)
</dd>
</dl>
</div>
<div>
<a asp-page="./Edit" asp-route-id="@Model.TransportLoadingOrder.IdTransportLoadingOrder">Edit</a> |
<a asp-page="./Index">Back to List</a>
</div>

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models.Transport;
using Microsoft.AspNetCore.Authorization;
namespace EveryThing.Pages.TransportLoadingOrder
{
[Authorize(Roles = "Administrator,TransportThingUser")]
public class DetailsModel : PageModel
{
private readonly EveryThing.Data.ApplicationDbContext _context;
public DetailsModel(EveryThing.Data.ApplicationDbContext context)
{
_context = context;
}
public Models.Transport.TransportLoadingOrder TransportLoadingOrder { get; set; }
public async Task<IActionResult> OnGetAsync(int? id)
{
if (id == null)
{
return NotFound();
}
TransportLoadingOrder = await _context.TransportLoadingOrders
.Include(t => t.Company)
.Include(t => t.Partner)
.Include(t => t.Vehicle).FirstOrDefaultAsync(m => m.IdTransportLoadingOrder == id);
if (TransportLoadingOrder == null)
{
return NotFound();
}
return Page();
}
}
}

View File

@@ -0,0 +1,292 @@
@page "{handler?}"
@model EveryThing.Pages.TransportLoadingOrder.EditModel
@{
ViewData["Title"] = "Urejanje naloga";
Layout = "~/Pages/Layouts/_Layout.cshtml";
}
<!-- Editor -->
<link rel="stylesheet" href="~/vendor/libs/quill/typography.css" asp-append-version="true" />
<link rel="stylesheet" href="~/vendor/libs/quill/editor.css" asp-append-version="true" />
<h4 class="d-flex justify-content-between align-items-center w-100 font-weight-bold py-1 mb-4">
<span>
<span class="text-muted font-weight-light">Nalog /</span> Urejanje
</span>
</h4>
<div class="nav-tabs-top nav-responsive-sm">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#item-basic">Osnovni podatki</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#item-positions">Pozicije</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="item-basic">
<form method="post" data-ajax="true" data-ajax-method="post" asp-page-handler="order" onsubmit="handleEditors()">
<div class="card-body">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder" />
<input type="hidden" asp-for="TransportLoadingOrder.IdCompanyFk" />
<input type="hidden" asp-for="TransportLoadingOrder.OrderNumber" />
<input type="hidden" asp-for="TransportLoadingOrder.OrderYear" />
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrder.IdPartnerFk" class="form-label"></label>
<select asp-for="TransportLoadingOrder.IdPartnerFk" class="form-control" asp-items="ViewBag.IdPartnerFk"></select>
</div>
</div>
<div class="col-6 text-right">
<label class="form-label">Nakladalni nalog</label>
<br />
<h4>
@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.OrderYear) - @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.OrderNumber)
</h4>
</div>
</div>
<div class="row">
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.OrderCity" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.OrderCity" class="form-control" />
<span asp-validation-for="TransportLoadingOrder.OrderCity" class="text-danger"></span>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.OrderDate" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.OrderDate" class="form-control" />
<span asp-validation-for="TransportLoadingOrder.OrderDate" class="text-danger"></span>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.VehicleText" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrder.VehicleText" class="form-control" />
<span asp-validation-for="TransportLoadingOrder.VehicleText" class="text-danger"></span>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label asp-for="TransportLoadingOrder.Total" class="form-label"></label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">€</div>
</div>
<input autocomplete="off" asp-for="TransportLoadingOrder.Total" class="form-control">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group mb-0">
<label asp-for="TransportLoadingOrder.PreText" class="form-label"></label>
<input type="hidden" id="value-pretext" asp-for="@Model.TransportLoadingOrder.PreText" />
<div id="editor-pretext" style="height: 250px">
@Html.Raw(Model.TransportLoadingOrder.PreText)
</div>
<span asp-validation-for="TransportLoadingOrder.PreText" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group mb-0">
<label asp-for="TransportLoadingOrder.PostText" class="form-label"></label>
<input type="hidden" id="value-posttext" asp-for="@Model.TransportLoadingOrder.PostText" />
<div id="editor-posttext" style="height: 250px">
@Html.Raw(Model.TransportLoadingOrder.PostText)
</div>
<span asp-validation-for="TransportLoadingOrder.PostText" class="text-danger"></span>
</div>
</div>
</div>
</div>
<div class="card-footer py-3 text-right">
<button type="submit" class="btn btn-primary">Shrani nalog</button>
<a asp-page="Index" class="btn btn-default">Prekliči</a>
</div>
</form>
</div>
<div class="tab-pane fade" id="item-positions">
<div class="card-body">
<form method="post" data-ajax="true" data-ajax-method="post" asp-page-handler="positionadd" data-ajax-complete="laddaAddPosition.stop(); loadPosition();" data-ajax-begin="laddaAddPosition.start();" onsubmit="handleEditors()">
<div class="row">
<input type="hidden" asp-for="TransportLoadingOrder.IdTransportLoadingOrder" />
<div class="col-4">
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="form-label">Naklad</label>
<select asp-for="TransportLoadingOrderLoadUnload.IdLoadingFk" class="form-control" asp-items="ViewBag.IdLoadingFk">
<option value="">Izberite naklad ali vnesite naslov naklada</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingText" class="form-label"></label>
<textarea rows="3" asp-for="TransportLoadingOrderLoadUnload.LoadingText" class="form-control"></textarea>
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingText" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingDateFrom" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingDateFrom" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingDateFrom" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingDateTo" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingDateTo" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingDateTo" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingReference" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingReference" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingReference" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.LoadingNote" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.LoadingNote" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.LoadingNote" class="text-danger"></span>
</div>
</div>
</div>
</div>
<div class="col-4">
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="form-label">Razklad</label>
<select asp-for="TransportLoadingOrderLoadUnload.IdUnloadingFk" class="form-control" asp-items="ViewBag.IdUnloadingFk">
<option value="">Izberite razklad ali vnesite naslov razklada</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingText" class="form-label"></label>
<textarea rows="3" asp-for="TransportLoadingOrderLoadUnload.UnloadingText" class="form-control"></textarea>
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingText" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingDateFrom" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingDateFrom" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingDateFrom" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingDateTo" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingDateTo" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingDateTo" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingReference" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingReference" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingReference" class="text-danger"></span>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.UnloadingNote" class="form-label"></label>
<input autocomplete="off" asp-for="TransportLoadingOrderLoadUnload.UnloadingNote" class="form-control" />
<span asp-validation-for="TransportLoadingOrderLoadUnload.UnloadingNote" class="text-danger"></span>
</div>
</div>
</div>
</div>
<div class="col-4">
<div class="row">
<div class="col-12">
<div class="form-group">
<label asp-for="TransportLoadingOrderLoadUnload.CargoDescription" class="form-label"></label>
<input type="hidden" id="value-cargodescription" asp-for="@Model.TransportLoadingOrderLoadUnload.CargoDescription" />
<div id="editor-cargodescription" style="height: 277px">
@Html.Raw(Model.TransportLoadingOrderLoadUnload.CargoDescription)
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 text-right">
<button type="submit" id="addPosition" class="btn btn-primary ladda-button" data-style="zoom-out">Dodaj naklad/razklad</button>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="card-footer py-3" id="loadPositions">
<div id="positionsTable"></div>
</div>
</div>
</div>
</div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<!-- Editor -->
<script src="~/vendor/libs/quill/quill.js" asp-append-version="true"></script>
<script>
var Block = Quill.import('blots/block');
Block.tagName = 'DIV';
Quill.register(Block, true);
var laddaAddPosition = Ladda.create(document.querySelector('#addPosition'));
let editorPreText = new Quill('#editor-pretext', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'],[{ 'list': 'ordered' }, { 'list': 'bullet' }],['align'],['clean']] }, theme: 'snow' });
let editorPostText = new Quill('#editor-posttext', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'],[{ 'list': 'ordered' }, { 'list': 'bullet' }],['align'],['clean']] }, theme: 'snow' });
let editorCargoDescription = new Quill('#editor-cargodescription', { modules: { toolbar: [['bold', 'italic', 'underline'], ['color'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], ['align'], ['clean']] }, theme: 'snow' });
function handleEditors() {
document.getElementById('value-pretext').value = editorPreText.root.innerHTML;
document.getElementById('value-posttext').value = editorPostText.root.innerHTML;
document.getElementById('value-cargodescription').value = editorCargoDescription.root.innerHTML;
}
function loadPosition() {
loadStartElement('#loadPositions');
$('#positionsTable').load('/TransportLoadingOrder/Edit?id=' + @Request.Query["id"] + '&handler=indexloadunload', function() {
$('[data-toggle="tooltip"]').tooltip({ container: 'table' });
loadEndElement('#loadPositions');
});
}
$(document).ready(function () {
loadPosition();
});
</script>
}

View File

@@ -0,0 +1,161 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.Transport;
namespace EveryThing.Pages.TransportLoadingOrder
{
[Authorize(Roles = "Administrator,TransportThingUser")]
public class EditModel : PageModel
{
private readonly ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager;
public EditModel(ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
{
_context = context;
_userManager = userManager;
}
[BindProperty]
public Models.Transport.TransportLoadingOrder TransportLoadingOrder { get; set; }
[BindProperty]
public TransportLoadingOrderLoadUnload TransportLoadingOrderLoadUnload { get; set; }
public IList<TransportLoadingOrderLoadUnload> TransportLoadingOrderLoadUnloadList { get; set; }
public async Task<IActionResult> OnGetAsync(int? id)
{
var user = _userManager.GetUserAsync(User).Result;
if (id == null)
{
return NotFound();
}
TransportLoadingOrder = await _context.TransportLoadingOrders
.Include(t => t.Partner)
.Include(t => t.Vehicle).FirstOrDefaultAsync(m => m.IdTransportLoadingOrder == id && m.IdCompanyFk == user.IdCompanyFk);
TransportLoadingOrderLoadUnload = new TransportLoadingOrderLoadUnload();
if (TransportLoadingOrder == null)
{
return NotFound();
}
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");
return Page();
}
public async Task<IActionResult> OnPostOrderAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
TransportLoadingOrder.PostText = TransportLoadingOrder.PostText.Replace("<div><br></div>", "");
TransportLoadingOrder.PreText = TransportLoadingOrder.PreText.Replace("<div><br></div>", "");
_context.Attach(TransportLoadingOrder).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!TransportLoadingOrderExists(TransportLoadingOrder.IdTransportLoadingOrder))
{
return NotFound();
}
else
{
throw;
}
}
TransportLoadingOrderLoadUnload = new TransportLoadingOrderLoadUnload();
return Page();
}
public async Task<IActionResult> OnPostPositionAddAsync()
{
TransportLoadingOrderLoadUnload.IdTransportLoadingOrderFk = TransportLoadingOrder.IdTransportLoadingOrder;
TransportLoadingOrderLoadUnload.CargoDescription = TransportLoadingOrderLoadUnload.CargoDescription.Replace("<div><br></div>", "");
_context.TransportLoadingOrderLoadUnloads.Add(TransportLoadingOrderLoadUnload);
await _context.SaveChangesAsync();
return Page();
}
public async Task<IActionResult> OnGetPositionRemoveAsync(int idTransportLoadingOrder, int id)
{
var user = _userManager.GetUserAsync(User).Result;
TransportLoadingOrder = await _context.TransportLoadingOrders
.Include(t => t.Partner)
.Include(t => t.Vehicle).FirstOrDefaultAsync(m => m.IdTransportLoadingOrder == idTransportLoadingOrder && m.IdCompanyFk == user.IdCompanyFk);
TransportLoadingOrderLoadUnload = new TransportLoadingOrderLoadUnload();
if (TransportLoadingOrder != null)
{
var transportLoadingOrderLoadUnload = await _context.TransportLoadingOrderLoadUnloads.FirstOrDefaultAsync(x => x.IdTransportLoadingOrderFk == TransportLoadingOrder.IdTransportLoadingOrder && x.IdTransportLoadingOrderLoadUnload == id);
if (transportLoadingOrderLoadUnload != null)
{
_context.TransportLoadingOrderLoadUnloads.Remove(transportLoadingOrderLoadUnload);
await _context.SaveChangesAsync();
}
return Page();
}
return NotFound();
}
public async Task<IActionResult> OnGetIndexLoadUnloadAsync(int id)
{
var user = _userManager.GetUserAsync(User).Result;
var transportLoadingOrder = await _context.TransportLoadingOrders.FirstOrDefaultAsync(x => x.IdTransportLoadingOrder == id && x.IdCompanyFk == user.IdCompanyFk);
if (transportLoadingOrder != null)
{
var transportLoadingOrderLoadUnloadList = await _context.TransportLoadingOrderLoadUnloads
.Where(x => x.IdTransportLoadingOrderFk == transportLoadingOrder.IdTransportLoadingOrder)
.Include(x => x.Loading)
.Include(x => x.Unloading).ToListAsync();
return Partial("IndexLoadUnload", transportLoadingOrderLoadUnloadList);
}
return NotFound();
}
private bool TransportLoadingOrderExists(int id)
{
return _context.TransportLoadingOrders.Any(e => e.IdTransportLoadingOrder == id);
}
}
}

View File

@@ -0,0 +1,80 @@
@page
@model EveryThing.Pages.TransportLoadingOrder.IndexModel
@{
ViewData["Title"] = "Nakladi-Razkladi";
Layout = "~/Pages/Layouts/_Layout.cshtml";
}
<h4 class="d-flex justify-content-between align-items-center w-100 font-weight-bold py-1 mb-4">
<span>
<span class="text-muted font-weight-light">Nakladi-Razkladi /</span> Pregled
</span>
</h4>
<div class="row">
<div class="col-12 mb-2 text-right">
<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">
<i class="opacity-75 ion ion-md-refresh"></i>
</button>
</div>
</form>
</div>
</div>
<div class="card">
<h6 class="card-header">
Seznam nakladov-razkladov
</h6>
<table class="table card-table">
<thead>
<tr>
<th style="width: 160px;">
Številka naloga
</th>
<th style="width: 130px">
Datum naloga
</th>
<th>
Partner
</th>
<th style="width: 80px;"></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.TransportLoadingOrder)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.OrderYear)-@Html.DisplayFor(modelItem => item.OrderNumber)
</td>
<td>
@Html.DisplayFor(modelItem => item.OrderDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Partner.Title)
</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="Edit" asp-route-id="@item.IdTransportLoadingOrder" data-toggle="tooltip" data-placement="top" title="Urejanje" data-state="secondary"><i class="fas fa-pencil-alt"></i></a>
</td>
</tr>
}
</tbody>
</table>
<div class="card-footer py-3 text-right">
<a asp-page="Create" class="btn btn-primary">Vnos naloga</a>
</div>
</div>
@section Scripts {
<script>
$('[data-toggle="tooltip"]').tooltip({container: 'table'});
</script>
}

View File

@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.Transport;
using Microsoft.AspNetCore.Authorization;
namespace EveryThing.Pages.TransportLoadingOrder
{
[Authorize(Roles = "Administrator,TransportThingUser")]
public class IndexModel : PageModel
{
private readonly EveryThing.Data.ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager;
public IndexModel(EveryThing.Data.ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
{
_context = context;
_userManager = userManager;
}
public IList<Models.Transport.TransportLoadingOrder> TransportLoadingOrder { get;set; }
public async Task OnGetAsync(string searchString)
{
ViewData["SearchString"] = searchString;
var user = _userManager.GetUserAsync(User).Result;
TransportLoadingOrder = await _context.TransportLoadingOrders
.Include(t => t.Partner)
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.OrderByDescending(x => x.OrderYear).ThenByDescending(x => x.OrderNumber)
.ToListAsync();
if (!string.IsNullOrEmpty(searchString))
{
TransportLoadingOrder = TransportLoadingOrder.Where(x => x.Company.Title.Contains(searchString) || x.OrderYear + "-" + x.OrderNumber == searchString).ToList();
}
}
}
}

View File

@@ -0,0 +1,120 @@
@using System.Web
@model IList<EveryThing.Models.Transport.TransportLoadingOrderLoadUnload>
<table class="table card-table">
<thead>
<tr>
<th>
Naklad
</th>
<th>
Razklad
</th>
<th>
Tovor
</th>
<th style="width: 60px;"></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@if (item.IdLoadingFk == null)
{
@Html.Raw(item.LoadingText.Replace(Environment.NewLine, "<br/>"))
}
else
{
@Html.DisplayFor(modelItem => item.Loading.Title) <br />
@Html.DisplayFor(modelItem => item.Loading.Street) @($" ") @Html.DisplayFor(modelItem => item.Loading.HouseNumber) <br />
@Html.DisplayFor(modelItem => item.Loading.PostNumber) @($" ") @Html.DisplayFor(modelItem => item.Loading.Post)
}
<br />
@if (item.LoadingDateFrom != null)
{
<br />
@item.LoadingDateFrom.Value.ToString("dd.MM.yyyy")
@if (item.LoadingDateTo != null && item.LoadingDateTo.Value.Date != item.LoadingDateFrom.Value.Date)
{
@($" - ") @item.LoadingDateTo.Value.ToString("dd.MM.yyyy")
}
<br />
@item.LoadingDateFrom.Value.ToString("HH:mm")
@if (item.LoadingDateTo != null)
{
@($" - ") @item.LoadingDateTo.Value.ToString("HH:mm")
}
}
@if (!string.IsNullOrEmpty(item.LoadingReference))
{
<br />
@($"Referenca: ") @Html.DisplayFor(modelItem => item.LoadingReference)
}
@if (!string.IsNullOrEmpty(item.LoadingNote))
{
<br />
@($"Opomba: ") @Html.DisplayFor(modelItem => item.LoadingNote)
}
</td>
<td>
@if (item.IdUnloadingFk == null)
{
@Html.Raw(item.UnloadingText.Replace(Environment.NewLine, "<br/>"))
}
else
{
@Html.DisplayFor(modelItem => item.Unloading.Title) <br />
@Html.DisplayFor(modelItem => item.Unloading.Street) @($" ") @Html.DisplayFor(modelItem => item.Unloading.HouseNumber) <br />
@Html.DisplayFor(modelItem => item.Unloading.PostNumber) @($" ") @Html.DisplayFor(modelItem => item.Unloading.Post)
}
<br />
@if (item.UnloadingDateFrom != null)
{
<br />
@item.UnloadingDateFrom.Value.ToString("dd.MM.yyyy")
@if (item.UnloadingDateTo != null && item.UnloadingDateTo.Value.Date != item.UnloadingDateFrom.Value.Date)
{
@($" - ") @item.UnloadingDateTo.Value.ToString("dd.MM.yyyy")
}
<br />
@item.UnloadingDateFrom.Value.ToString("HH:mm")
@if (item.UnloadingDateTo != null)
{
@($" - ") @item.UnloadingDateTo.Value.ToString("HH:mm")
}
}
@if (!string.IsNullOrEmpty(item.UnloadingReference))
{
<br />
@($"Referenca: ") @Html.DisplayFor(modelItem => item.UnloadingReference)
}
@if (!string.IsNullOrEmpty(item.UnloadingNote))
{
<br />
@($"Opomba: ") @Html.DisplayFor(modelItem => item.UnloadingNote)
}
</td>
<td>
@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>
</td>
</tr>
}
</tbody>
</table>

View File

@@ -0,0 +1,266 @@
@page
@using System.Web
@model EveryThing.Pages.TransportLoadingOrder.PrintModel
@{
ViewData["Title"] = "Izpis";
Layout = "~/Pages/Layouts/_Layout.cshtml";
}
<h4 class="d-flex justify-content-between align-items-center w-100 font-weight-bold py-1 mb-4">
<span>
<span class="text-muted font-weight-light">Nalog /</span> Izpis
</span>
</h4>
<div class="card pt-2" style="width: 595pt">
<div id="print-content" class="card-body pb-4 pl-4 pt-0" style="padding-right: 2rem !important">
<div class="row">
<div class="col-6 h-100 my-auto">
<img src="~/img/logos/@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.LogoFileName)"/>
</div>
<div class="col-6">
<address class="mb-0">
<strong>@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Title)</strong> <br/>
@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Street) @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.HouseNumber) <br/>
@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.PostNumber) @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Post) <br/>
<div style="font-size: 0.7rem">
E-pošta: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Email), Tel.: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Phone) <br/>
ID za DDV: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.TaxNumber), Matična številka: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.RegistrationNumber)<br/>
IBAN: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Iban) SWIFT/BIC: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.SwiftBic)
</div>
</address>
</div>
</div>
<hr/>
<address class="mb-2">
<strong>@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Partner.Title)</strong> <br/>
@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Partner.Street) @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Partner.HouseNumber) <br/>
@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Partner.PostNumber) @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Partner.Post) <br/>
@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Partner.Country.TranslationSlovenian) <br/>
</address>
<div class="mb-3">@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.OrderCity), <strong class="font-weight-semibold">@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.OrderDate)</strong></div>
<h6 class="text-big font-weight-bold mb-3">Nakladalni nalog št. @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.OrderYear)-@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.OrderNumber)</h6>
<div class="mb-2" style="font-size: 0.75rem">
@Html.Raw(HttpUtility.HtmlDecode(Model.TransportLoadingOrder.PreText))
</div>
<div class="table-responsive mb-4">
<table class="table m-0">
<thead style="font-size: 0.75rem">
<tr>
<th class="py-1">
Naklad
</th>
<th class="py-1">
Razklad
</th>
<th class="py-1">
Tovor
</th>
</tr>
</thead>
<tbody style="font-size: 0.75rem">
@foreach (var item in Model.TransportLoadingOrderLoadUnloadList)
{
<tr>
<td class="py-3">
@if (item.IdLoadingFk == null)
{
@Html.Raw(item.LoadingText.Replace(Environment.NewLine, "<br/>"))
}
else
{
@Html.DisplayFor(modelItem => item.Loading.Title) <br />
@Html.DisplayFor(modelItem => item.Loading.Street) @($" ") @Html.DisplayFor(modelItem => item.Loading.HouseNumber) <br />
@Html.DisplayFor(modelItem => item.Loading.PostNumber) @($" ") @Html.DisplayFor(modelItem => item.Loading.Post)
}
<br />
@if (item.LoadingDateFrom != null)
{
<br />
@item.LoadingDateFrom.Value.ToString("dd.MM.yyyy")
@if (item.LoadingDateTo != null && item.LoadingDateTo.Value.Date != item.LoadingDateFrom.Value.Date)
{
@($" - ") @item.LoadingDateTo.Value.ToString("dd.MM.yyyy")
}
<br />
@item.LoadingDateFrom.Value.ToString("HH:mm")
@if (item.LoadingDateTo != null)
{
@($" - ") @item.LoadingDateTo.Value.ToString("HH:mm")
}
}
@if (!string.IsNullOrEmpty(item.LoadingReference))
{
<br />
@($"Referenca: ") @Html.DisplayFor(modelItem => item.LoadingReference)
}
@if (!string.IsNullOrEmpty(item.LoadingNote))
{
<br />
@($"Opomba: ") @Html.DisplayFor(modelItem => item.LoadingNote)
}
</td>
<td class="py-3">
@if (item.IdUnloadingFk == null)
{
@Html.Raw(item.UnloadingText.Replace(Environment.NewLine, "<br/>"))
}
else
{
@Html.DisplayFor(modelItem => item.Unloading.Title) <br />
@Html.DisplayFor(modelItem => item.Unloading.Street) @($" ") @Html.DisplayFor(modelItem => item.Unloading.HouseNumber) <br />
@Html.DisplayFor(modelItem => item.Unloading.PostNumber) @($" ") @Html.DisplayFor(modelItem => item.Unloading.Post)
}
<br />
@if (item.UnloadingDateFrom != null)
{
<br />
@item.UnloadingDateFrom.Value.ToString("dd.MM.yyyy")
@if (item.UnloadingDateTo != null && item.UnloadingDateTo.Value.Date != item.UnloadingDateFrom.Value.Date)
{
@($" - ") @item.UnloadingDateTo.Value.ToString("dd.MM.yyyy")
}
<br />
@item.UnloadingDateFrom.Value.ToString("HH:mm")
@if (item.UnloadingDateTo != null)
{
@($" - ") @item.UnloadingDateTo.Value.ToString("HH:mm")
}
}
@if (!string.IsNullOrEmpty(item.UnloadingReference))
{
<br />
@($"Referenca: ") @Html.DisplayFor(modelItem => item.UnloadingReference)
}
@if (!string.IsNullOrEmpty(item.UnloadingNote))
{
<br />
@($"Opomba: ") @Html.DisplayFor(modelItem => item.UnloadingNote)
}
</td>
<td class="py-3">
@Html.Raw(HttpUtility.HtmlDecode(item.CargoDescription))
</td>
</tr>
}
</tbody>
</table>
</div>
<div>
Vozilo: <b>@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.VehicleText)</b>
</div>
<div class="mb-4">
Cena za nakladalni nalog: <b>@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Total) €</b>
</div>
<div style="font-size: 0.75rem">
@Html.Raw(HttpUtility.HtmlDecode(Model.TransportLoadingOrder.PostText))
</div>
<div class="row pt-3" style="font-size: 0.85rem">
<div class="col-4"></div>
<div class="col-4"></div>
<div class="col-4 text-center">
Direktor <br /> @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Ceo)
</div>
</div>
<div style="display: none" id="footer1">@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Title), @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Street) @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.HouseNumber), @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.PostNumber) @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Post), @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Country.TranslationSlovenian); ID za DDV: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.TaxNumber), E-pošta: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Email), Tel.: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Phone)</div>
<div style="display: none" id="footer2">@Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Bank); IBAN: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.Iban); SWIFT/BIC: @Html.DisplayFor(modelItem => Model.TransportLoadingOrder.Company.SwiftBic)</div>
</div>
<div class="card-footer text-right">
<button id="print" type="button" class="btn btn-primary ladda-button" data-style="zoom-out"><i class="ion ion-md-print"></i>&nbsp; Natisni</button>
</div>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<!-- PDF -->
<script src="~/vendor/libs/html2pdf.js/dist/html2pdf.bundle.min.js" asp-append-version="true"></script>
<script>
var laddaPrint = Ladda.create(document.querySelector('#print'));
var element = document.getElementById('print-content');
var opt = {
pagebreak: { mode: 'avoid-all' },
filename: 'nalog.pdf',
image: { type: 'png' },
enableLinks: false,
margin: [5, 0, 13, 0],
html2canvas: {
scale: 4,
scrollX: 0,
scrollY: 0,
dpi: 300,
letterRendering: true
},
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
};
function print() {
laddaPrint.start();
html2pdf().set(opt).from(element).toPdf().get('pdf').then(function (pdf) {
var totalPages = pdf.internal.getNumberOfPages();
for (i = 1; i <= totalPages; i++) {
pdf.setPage(i);
pdf.setFontSize(8);
pdf.setTextColor(0);
var fontSize = pdf.internal.getFontSize();
var pageWidth = pdf.internal.pageSize.width;
var txt = $('#footer1').text();
var txtWidth = pdf.getStringUnitWidth(txt) * fontSize / pdf.internal.scaleFactor;
var x = (pageWidth - txtWidth) / 2;
pdf.text(x, pdf.internal.pageSize.getHeight() - 8, txt);
txt = $('#footer2').text();
txtWidth = pdf.getStringUnitWidth(txt) * fontSize / pdf.internal.scaleFactor;
x = (pageWidth - txtWidth) / 2;
pdf.text(x, pdf.internal.pageSize.getHeight() - 5, txt);
//pdf.addImage("YOUR_IMAGE", 'JPEG', pdf.internal.pageSize.getWidth() - 1.1, pdf.internal.pageSize.getHeight() - 0.25, 1, 0.2);
}
laddaPrint.stop();
window.open(pdf.output('bloburl'), '_blank');
});
}
$(document).ready(function () {
//print();
});
$("#print").click(function () {
print();
});
</script>
}

View File

@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.Transport;
namespace EveryThing.Pages.TransportLoadingOrder
{
[Authorize(Roles = "Administrator,TransportThingUser")]
public class PrintModel : PageModel
{
private readonly ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager;
public Models.Transport.TransportLoadingOrder TransportLoadingOrder { get; set; }
public IList<TransportLoadingOrderLoadUnload> TransportLoadingOrderLoadUnloadList { get; set; }
public PrintModel(ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
{
_context = context;
_userManager = userManager;
}
public async Task<IActionResult> OnGetAsync(int id)
{
var user = _userManager.GetUserAsync(User).Result;
TransportLoadingOrder = await _context.TransportLoadingOrders
.Include(x => x.Company)
.Include(x => x.Company.Country)
.Include(x => x.Partner)
.Include(x => x.Partner.Country)
.FirstOrDefaultAsync(x => x.IdTransportLoadingOrder == id && x.IdCompanyFk == user.IdCompanyFk);
if (TransportLoadingOrder != null)
{
TransportLoadingOrderLoadUnloadList = await _context.TransportLoadingOrderLoadUnloads
.Where(x => x.IdTransportLoadingOrderFk == TransportLoadingOrder.IdTransportLoadingOrder)
.Include(x => x.Loading)
.Include(x => x.Unloading).ToListAsync();
return Page();
}
return NotFound();
}
}
}