226 lines
9.0 KiB
C#
226 lines
9.0 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;
|
|
|
|
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(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 });
|
|
}
|
|
}
|
|
}
|