transport loading order status in brisanje

This commit is contained in:
David Štaleker
2023-06-26 08:12:25 +02:00
parent 25e98d63ec
commit 625b013b67
13 changed files with 2405 additions and 26 deletions

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

@@ -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

@@ -73,22 +73,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"/>
<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">
@@ -125,7 +131,7 @@
</div>
<div class="card-footer py-3 text-right">
<button id="saveOrder" type="submit" class="btn btn-primary">Shrani nalog</button>
<a asp-page="Index" class="btn btn-default">Prekliči</a>
<a asp-page="Index" class="btn btn-default">Nazaj</a>
</div>
</form>
</div>

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;
@@ -43,6 +44,10 @@ namespace EveryThing.Pages.TransportLoadingOrder
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["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 +59,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))
};
@@ -121,7 +126,7 @@ namespace EveryThing.Pages.TransportLoadingOrder
// 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;

View File

@@ -43,15 +43,18 @@
<th>
Partner
</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 });
}
}
}