Files
2023-07-24 09:11:14 +02:00

265 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
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.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;
public IndexModel(EveryThing.Data.ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
{
_context = context;
_userManager = userManager;
}
public IList<CodeTablePartner> Partner { get;set; }
public async Task OnGetAsync(string searchString)
{
ViewData["SearchString"] = searchString;
var user = _userManager.GetUserAsync(User).Result;
Partner = await _context.CodeTablePartners
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.Include(p => p.Country)
.Include(c => c.Company)
.OrderBy(x => x.Title).ToListAsync();
if (!string.IsNullOrEmpty(searchString))
{
Partner = Partner.Where(x => (x.Title != null && x.Title.Contains(searchString, StringComparison.InvariantCultureIgnoreCase))
|| (x.Post != null && x.Post.Contains(searchString, StringComparison.InvariantCultureIgnoreCase))
|| (x.Street != null && x.Street.Contains(searchString, StringComparison.InvariantCultureIgnoreCase))
|| (x.TaxNumber != null && x.TaxNumber.Contains(searchString, StringComparison.InvariantCultureIgnoreCase)))
.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") });
}
}
}