From da7b32003293fc0c1fec0b44462150e8e3c93417 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=C5=A0taleker?= Date: Thu, 19 Mar 2026 19:31:24 +0100 Subject: [PATCH] tiskanje bulk + vrsni red opreacij na tiskanju --- EveryThing/Pages/Projects/Edit.cshtml | 11 + .../Pages/Projects/PrintPartItem.cshtml | 191 ++++++++++-------- .../Pages/Projects/PrintPartItem.cshtml.cs | 64 ++++-- 3 files changed, 163 insertions(+), 103 deletions(-) diff --git a/EveryThing/Pages/Projects/Edit.cshtml b/EveryThing/Pages/Projects/Edit.cshtml index 9aa0b04..d2eed92 100644 --- a/EveryThing/Pages/Projects/Edit.cshtml +++ b/EveryThing/Pages/Projects/Edit.cshtml @@ -752,6 +752,7 @@ +
@@ -881,6 +882,16 @@ function tooltips() { $('[data-toggle="tooltip"]').tooltip(); } + + function bulkPrintPartItems() { + let ids = getSelectedPartItems(); + if (ids.length <= 0) { + alert("Izberi pozicije!"); + return; + } + window.open('/Projects/PrintPartItem?ids=' + ids.join(','), '_blank'); + } + function createOrderSelectPartner(inquiry, positionsType) { $.blockUI(); $.ajax({ diff --git a/EveryThing/Pages/Projects/PrintPartItem.cshtml b/EveryThing/Pages/Projects/PrintPartItem.cshtml index 05f6d0b..d74e61e 100644 --- a/EveryThing/Pages/Projects/PrintPartItem.cshtml +++ b/EveryThing/Pages/Projects/PrintPartItem.cshtml @@ -39,99 +39,114 @@ +
+
+
+
+ +
+
+
+
+
-
@Html.AntiForgeryToken() diff --git a/EveryThing/Pages/Projects/PrintPartItem.cshtml.cs b/EveryThing/Pages/Projects/PrintPartItem.cshtml.cs index 9725a16..730da47 100644 --- a/EveryThing/Pages/Projects/PrintPartItem.cshtml.cs +++ b/EveryThing/Pages/Projects/PrintPartItem.cshtml.cs @@ -19,14 +19,18 @@ namespace EveryThing.Pages.Projects [Authorize(Roles = "Administrator,InvoicingUser,ProjecThingUser")] public class PrintPartItem : PageModel { - + public class PrintPartItemData + { + public ProjectPartItem PartItem { get; set; } + public IList Operations { get; set; } + } private readonly ApplicationDbContext _context; private readonly UserManager _userManager; public ProjectPartItem PartItem { get; set; } - public IList Operations { get; set; } + public IList Items { get; set; } = new List(); public PrintPartItem(ApplicationDbContext context, UserManager userManager) { @@ -34,27 +38,57 @@ namespace EveryThing.Pages.Projects _userManager = userManager; } - public async Task OnGetAsync(int id) + public async Task OnGetAsync(int? id, string ids) { var user = _userManager.GetUserAsync(User).Result; - PartItem = await _context.ProjectPartItems - .Include(x => x.ProjectPart) - .ThenInclude(x => x.Project) - .ThenInclude(x => x.Company) - .Include(x => x.Material) - .Include(x => x.Item) - .FirstOrDefaultAsync(x => x.IdProjectPartItem == id && x.ProjectPart.Project.Company.IdCompany == user.IdCompanyFk); + var itemIds = new List(); - if (PartItem == null) + if (!string.IsNullOrEmpty(ids)) + { + itemIds = ids.Split(',', StringSplitOptions.RemoveEmptyEntries) + .Select(x => int.TryParse(x.Trim(), out var v) ? v : 0) + .Where(x => x > 0) + .ToList(); + } + else if (id.HasValue) + { + itemIds.Add(id.Value); + } + + if (!itemIds.Any()) return NotFound(); - - Operations = await _context.ProjectPartItemOperations - .Include(x => x.Operation) - .Where(x => x.IdProjectPartItemFk == PartItem.IdProjectPartItem) + var partItems = await _context.ProjectPartItems + .Include(x => x.ProjectPart) + .ThenInclude(x => x.Project) + .ThenInclude(x => x.Company) + .Include(x => x.Material) + .Include(x => x.Item) + .Where(x => itemIds.Contains(x.IdProjectPartItem) && x.ProjectPart.Project.Company.IdCompany == user.IdCompanyFk) .ToListAsync(); + if (!partItems.Any()) + return NotFound(); + + var allOperations = await _context.ProjectPartItemOperations + .Include(x => x.Operation) + .Where(x => itemIds.Contains(x.IdProjectPartItemFk)) + .OrderBy(x => x.Order) + .ToListAsync(); + + foreach (var partItem in partItems.OrderBy(x => itemIds.IndexOf(x.IdProjectPartItem))) + { + Items.Add(new PrintPartItemData + { + PartItem = partItem, + Operations = allOperations.Where(x => x.IdProjectPartItemFk == partItem.IdProjectPartItem).ToList() + }); + } + + // Keep backward compatibility for single-item references + PartItem = Items.First().PartItem; + Operations = Items.First().Operations; return Page(); }