partnerji na modal

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

View File

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

View File

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