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; 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(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 }); } } }