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 Files { get; set; } } private readonly EveryThing.Data.ApplicationDbContext _context; private readonly UserManager _userManager; public IndexModel(EveryThing.Data.ApplicationDbContext context, UserManager userManager) { _context = context; _userManager = userManager; } public IList 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") }); } } }