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

264 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.CodeTable;
using EveryThing.Models.Vehicle;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using EveryThing.Models.Invoice;
using JetBrains.Annotations;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace EveryThing.Pages.CodeTableVehicles
{
[Authorize(Roles = "Administrator,TransportThingUser")]
public class IndexModel : PageModel
{
private readonly ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager;
public class AddEditCodeTableVehicle
{
public Vehicle Vehicle { get; set; }
public bool Edit { get; set; }
public int IdCodeTableVehicle { get; set; }
public SelectList FuelTypes { get; set; }
public SelectList Departments { get; set; }
public SelectList VehicleGroups { get; set; }
public SelectList VehicleMakes{ get; set; }
public SelectList VehicleTypes { get; set; }
//public IList<File> Files { get; set; }
}
public IndexModel(ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
{
_context = context;
_userManager = userManager;
}
public IList<Vehicle> Vehicles { get;set; }
public async Task OnGetAsync(string searchString, string inactiveVehicles)
{
var user = _userManager.GetUserAsync(User).Result;
ViewData["SearchString"] = searchString;
ViewData["InactiveVehicles"] = inactiveVehicles == "on" ? "checked" : "";
Vehicles = await _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.OrderBy(x => x.Active)
.ThenBy(x => x.Title)
.ToListAsync();
// Search string
if (!string.IsNullOrEmpty(searchString))
{
Vehicles = Vehicles.Where(s => s.Title.Contains(searchString)).ToList();
}
}
public IActionResult OnGetCodeTableVehicleModal([CanBeNull] string title, bool edit, int idCodeTableVehicle)
{
var user = _userManager.GetUserAsync(User).Result;
Vehicle vehicle = null;
if (edit)
{
vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
//files = _context.Files
// .Where(x => x.IdCompanyFk == user.IdCompanyFk
// && x.IdReferenceFk == item.IdItem
// && x.FileType == FileType.CodeTableItem)
// .ToList();
}
if (vehicle == null)
{
vehicle = new Vehicle();
if (title != null)
vehicle.Title = title;
vehicle.Active = true;
}
var departments = new SelectList(_context.CodeTableDepartements.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdDepartement", "Title");
var fuelTypes = new SelectList(_context.VehicleFuelTypes.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdVehicleFuelType", "Title");
var groups = new SelectList(_context.VehicleGroups.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleGroup", "Title");
var makes = new SelectList(_context.VehicleMakes.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleMake", "Title");
var types = new SelectList(_context.VehicleTypes.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleType", "Title");
return Partial("AddEditVehicleModal", new CodeTableVehicles.IndexModel.AddEditCodeTableVehicle
{
Vehicle = vehicle,
Edit = edit,
IdCodeTableVehicle = idCodeTableVehicle,
Departments = departments,
FuelTypes = fuelTypes,
VehicleGroups = groups,
VehicleMakes = makes,
VehicleTypes = types
//Files = files,
});
}
public IActionResult OnPostCodeTableVehicle(bool edit, Vehicle vehicleData)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
if (edit)
{
var vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdVehicle == vehicleData.IdVehicle);
if (vehicle != null)
{
vehicle.Title = vehicleData.Title;
vehicle.IdVehicleTypeFk = vehicleData.IdVehicleTypeFk;
vehicle.IdMakeFk = vehicleData.IdMakeFk;
vehicle.Model = vehicleData.Model;
vehicle.Year = vehicleData.Year;
vehicle.VinNumber = vehicleData.VinNumber;
vehicle.EngineNumber = vehicleData.EngineNumber;
vehicle.IdFuelTypeFk = vehicleData.IdFuelTypeFk;
vehicle.IdDepartementFk = vehicleData.IdDepartementFk;
vehicle.IdVehicleGroupFk = vehicleData.IdVehicleGroupFk;
vehicle.VehicleMeterType = vehicleData.VehicleMeterType;
vehicle.Note = vehicleData.Note;
vehicle.RegistrationNumber = vehicleData.RegistrationNumber;
vehicle.Active = vehicleData.Active;
_context.SaveChanges();
}
else
{
successful = false;
error = $"Codetable vehicle with ID: {vehicleData.IdVehicle} not found";
}
}
else
{
var vehicle = new Vehicle
{
IdCompanyFk = user.IdCompanyFk,
Title = vehicleData.Title,
IdVehicleTypeFk = vehicleData.IdVehicleTypeFk,
IdMakeFk = vehicleData.IdMakeFk,
Model = vehicleData.Model,
Year = vehicleData.Year,
VinNumber = vehicleData.VinNumber,
EngineNumber = vehicleData.EngineNumber,
IdFuelTypeFk = vehicleData.IdFuelTypeFk,
IdDepartementFk = vehicleData.IdDepartementFk,
IdVehicleGroupFk = vehicleData.IdVehicleGroupFk,
VehicleMeterType = vehicleData.VehicleMeterType,
Note = vehicleData.Note,
RegistrationNumber = vehicleData.RegistrationNumber,
Active = vehicleData.Active
};
_context.Vehicles.Add(vehicle);
_context.SaveChanges();
vehicleData.IdVehicle = vehicle.IdVehicle;
}
return new JsonResult(new { idCodeTableVehicle = vehicleData.IdVehicle, error = error, successful = successful });
}
public IActionResult OnDeleteCodeTableVehicle(int idCodeTableVehicle)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
var vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
if (vehicle != null)
{
_context.Vehicles.Remove(vehicle);
_context.SaveChanges();
}
else
{
successful = false;
error = $"Codetable vehicle with ID: {idCodeTableVehicle} not found";
}
return new JsonResult(new { idCodeTableItem = idCodeTableVehicle, error = error, successful = successful });
}
public IActionResult OnGetCodeTableVehicle(int idCodeTableVehicle)
{
var user = _userManager.GetUserAsync(User).Result;
var successful = true;
var error = "";
var vehicleInUse = false;
var vehicle = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
.Include(x => x.VehicleVehicleFueling)
.Include(x => x.VehicleVehicleIncident)
.Include(x => x.VehicleVehicleIssue)
.Include(x => x.VehicleNote)
.Include(x => x.VehicleVehicleDriver)
.Include(x => x.VehicleVehicleMeterReading)
.Include(x => x.VehicleVehicleDrive)
.Include(x => x.VehicleTransportLoadingOrder)
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
if (vehicle == null)
{
successful = false;
error = $"Codetable vehicle with ID: {idCodeTableVehicle} not found";
}
else
{
vehicleInUse = vehicle.VehicleVehicleFueling.Count > 0
|| vehicle.VehicleVehicleIncident.Count > 0
|| vehicle.VehicleVehicleIssue.Count > 0
|| vehicle.VehicleVehicleDriver.Count > 0
|| vehicle.VehicleVehicleMeterReading.Count > 0
|| vehicle.VehicleVehicleDrive.Count > 0
|| vehicle.VehicleTransportLoadingOrder.Count > 0
|| vehicle.VehicleNote.Count > 0;
vehicle.VehicleVehicleFueling = null;
vehicle.VehicleVehicleIncident = null;
vehicle.VehicleVehicleIssue = null;
vehicle.VehicleNote = null;
vehicle.VehicleVehicleDriver = null;
vehicle.VehicleVehicleMeterReading = null;
vehicle.VehicleVehicleDrive = null;
vehicle.VehicleTransportLoadingOrder = null;
}
return new JsonResult(new { vehicle, error, successful, vehicleInUse });
}
public IActionResult OnGetCodeTableVehiclesSelect()
{
var user = _userManager.GetUserAsync(User).Result;
var vehicles = _context.Vehicles
.Where(x => x.IdCompanyFk == user.IdCompanyFk
&& x.Active)
.OrderBy(x => x.Title);
return new JsonResult(new { vehicles = new SelectList(vehicles, "IdVehicle", "Title") });
}
}
}